Различные вопросы по PHP и MySQL

241K
.
точка невозврата
ramzes, на твой пост (25.05.2011 / 09:56) отвечу, Спасибо. Я нашел решение, просто хотел спросить про скорость выполнения запросов скоро Вылажу свой первый полноценный модуль Ґґ. Говнокод конечно, но для первого раза простительно
.
Ни кто не писал первые скрипты с идеальным кодом =)
да и последующие тоже;)
.
всем привет!
Суть:
в таблице 2 поля ip и user_id
вывожу результат по пределенному ip вот так:
$req = mysql_query("SELECT * FROM `iphistory` WHERE `ip` = '".$search."' ORDER BY `user_id` DESC LIMIT $start, $kmess");

получаю результат:
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 3
IP: 83.149.1.211 ID: 3
IP: 83.149.1.211 ID: 3
IP: 83.149.1.211 ID: 2
IP: 83.149.1.211 ID: 2
IP: 83.149.1.211 ID: 2
Всё правильно и всё отлично, но можно ли как то убрать повторяющиеся строки?
Что бы было просто и без повторений? Типа:
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 3
IP: 83.149.1.211 ID: 2
.
hooligan, GROUP BY `поле`
.
Screamer (05.06.2011/13:39)
hooligan, GROUP BY `поле`
спасибо помогло...
.
как можно по данным из таблицы 'iphistory' по user_id из таблицы 'users' вывести имя?
Сейчас:
$req = mysql_query("SELECT * FROM `iphistory` WHERE `ip` = '".$search."' GROUP BY `user_id` DESC LIMIT $start, $kmess");
Результат:
IP: 83.149.1.211 ID: 70
IP: 83.149.1.211 ID: 3
IP: 83.149.1.211 ID: 2
надо:
IP: 83.149.1.211 ID: 70 login: Алексей
IP: 83.149.1.211 ID: 3 login: Гена
IP: 83.149.1.211 ID: 2 login: Света
как сделать так?
.
ramzes
$req = mysql_query("SELECT iphistory.*, users.login 
FROM iphistory 
LEFT JOIN users 
ON iphistory.user_id = users.id 
WHERE iphistory.ip = '".$search."' 
GROUP BY iphistory.user_id 
ORDER BY iphistory.user_id 
DESC LIMIT ".$start.", ".$kmess.";");

типа того
.
hooligan
блин чет не показывает вообще результат...
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `iphistory` WHERE `ip` = '" . $search . "'"), 0);
if ($total) {
$req = mysql_query("SELECT iphistory.*, users.login 
FROM iphistory 
LEFT JOIN users 
ON iphistory.user_id = users.id 
WHERE iphistory.ip = '".$search."' 
GROUP BY iphistory.user_id 
ORDER BY iphistory.user_id 
DESC LIMIT ".$start.", ".$kmess.";");
    while ($res = mysql_fetch_assoc($req)) {
        echo $i % 2 ? '<div class="list2">' : '<div class="list1">';
        $link = '<b>IP:</b> ' . $res['ip'] . '';
echo '<span class="gray"> '.$link.'<b> ID:</b><a href="../str/anketa.php?id='.$res['user_id'].'"> '.$res['user_id'].'</a> login: '.$res['login'].'</span></div>';
        ++$i;
    }
}
.
это примерный код.
я не знаю какая там структура таблицы юзеров
.
Вот так работает:
$req = mysql_query("SELECT `iphistory`.*, `users`.`name`
                    FROM `iphistory` LEFT JOIN `users` ON `iphistory`.`user_id` = `users`.`id`

                    WHERE `iphistory`.`ip` = '".$search."'

GROUP BY `iphistory`.`user_id` DESC LIMIT $start, $kmess");


спасибо за помощь!
Всего: 7969