Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2013, 08:06   #1
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию Вывод из БД

Здравствуйте помогите пожалуста, в базе две таблицы users, category(связь по полю id_user), у пользователя много категорий(заранее не известно сколько пользователь выбирет), мне нужно вывести данные в таблицу построчно(всех пользователей) чтобы в ячейке category были все категории пользователя,пример

Name|category|
Вася | 10,12

делаю запрос
PHP код:
SELECT users.name,category_of_users.`id_categoryFROM `usersLEFT JOIN `category_of_users`
        
ON users.`id_user`=category_of_users.`id_user
получаю два массива
PHP код:
array([name]=>[id_category=>10])
array([
name]=>[id_category=>12]) 
получается такая таблица
Name|category|
Вася| 10
Вася| 12
как получить один массив array([name]=>2 [id_category=>10] [id_category=>12)

Последний раз редактировалось kuba1981; 11.04.2013 в 08:12.
kuba1981 вне форума Ответить с цитированием
Старый 11.04.2013, 09:24   #2
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

При получении массива, сформировать себе нужный массив.
dr.Chas вне форума Ответить с цитированием
Старый 11.04.2013, 09:26   #3
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

А подскажите как???а запросом нельзя вытащить???
kuba1981 вне форума Ответить с цитированием
Старый 11.04.2013, 09:39   #4
dr.Chas
***
Участник клуба
 
Аватар для dr.Chas
 
Регистрация: 30.07.2007
Сообщений: 1,162
По умолчанию

Ну примерно в таком роде:

Код:
SELECT users.name,category_of_users.`id_category` FROM `users` LEFT JOIN `category_of_users` 
        ON users.`id_user`=category_of_users.`id_user`  
ORDER BY category_of_users.`id_category`;


$lastid = 0;
while ($row = mysql_fetch_array($query))
{  
  if ($row['id_category']==$lastid) {
    $arr['id_category'][] = $row['id_category'];
  } else {
    $arr['username'] = $row['name'];
    $arr['id_category'][] = $row['id_category'];
  }
  $lastid = $row['id_category'];
}
dr.Chas вне форума Ответить с цитированием
Старый 11.04.2013, 09:46   #5
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

Спасибо попробую, а запросом никак не вытащить нужный масссив?
kuba1981 вне форума Ответить с цитированием
Старый 11.04.2013, 10:07   #6
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Не надо вам никаких доп. массивов, вытянули данные сразу и показали.
Запросом можно, только не выгодно, запрос будет сложным и не читабельным, и по скорости не выиграете.
eval вне форума Ответить с цитированием
Старый 11.04.2013, 10:15   #7
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

А как без доп. массива сделать, я вытащил данные запросом рисую таблицу
PHP код:
while($row=$objDb->fetch_assoc($res1))
 {
       echo
"<tr>
                    <td>"
.$row['name']."</td>
                    <td>"
.$row['id_category']."</td>
               </tr>"
;            
 } 
получается
name|category
Вася|10
Вася|12
а как сделать чтобы в одной строке было???????????????если без дополнительного массива

Последний раз редактировалось kuba1981; 11.04.2013 в 10:23.
kuba1981 вне форума Ответить с цитированием
Старый 11.04.2013, 10:26   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

точно также как перепихиваете в доп. массив, используйте флаги и логику формирования контента
уберите из #4 if'ы и $lastid и доп массив буде точной копией того что подняли из базы
eval вне форума Ответить с цитированием
Старый 11.04.2013, 10:58   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
а как сделать чтобы в одной строке было???????????????если без дополнительного массива
а чем Вас массив не устраивает?
И какая у Вас СУБД (MySQL) ?
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.04.2013, 11:08   #10
kuba1981
Форумчанин
 
Регистрация: 22.08.2012
Сообщений: 155
По умолчанию

mysql мне результат нужен, а с массивом или нет в принципе без разницы, сейчас сделал вот так
PHP код:
while ($row =$objDb->fetch_assoc($res1))
{
    if(
$flag!=$row['name'])
    {
         echo 
"<tr><td>".$row['name']."</td>";
         
$flag=$row['name'];
    }
echo 
"<td>".$row['name_category']."</td></tr>";

получилась таблица
name|category
Вася|10
12
а дальше как???

Последний раз редактировалось kuba1981; 11.04.2013 в 11:30.
kuba1981 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод ид zaki PHP 2 22.06.2012 19:49
Вывод на Си xapek Общие вопросы C/C++ 0 25.03.2012 17:59
Вывод списка символов справа налево 5 раз подряд и исключить вывод цифр Gareek Помощь студентам 2 23.12.2011 21:41
вывод 2Е+10 Euforia_PZAS09_1 Общие вопросы C/C++ 6 21.02.2010 16:25
Вывод C heart Общие вопросы C/C++ 6 17.08.2009 11:29