Знатокам MySql, php

seomunch
На сайте с 21.11.2008
Offline
60
730

Понимаю что вопрос тупой, но все, требует решения) Есть код, выводит имена пользователей зарегистрированных на сайте, последних зарегистрированных:

<?php

if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
}

$lastusers = dle_cache("lastusers", $config['skin']);
$sql = $db->query("SELECT name FROM ".PREFIX."_users order by user_id DESC LIMIT 0,5");

while ($row = $db->get_row($sql))
{
$lastusers .= "<table><tr><td><center><a href=/user/{$row['name']}>{$row['name']}</a><center></td></tr></table>";
}
$db->free();
?>

Т.е. выводим имена пользователей, сортируя по дате регистрации, в количестве 5 штук.

Требуется вывести ещё и фото(аватар), ну если не установлен то стоковый noavatar.png. Информация об аватарке в той же таблице, в поле foto

Воткните пожалуйста две строчки, в нужном месте, чтобы это чудо наконец заработало :)

Банк времени (http://bank-vremeni.ru) - обменивайся своими возможностями с другими
tommy-gung
На сайте с 22.11.2006
Offline
304
#1


"SELECT name, foto FROM ".PREFIX."_users order by user_id DESC LIMIT 0,5"

в цикле - $row['foto']

Здесь не могла быть ваша реклама
seomunch
На сайте с 21.11.2008
Offline
60
#2

Не все так просто оказалось, я вроде так пробывал, ну ещё раз протестил - не хочет. В конечном итоге выводится <img src="">, т.е. адрес авы не выводится(

M
На сайте с 27.10.2006
Offline
111
#3

if( !empty($row['foto']) ) $avatar = $row['foto'];

else $avatar = "noavatar.png";
Бесплатное хранилище данных (http://bit.ly/gJYy9Z) (5GB) с синхронизацией. По ссылке — бонус 500MB.
seomunch
На сайте с 21.11.2008
Offline
60
#4

нихрена не пашет))

M
На сайте с 27.10.2006
Offline
111
#5

Проверьте что у вас вообще из базы берется. Из этого и исходите. А лучше сюда результат запостить.

<?php

echo "<pre>";
print_r($row);
echo "</pre>";
?>
[Удален]
#6

Скорее всего, проблема в том что Вы пытаетесь получить из БД только имя пользователя. Как написал и tommy-gung, нужно использовать SELECT name,foto. Также, не исключено что используя подсказку Maxoud`а Вы получали нужные картинки, однако Вы не смогли увидеть их так как в $row['foto'] сохранены только имена файлов, а не пути к ним.

$sql = $db->query( 'SELECT name,foto FROM ' . PREFIX . '_users order by user_id DESC LIMIT 0,5' );

$users = '';
while ( $row = $db->get_row( $sql ) )
{
if( empty( $row['foto'] ) )
{
$avatar = '/templates/Default/images/noavatar.png';
}
else
{
$avatar = "/uploads/fotos/{$row['foto']}";
}
$users .= "<tr><td><img src='{$avatar}'/><a href=/user/{$row['name']}>{$row['name']}</a></td></tr>";
}
echo "<table>{$users}</table>";
seomunch
На сайте с 21.11.2008
Offline
60
#7

все, сделал, наконец то заработало, всем спасибо за содействие)

M1
На сайте с 09.12.2010
Offline
4
#8

Не зря пословицу придумали: "Если долго мучиться, то что-нибудь получится". Данный топик еще раз это подтверждает.))

seomunch
На сайте с 21.11.2008
Offline
60
#9

Разобравшись с этим вопросом, возник ещё один, из той же области. Вытаскивая значение поля из БД, которое может быть равным 1,2 (при выборе пользователем) или 0 по умолчанию, как сделать вывод не цифры а картинки для каждого значения?

[Удален]
#10

Думаю, самое простое решение, переименовать картинки в 0.png, 1.png и 2.png, и выводить их примерно так:

while ( $row = $db->get_row( $sql ) )

{
echo "<img src='/images_dir/{$row['img_row']}.png' />";
}

ps. А ещё, можно использовать другие значения кроме 0, 1 и 2

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий