[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с выводом аватара плз
shmit
ДОброй ночи, случайно нашел Ваш форум, очень понравился, как раз то, что искал. У меня есть один вопрос, на моем сайте есть регистрация, я хочу чтобы выводился аватар каждого пользователя возле его комментария, комменты вывожу в цикле, но служилась одна проблема, никак не могу реализовать вывод аватара , вот что у меня получилось

$username = $_SESSION['username'];
$result7=mysql_query ("SELECT id,avatar FROM users WHERE username='$username'");
$myrow7= mysql_fetch_assoc($result7);
printf ("<p><img src='img/avatars/%s' width='70' height='70'/></p>",$myrow7["avatar"]);



ну в этом случае аватар выводится возле первого сообщения, и только в том случае если пользователь онлайн, да и еще не соответствует комментарию, то есть я прокомментил что-то со своего аккаунта появился мой аватар, зашёл с другого аккаунта возле того сообщения другой аватар, помогите пожалуйста решить эту проблему, если можно обьясните как для тупых))) Всего доброго



Спустя 3 часа, 38 минут, 49 секунд (11.03.2010 - 07:54) kirik написал(а):
shmit
Так вам нужно вытягивать аватарку не того пользователя, который просматривает страницу, а того кто запостил сообщение. Тоесть переменная $username должна содержать имя автора сообщения (или его id - тогда запрос чутка поправить нужно).

Спустя 15 минут, 43 секунды (11.03.2010 - 08:09) Семён написал(а):
Кирик правильно дал мысль от себя лишь добавлю:

В твоём случае выборка происходит из таблицы users, а в теории должна из comments к примеру, где будет ячейка avatar или userid пользователя у которого нужно взять аватар.

Спустя 45 минут, 7 секунд (11.03.2010 - 08:54) Nikitian написал(а):
Вывод комментов происходит в опрощённом виде так:

$result=mysql_query ("SELECT * FROM comments WHERE cat=$x");

Вам надо связать комменты с аватарами их авторов. Предположу структуру таблиц:

$result=mysql_query ("SELECT comm.*,user.avatar FROM comments as comm left join users as user on (user.id=comm.user_id) WHERE comm.cat=$x");

И где выводятся комменты добавляете

if($myrow["avatar"]!="")printf ("<p><img src='img/avatars/%s' width='70' height='70'/></p>",$myrow["avatar"]);//Условие на случай допуска анонимных комментов.

Спустя 4 часа, 21 минута, 54 секунды (11.03.2010 - 13:16) shmit написал(а):
Спасибо, ребята, попробую что-то сделать, не знаю конечно или получится)

Спустя 10 минут, 4 секунды (11.03.2010 - 13:26) shmit написал(а):
Блин, не догнал, у меня 2 разные таблицы, в первой хранятся комментарии ( comments ) вторая с пользователями ( users ).
Я должен взять с таблицы cоmments id который равняется username.

Но не могу сделать(((

Вот мой код

<?php
$result3 = mysql_query ("SELECT * FROM comments WHERE post='$id'",$db);
if (mysql_num_rows($result3) > 0)
{
$myrow3 = mysql_fetch_array($result3);

do
{
printf ("<div class='post_div'><p class='post_comment_add'>Комментарий добавил(а): <img src='img/pos.gif' width='9' height='12'> <strong>%s</strong><br>Дата: %s</p>
<p class='read2'>%s</p></div>"
,$myrow3["author"], $myrow3["date"], $myrow3["text"]);

}
while ($myrow3 = mysql_fetch_array($result3));


}

?>

Спустя 13 минут, 56 секунд (11.03.2010 - 13:40) DedMorozzz написал(а):
omg, оформляй в теги. Читать не возможно

Спустя 4 минуты, 31 секунда (11.03.2010 - 13:45) shmit написал(а):
Извините

Спустя 6 часов, 46 минут, 6 секунд (11.03.2010 - 20:31) kirik написал(а):
Так и думал - от кода поповщиной несет за метр smile.gif $result3, $result4, $result5.. - жесть.

- никогда не используй цикл do-while при вытаскивании результатов запроса
- никогда не вытаскивай все поля (*) если тебе нужны только три
- если работаешь с mysql заключай название полей и таблиц в обратные апострофы
- используй mysql_free_result после выполнения операций над результатом запроса для очиски памяти
- зачем использовать prinf(), когда echo + конкатенация читабелнее и быстрее?

$result3 = mysql_query ("SELECT `author`, `date`, `text` FROM `comments` WHERE `post` = '{$id}'", $db);
if (mysql_num_rows($result3) > 0)
{
while ($myrow3 = mysql_fetch_assoc($result3))
{
echo '
<div class="post_div">
<p class="post_comment_add">Комментарий добавил(а): <img src="img/pos.gif" width="9" height="12"> <strong>'
. $myrow3['author'] . '</strong><br>Дата: ' . $myrow3['date'] . '</p>
<p class="read2">'
. $myrow3['text'] . '</p>
</div>'
;
}
}

mysql_free_result($result3);


Теперь по поводу аватарок..
У тебя поле author в таблице comments чего содержит?

Спустя 1 час, 46 минут, 4 секунды (11.03.2010 - 22:17) shmit написал(а):
Там у меня хранятся имена людей которые добавили комментарии, насчёт Попова могу сказать, я купил его диск и для начала мне хватило, в php я совсем новичёк, Вам знатокам виднее , спасибо за совет)

Спустя 30 минут, 46 секунд (11.03.2010 - 22:48) sergeiss написал(а):
shmit - про то, что kirik сказал, более подробно можешь тут почитать: http://phpforum.ru/index.php?showtopic=21916. Тема специально для "жертв поповщины" создана была smile.gif Очень рекомендую.

Спустя 6 минут, 33 секунды (11.03.2010 - 22:54) shmit написал(а):
Спасибо, но все же хотелось бы узнать как же аву вывести)

Спустя 7 часов, 5 минут, 36 секунд (12.03.2010 - 06:00) kirik написал(а):
Да, чет упустил тему smile.gif

Если у тебя author.comments содержит имя и users.username тоже имя, то можно их сджоинить как предложил Nikitian:
$query = "SELECT
`c`.`author`,
`c`.`date`,
`c`.`text`,
`u`.`avatar`
FROM `comments` AS `c`
LEFT JOIN `users` AS `u` ON `u`.`username` = `c`.`author`
WHERE `c`.`post` = '
{$id}'";
$result3 = mysql_query ($query, $db);
if (mysql_num_rows($result3) > 0)
{
while ($myrow3 = mysql_fetch_assoc($result3))
{
echo '
<div class="post_div">
<p><img src="img/avatars/'
. $myrow3['avatar'] . '" width="70" height="70"/></p>
<p class="post_comment_add">Комментарий добавил(а): <img src="img/pos.gif" width="9" height="12"> <strong>'
. $myrow3['author'] . '</strong><br>Дата: ' . $myrow3['date'] . '</p>
<p class="read2">'
. $myrow3['text'] . '</p>
</div>'
;
}
}

mysql_free_result($result3);


Единственное: author.comments и users.username нужно сделать индексами (users.username можно даже уникальным, если оно такое). А вообще лучше оперировать не текстом а числами - в author.comments записывать не имя пользователя а его id из таблицы users

Спустя 4 минуты, 17 секунд (12.03.2010 - 06:04) kirik написал(а):
И да, вот ресурс специально для новичков - http://irbis-team.com/ от нашего товарища twin'a.

Спустя 8 часов, 18 минут, 35 секунд (12.03.2010 - 14:23) shmit написал(а):
Спасибо, я еще вчера нашел тот сайт, то что нужно)
kirik напиши номер R кошелька, (веб мани ).

Спустя 8 минут, 21 секунда (12.03.2010 - 14:31) shmit написал(а):
Все работает, еще раз спасибо, конечно для меня код этот вообще не понятен, но буду разбираться user posted image

Спустя 21 минута, 50 секунд (12.03.2010 - 14:53) shmit написал(а):
Еще один вопрос, у меня на сайте много комментов, когда еще не было регистрации, и зарегистрированные пользователи не отвечают тем что на сайте, одним словом те комменты что раньше были ( их владельцы ) не числятся в базе зарегистрированных, как мне через оператор их элсо вывести стандартный аватар для них?

Спустя 5 часов, 10 минут, 40 секунд (12.03.2010 - 20:04) kirik написал(а):
shmit
Замени
        echo '
<div class="post_div">
<p><img src="img/avatars/'
. $myrow3['avatar'] . '" width="70" height="70"/></p>
<p class="post_comment_add">Комментарий добавил(а): <img src="img/pos.gif" width="9" height="12"> <strong>'
. $myrow3['author'] . '</strong><br>Дата: ' . $myrow3['date'] . '</p>
<p class="read2">'
. $myrow3['text'] . '</p>
</div>'
;

на
        echo '
<div class="post_div">
<p><img src="'
. (empty($myrow3['avatar']) ? 'img/default.jpg' : 'img/avatars/' . $myrow3['avatar']) . '" width="70" height="70"/></p>
<p class="post_comment_add">Комментарий добавил(а): <img src="img/pos.gif" width="9" height="12"> <strong>'
. $myrow3['author'] . '</strong><br>Дата: ' . $myrow3['date'] . '</p>
<p class="read2">'
. $myrow3['text'] . '</p>
</div>'
;

где img/default.jpg - стандартный аватар.

Спустя 2 часа, 29 минут, 30 секунд (12.03.2010 - 22:33) shmit написал(а):
Спасибо! Номер кошелька напиши)

Спустя 3 часа, 56 минут, 16 секунд (13.03.2010 - 02:29) kirik написал(а):
Цитата (shmit @ 12.03.2010 - 14:33)
Номер кошелька напиши

Забей smile.gif

Спустя 3 минуты, 45 секунд (13.03.2010 - 02:33) shmit написал(а):
Как знаешь) Скажи как так можно выучить php как ты? У меня просто мозг кипит, не знаю за что хвататься и как усовершенствовать свои знания, может книг купить?)

Спустя 2 часа, 32 минуты, 50 секунд (13.03.2010 - 05:06) kirik написал(а):
Нормально, вначале всегда так. Просто пока пиши больше и разного. Можешь даже волонтером в какой-нить проект навязаться. Туси на форумах, пробуй отвечать на вопросы совсем новичков (более опытные поправят, если что) - это самое крутое обучение по-моему. Ибо обучая обучаешься smile.gif Тут на форуме иногда конкурсы проводятся, тоже очень полезно - напишут о твоих ошибках и, если будут вопросы, можешь всегда спросить.
Самое главное - не спрашивай пока сам не просидишь над решением хотя бы пару дней иначе обленишься совсем smile.gif Почаще залазь на php.net - просто броди, смотри функции, пробуй как они работают.
Оно ведь как снежный ком, чем дальше идешь тем больше интересностей появляется.

Удачи! smile.gif

Спустя 41 минута, 43 секунды (13.03.2010 - 05:48) shmit написал(а):
Спасибо, респект тебе)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.