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

254K
.
точка невозврата

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