Добавление в друзья - отображает, но не как надо

Glazok

Новичок
Значит делаю добавление в друзья. Пользователь кликнул Добавить в друзья, запрос полетел в базу - этим всё нормально, а тому пользователю которому предложили дружбу - на странице друзья отображаются заявки добавления. Но тут проблема. Например, у пользователя 3 заявки, и у всех них аватар и логин последнего давшего заявку. В таблице friends такие поля: id(auto_increment), ot, komu, status Вот такой код это реализует, подскажите, где ошибка:
PHP:
<?php 
$fr = mysql_query("SELECT * FROM friends WHERE komu='$id' ORDER BY id DESC",$db); 
$fri = mysql_fetch_array($fr);
$aut = $fri['ot'];

$myr = mysql_query("SELECT avatar FROM users WHERE login='$aut' ",$db);
$mi = mysql_fetch_array($myr);
do 
{
printf("<img src='%s'>%s<br>",$mi['avatar'],$aut);
}
while ($fri = mysql_fetch_array($fr));
?>
 

Фанат

oncle terrible
Команда форума
Кто в уме умеет отлаживать, объясните, плиз, почему выводится 1 1 1 1 1, а не просто 1?
 

Glazok

Новичок
Кто в уме умеет отлаживать, объясните, плиз, почему выводится 1 1 1 1 1, а не просто 1?
эту проблему я уже решил. теперь возникает следующая - добавить согласие на добавление в друзья, отказ, и убирать из друзей.
и чтоб на странице друзья показывало всех друзей, а это те у кого status 1. я написал такой запрос:
PHP:
$re = mysql_query("SELECT * FROM friends,users WHERE friends.status='1' and komu='$id'");//$id - id пользователя, которому пришло предложение
$ree = mysql_fetch_array($re);
ошибок не выдаёт и никого не показывает, хотя в БД есть строчки, где status =1
 

Фанат

oncle terrible
Команда форума
KorP
какой смысл в этой ссылке, если у него просто запрос неправильный?
отладкой имеет смысл заниматься только тогда, когда ты понимаешь, что делает твой код.
Собственно, в этом и есть смысл отладки - ты смотришь на промежуточные результаты и сравниваешь их с ожидаемыми.
а если код написан без смысла, то и отлаживать его бесполезно.

Надо или объяснять человеку про джойны, или - если неохота - просто заткнуться, как это сделал я, например.

А пихать ссылку потому что тебе лень ответить по существу - не надо.
 

KorP

Новичок
Фанат
ну как бы там есть такая фраза:
При возникновении проблем с функциями mysql...обязательно надо вывести на экран mysql_error() и сам запрос - для визуального контроля
ну а дальше уже плясать
 

Фанат

oncle terrible
Команда форума
ну так запрос и так есть.
какой смысл его выводить, если он изначально написан неправильно?
KorP
Собственно, в этом и есть смысл отладки - ты смотришь на промежуточные результаты и сравниваешь их с ожидаемыми.
выводить запрос надо для чего?
если ты ЗНАЕШЬ, как должен выглядеть правильный запрос, то чтобы СРАВНИТЬ
чтобы посмотреть, что там при динамическом формировании подставилось неправильно.

но здесь запрос изначально кривой, и без динамики. какой смысл его выводить, Если он и в скрипте уже неправильный?
 

KorP

Новичок
Ну у него будет "полный" запрос: вместе с id, который уже можно будет скормить mysql`ю и увидеть всё самому
 

Фанат

oncle terrible
Команда форума
ну, в какой-то ере это правильно.
но это уже СЛИШКОМ извилистый путь придется пройти, от "читай по ссылке" до "скормить mysqlю".
и ожидать, что человек его пройдёт самостоятельно - или глупость, или издевательство.

почему бы просто не сказать - "запусти свой запрос в консоли и посмотри, что он возвращает"?

В данном случае, я считаю, ссылка на фак по отладке не может помочь, а служит только для оправдания лени.
 

KorP

Новичок
В данном случае, я считаю, ссылка на фак по отладке не может помочь, а служит только для оправдания лени.
а я считаю что если человек работает с php+mysql, он должен понимать что если есть какие то проблемы - нужно запрос непосредственно в базе проверять
каждый судит по себе, видимо моя проблема в этом
 

Фанат

oncle terrible
Команда форума
ты правильно считаешь.
но разговаривая с новичком, всегда имей в виду, что он этого просто может не знать.

я бы даже сказал наоборот - новый запрос надо сначала выполнять в базе, добиться, чтобы он заработал как надо, и только потом переносить его в пхп скрипт.
 
Сверху