Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: foreach in foreach

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: как обойти преграду?
maragon
Отправлено: 21 Мая, 2014 - 13:31:51
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Вывожу список сотрудников из бд Улыбка

$sql = $db->query("select ... FROM users");
foreach($sql As $row){
При этом нужно вывести в каждую запись сотрудника его сертификаты
Если топать в сторону
$sql = $db->query("select ... FROM sertificats ... WHERE users_id = ".$row['id']."");
foreach($sql As $srow){
Он в каждую запись дублирует сертификат предыдущего сотрудника
}
}
Как обойти двойной foreach? Однако


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Zuldek
Отправлено: 21 Мая, 2014 - 13:53:14
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Объединять запросы на получение пользователей вместе с сертификатами почему не стали?
 
 Top
OrmaJever Модератор
Отправлено: 21 Мая, 2014 - 13:54:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




CODE (SQL):
скопировать код в буфер обмена
  1. SELECT ... FROM users u LEFT JOIN sertificats s ON s.users_id = u.id


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
maragon
Отправлено: 21 Мая, 2014 - 14:08:19
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. $sql = $db->super_query("SELECT `".PREFIX."_comanda`.`id`,
  2.                                 `".PREFIX."_comanda`.`name`,
  3.                                 `".PREFIX."_comanda`.`img`,
  4.                                 `".PREFIX."_comanda`.`info`,
  5.                                 `".PREFIX."_comanda`.`phone`,
  6.                                 `".PREFIX."_comanda_sertificat`.`img` AS pimg                          
  7.                                 FROM `".PREFIX."_comanda`
  8.                                 LEFT JOIN `".PREFIX."_comanda_sertificat` ON `".PREFIX."_comanda_sertificat`.`cid` = `".PREFIX."_comanda`.`id`
  9.                                 GROUP by `".PREFIX."_comanda`.`id`
  10.                                 ORDER by `".PREFIX."_comanda`.`id` DESC", 1);


В том то и дело, что резуль-т этого запроса выведет последний сертификат (один), а нужны все Улыбка
(Добавление)
Как быть? Огорчение


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
nkl
Отправлено: 21 Мая, 2014 - 14:54:37
Post Id



Посетитель


Покинул форум
Сообщений всего: 305
Дата рег-ции: Янв. 2012  


Помог: 1 раз(а)




А почему бы не сгруппировать по сертификатам?
 
 Top
Zuldek
Отправлено: 21 Мая, 2014 - 15:04:45
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




PHP:
скопировать код в буфер обмена
  1. $sql = $db->super_query("SELECT `".PREFIX."_comanda`.`id` AS `id1`,
  2.                                `".PREFIX."_comanda`.`name`,
  3.                                `".PREFIX."_comanda`.`img`,
  4.                                `".PREFIX."_comanda`.`info`,
  5.                                `".PREFIX."_comanda`.`phone`,
  6.                                (SELECT GROUP_CONCAT(`".PREFIX."_comanda_sertificat`.`img` SEPARATOR '::') as `pimg` from FROM `".PREFIX."_comanda` where `".PREFIX."_comanda_sertificat`.`cid` = `id1` )
  7.                                GROUP by `".PREFIX."_comanda`.`id`
  8.                                ORDER by `".PREFIX."_comanda`.`id` DESC", 1);

?

(Отредактировано автором: 21 Мая, 2014 - 15:08:14)

 
 Top
maragon
Отправлено: 21 Мая, 2014 - 20:50:46
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




CODE (htmlphp):
скопировать код в буфер обмена
  1. SELECT
  2.                                `a`.`id` AS `hid`,
  3.                                `a`.`name`,
  4.                                `a`.`img`,
  5.                                `a`.`phone`,
  6.                                (SELECT GROUP_CONCAT(`b`.`img` SEPARATOR '::')) as `pimg`
  7.                                FROM `".PREFIX."_comanda` a
  8.                                LEFT JOIN `".PREFIX."_comanda_sertificat` b ON `a`.`id` = `b`.`cid`
  9.                                WHERE `b`.`cid` = `a`.`id`
  10.                                GROUP by `a`.`id`
  11.                                ORDER by `a`.`id` DESC

Дело тронулось! Ха-ха
Он мне выводит данные типа: картинка::картинка::картинка
Что дальше? foreach { explode + foreach } ? Однако
(Добавление)
Потопал вот куды:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $pimg = explode("::", $row['pimg']);
  2. foreach($pimg AS $img){
  3. $tpl->set('{pimg}', $img);
  4. }

При выводе в шаблон записи (после прогонки foreach) {pimg} - выводит одну запись (соответственно 1 сертификат).
Если убираем foreach и тянем напрямую строку, т.е {pimg} == $row['pimg'] - выводит строку, содержащую 3 записи (т.е 3 сертификата).
Как быть? Хм


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB