За последние 24 часа нас посетили 58127 программистов и 1839 роботов. Сейчас ищут 883 программиста ...

Вывести 3 пользователей вместо 1 ...как?

Тема в разделе "PHP для новичков", создана пользователем viprus, 27 сен 2013.

  1. viprus

    viprus Активный пользователь

    С нами с:
    27 сен 2013
    Сообщения:
    25
    Симпатии:
    0
    Народ, помогите плз сделать вывод 3 пользователей.
    Есть такая конструкция - она выводит только одного. Всю ночь просидел - никак.



    Код (Text):
    1. $obshenie = $db->super_query("SELECT * FROM `".PREFIX."_obshenie` WHERE date>'NOW()-604800' ORDER by rand() DESC LIMIT 0, 3", 1);

    Код (Text):
    1. if($obshenie) {
    2.     $avatar_obshenie = $db->super_query("SELECT user_photo, user_search_pref FROM `".PREFIX."_users` WHERE user_id = '{$obshenie['user_id']}'");
    3.     $tpl->set('{avatar_obshenie}', '<a href="id'.$obshenie['user_id'].'"><img src="http://site.ru/uploads/users/'.$obshenie['user_id'].'/100_'.$avatar_obshenie['user_photo'].'"/></a>');
    4.     $tpl->set('{name_obshenie}', '<a href="id'.$obshenie['user_id'].'">'.$avatar_obshenie['user_search_pref'].'</a>');
    5.     $tpl->set('{text}', $obshenie['text']);
    6.     $tpl->set('[obshenie]','');
    7.     $tpl->set('[/obshenie]','');
    8. } else {
    9.     $tpl->set_block("'\\[obshenie\\](.*?)\\[/obshenie\\]'si","");
    10. }

    по итогу должны быть три фото юзеров ({avatar_obshenie}) + данные {name_obshenie} и {text}


    если создать что-то типа того

    Код (Text):
    1.  foreach ($obshenie as $a) {
    2.     foreach ($a as $key=>$value) {
    3.         echo "$value
    4. ";
    5.     }
    6.   }
    выводит только тексты .. вообще не понимаю как сделать foreach к этой конструкции, там еще if + дополнит обращение к базе..
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.600
    Симпатии:
    1.764
    Если это DLE, то там super_query вроде реализовано так:
    Код (Text):
    1.  
    2.         function super_query($query, $multi = false)
    3.     {
    4.         if(!$multi) {
    5.             $this->query($query);
    6.             $data = $this->get_row();
    7.             $this->free();         
    8.             return $data;
    9.         } else {
    10.             $this->query($query);
    11.             $rows = array();
    12.             while($row = $this->get_row()) {
    13.                 $rows[] = $row;
    14.             }
    15.             $this->free();         
    16.             return $rows;
    17.         }
    18.     }
    Значит, если мы вторым параметром передаём true, нам возвращается массив ассоциативных массивов, и вот так
    Код (Text):
    1. if($obshenie) {
    2.    $avatar_obshenie = $db->super_query("SELECT user_photo, user_search_pref FROM `".PREFIX."_users` WHERE user_id = '{$obshenie['user_id']}'");
    писать уже нельзя, а надо что-то типа
    Код (Text):
    1.  
    2. if ($obshenie) {
    3.    foreach ($obshenie as $obj) {
    4.         // Получаем тут всякие там аватары и прочее для obj
    5.    }