|
|
|
| Здравствуйте! такой вопрос: есть комментарий на сайте и мне нужно вытащить аватар автора есть пользователь, его аватар и текст комментарий, и все нормально выводится кроме аватра...
подскажите пожалуйста, как вывести соответствующий аватар
вот код странички:
echo "<p class='post_comment'>Комментарии:</p>";
$result3 = mysql_query ("SELECT * FROM comments WHERE post='$id' ORDER BY id DESC",$db);
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);
do
{
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "avatars/net-avatara.jpg";}
printf("<div class='content_comm'><table>
<tr>
<td width='113' rowspan='2' ><img class='avatar_comm2' alt='аватар' src='%s' style='margin-left:12px;'></a></td>
<td class='comment_content'><p class='post_comment_add'>Автор: %s <span class='aut_comm'>(%s)</span></td>
</tr>
<tr>
<td class='comment_content2'><p>%s</p></td>
</tr>
</table></div><br>",$avatar, $myrow3["author"], $myrow3["date"], $myrow3["text"]);
}
while ($myrow3 = mysql_fetch_array($result3));
}
|
| |
|
|
|
|
|
|
|
для: uvajs
(20.07.2010 в 20:13)
| | в начале скрипта установите уровень ошибок error_reporting(E_ALL);
уберите цикл do{....]while() и используйте просто while()
В закрыли тег </a>, а где Вы его открыли? | |
|
|
|
|
|
|
|
для: Slo_Nik
(20.07.2010 в 20:55)
| | Подправьте под пожалуйста, я не так силен в php | |
|
|
|
|
|
|
|
для: uvajs
(21.07.2010 в 13:30)
| | Зачем тогда вам делать то, что вы не понимаете? | |
|
|
|
|
|
|
|
для: mihdan
(21.07.2010 в 14:00)
| | ну я посмотрю, и постараюсь разобраться | |
|
|
|
|
|
|
|
для: uvajs
(20.07.2010 в 20:13)
| | кто хоть первоисточник? | |
|
|
|
|
|
|
|
для: psychomc
(21.07.2010 в 17:25)
| | я | |
|
|
|
|
|
|
|
для: uvajs
(21.07.2010 в 17:30)
| | И в чем проблема? Код в норме, что не так? Именно аватар не выводит? А выводит net-avatar? | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(21.07.2010 в 18:26)
| | выводится стандартный аватар, хотя пользователь имеет свой... в чем может быть причина? | |
|
|
|
|
|
|
|
для: uvajs
(21.07.2010 в 20:26)
| | >выводится стандартный аватар, хотя пользователь имеет свой... в чем может быть причина?
Ну значит в базе аватара нет... Проверь еще раз | |
|
|
|
|
|
|
|
для: Гавриленко Дмитрий
(22.07.2010 в 15:24)
| | >Ну значит в базе аватара нет... Проверь еще раз
Аватар в базе есть | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 16:12)
| | В базе прописан путь к этому аватару?
Т.е. $myrow4['avatar'] должно быть = "avatars/название аватара"
После этой строки $avatar = $myrow4['avatar'];
сделайте print $avatar; - само значение выводится?
Прежде всего вам нужно локализовать проблему, т.е. найти место в скрипте, где теряется значение аватара.
И в папке avatars есть файл аватара? И проверьте, какие стоят права на папку. | |
|
|
|
|
|
|
|
для: Лена
(22.07.2010 в 17:17)
| | >В базе прописан путь к этому аватару?
>Т.е. $myrow4['avatar'] должно быть = "avatars/название аватара"
>
>После этой строки $avatar = $myrow4['avatar'];
>сделайте print $avatar; - само значение выводится?
>Прежде всего вам нужно локализовать проблему, т.е. найти место в скрипте, где теряется значение аватара.
>
>И в папке avatars есть файл аватара? И проверьте, какие стоят права на папку.
Да, имеется в базе такой путь (avatars/1279445029.jpg), print $avatar; выводит такой путь avatars/net-avatara.jpg а в таком варианте выводится стандартный аватар <img src="$avatar" width="80" height="80">. в папке avatars есть 2 аватра, один стандартный 2 аватар пользователя. | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 17:35)
| | "avatars/1279445029.jpg"
а зачем в базе хранить лишние данные? | |
|
|
|
|
|
|
|
для: psychomc
(22.07.2010 в 17:43)
| | >а зачем в базе хранить лишние данные?
почему лишние? | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 17:51)
| | имя директории зачем хранить? просто имя файла и всё.
Вы выставили уровень ошибок? сделайте проверку наличия файла функцией file_exists() | |
|
|
|
|
|
|
|
для: Slo_Nik
(22.07.2010 в 18:24)
| | >имя директории зачем хранить? просто имя файла и всё.
>Вы выставили уровень ошибок? сделайте проверку наличия файла функцией file_exists()
Какая разница, вы хотите сказать, что аватар не выводится из-за этого? | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 22:10)
| | А если вы решите сменить директорию? А если вы решите как-то обработать файлы или еще что-нибудь?
Вообще, вам стоит почитать литературу про проектирование баз данных. | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 17:35)
| | >Да, имеется в базе такой путь (avatars/1279445029.jpg), print $avatar; выводит такой путь avatars/net-avatara.jpg а в таком варианте выводится стандартный аватар <img src="$avatar" width="80" height="80">. в папке avatars есть 2 аватра, один стандартный 2 аватар пользователя.
Не может такого быть. Что-то вы не то тут пишете...
Если в базе лежит avatars/1279445029.jpg и вы делаете запрос к базе, который вытягивает этот аватар, ничего кроме этого аватара вытянуться не может(если, конечно, правильно составлен запрос).
А у вас, вы пишете, выводится avatars/net-avatara.jpg, которого в базе нет.
Приведите, пожалуйста, структуру и содержание таблицы, откуда вы тянете аватар.
И вместо вот этого:
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db);
Пропишите это:
$r = "SELECT avatar,id FROM users WHERE login='$author'";
print $r;
$result4 = mysql_query($r);
Что на экране? | |
|
|
|
|
|
|
|
для: Лена
(22.07.2010 в 22:15)
| | > print $r;
Только с третьего раза правильно прочитал.
Нельзя же так переменные называть :) | |
|
|
|
|
|
|
|
для: neadekvat
(22.07.2010 в 23:01)
| | почему нельзя? :)) я когда маленькие куски тестирую, у меня вообще везде $a,$b и $c :) | |
|
|
|
|
|
|
|
для: Лена
(23.07.2010 в 00:03)
| | Конкретно print $r читается как print_r, ну, по крайней у меня так)) | |
|
|
|
|
|
|
|
для: Лена
(22.07.2010 в 22:15)
| | >Что на экране?
выводится
SELECT avatar,id FROM users WHERE login=''
|
Дамп базы:
--
-- Структура таблицы `users`
--
CREATE TABLE `users` (
`id` int(11) NOT NULL auto_increment,
`login` varchar(15) NOT NULL default '',
`password` varchar(255) NOT NULL default '',
`avatar` varchar(255) NOT NULL default '',
`email` varchar(255) NOT NULL default '',
`activation` int(1) NOT NULL default '0',
`date` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=57 DEFAULT CHARSET=cp1251 AUTO_INCREMENT=57 ;
--
-- Дамп данных таблицы `users`
--
INSERT INTO `users` VALUES (56, 'engelz', '40849a9959d13130776bbc1c4df60569b3p 6f', 'avatars/1279445029.jpg', 'web--master@bk.ru', 1, '2010-07-18 13:23:10');
INSERT INTO `users` VALUES (55, 'admin', '40849a9959d13130776bbc1c4df60569b3p 6f', 'avatars/1279442044.jpg', 'web--master@bk.ru', 1, '2010-07-17 23:42:00');
|
и код для вывода комм.
echo "<p class='post_comment'>Комментарии:</p>";
$result3 = mysql_query ("SELECT * FROM comments WHERE post='$id' ORDER BY id DESC",$db);
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);
do
{
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "avatars/net-avatara.jpg";}
printf("<div class='content_comm'><table>
<tr>
<td width='113' rowspan='2' ><img class='avatar_comm' alt='аватар' src='%s' style='margin-left:12px;'></td>
<td class='comment_content'><p class='post_comment_add'>Автор: <strong>%s</strong> <span class='aut_comm'>(%s)</span></td>
</tr>
<tr>
<td class='comment_content2'><p>%s</p></td>
</tr>
</table></div><br>",$avatar, $myrow3["author"], $myrow3["date"], $myrow3["text"]);
}
while ($myrow3 = mysql_fetch_array($result3));
|
| |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 23:11)
| | SELECT avatar,id FROM users WHERE login=''
И что, вас не смущает, какой логиин запрашивается из базы?
Вы точно поставили уровень ошибок в E_ALL? | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 23:11)
| | Переменная $author не определена.
Где у вас в скрипте $author ='uvajs'; - или вместо uvajs друой логин? У вас по идее должно быть:
$author ='engelz'; или
$author ='admin'; | |
|
|
|
|
|
|
|
для: uvajs
(22.07.2010 в 23:11)
| | теперь расскажите как Вы получаете переменную $author ?
если Вы выставили уровень ошибок, то я думаю Вам должно быть выдано предупреждение, что переменная $author не определена... | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 00:29)
| | >теперь расскажите как Вы получаете переменную $author ?
а где ее определить? | |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 00:44)
| | Странный вопрос. Вы же подставляете ее в запрос. Как вы можете задавать этот встречный вопрос? | |
|
|
|
|
|
|
|
для: neadekvat
(23.07.2010 в 00:49)
| | >Странный вопрос. Вы же подставляете ее в запрос. Как вы можете задавать этот встречный вопрос?
я взял этот кусок кода из другого файла, но там он работает
вот отсюда
$author = $messages['author'];
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='$author'",$db); //извлекаем аватар автора
$myrow4 = mysql_fetch_array($result4);
if (!empty($myrow4['avatar'])) {//если такового нет, то выводим стандартный(может этого пользователя уже давно удалили)
$avatar = $myrow4['avatar'];
}
else {$avatar = "avatars/net-avatara.jpg";}
printf("
<table>
<tr>
<td><a href='page.php?id=%s'><img alt='аватар' src='%s'></a></td>
<td>Автор: <a href='page.php?id=%s'>%s</a><br>
Дата: %s<br>
Сообщение:<br>
%s<br>
<a href='drop_post.php?id=%s'>Удалить</a>
</td>
</tr>
</table><br>
",$myrow4['id'],$avatar,$myrow4['id'],$author,$messages['date'],$messages['text'],$messages['id']);
//выводим само сообщение
}
while($messages = mysql_fetch_array($tmp));
|
| |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 01:34)
| | и будет работать, ведь искомая переменная определена перед запросом, а у Вас она откуда берётся?!
Подставте в запрос не переменную $author , а имя которое у Вас в базе хранится 'engelz' и посмотрите, что будет, появится аватар или нет? | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 01:42)
| | >и будет работать, ведь искомая переменная определена перед запросом, а у Вас она откуда берётся?!
я вытаскиваю ее из таблицы comments $myrow3["author"] > правда, мне самому кажется это странно...подскажите как правильно сделать? | |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 01:55)
| | >я вытаскиваю ее из таблицы comments $myrow3["author"] > правда, мне самому кажется это странно...подскажите как
А посмотреть на тот код, окуда выдрали кусок и немного подумать?
если Вы вывели запрос в окно браузера и Вам показало, что ".... WHERE `login` =' ' ..." , значит переменная $author пустая , а если так, то как в запросе будет выполнено условие выборки из базы? | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 01:42)
| | >Подставте в запрос не переменную $author , а имя которое у Вас в базе хранится 'engelz' и посмотрите, что будет, появится аватар или нет?
выводится аватар, правда по всем комм. один аватар... | |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 01:59)
| | ну всё правильно. и будет один и тот же выводится, так как имя используете одно и то же | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 02:05)
| | >ну всё правильно. и будет один и тот же выводится, так как имя используете одно и то же
нет, у меня 2 пользователя admin и engelz и по всем комм. выводится аватар engelz
$result4 = mysql_query("SELECT avatar,id FROM users WHERE login='engelz'",$db);
|
| |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 02:06)
| | да хоть 22 пользователя в базе!
Используете Вы только один логин, поэтому выводится аватар будет тот, который принадлежит этому логину... | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 02:05)
| | >ну всё правильно. и будет один и тот же выводится, так как имя используете одно и то же
а как выводить соответствующий аватар пользователя? | |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 02:09)
| | инициализировать переменную $author , присвоить переменной соответствующее значение и всё... | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 02:12)
| | >инициализировать переменную $author , присвоить переменной соответствующее значение и всё...
присвоил перемен. $author = $result3['author']; все равно нет результата. пожалуйста подправьте код | |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 02:22)
| | Все заработало!!!! Спасибо всем кто помог!!!! | |
|
|
|
|
|
|
|
для: uvajs
(23.07.2010 в 00:44)
| | Так раскройте тайну появления переменной $author !!!
Откуда Вы её берёте?
Вам предупреждение было выдано о том, что переменная не определена? | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.07.2010 в 01:18)
| | сразу видно что первоисточник сам автор, как он и писал... | |
|
|
|
|
|
|
|
для: psychomc
(23.07.2010 в 14:42)
| | Да нет, первоисточник не известен, сам автор написал, что скопировал участок кода и перенёс в свой файл.
И автор не вникнув как работает у источника, сразу кинулся переделывать код под себя... | |
|
|
|