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 :: формирование вывода запроса

 PHP.SU

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


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

> Описание: формирование вывода запроса
alfred
Отправлено: 04 Мая, 2007 - 16:33:36
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Февр. 2007  
Откуда: Украина, Одесса


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




есть цикл, в котором выводятся товары из бд определенной категории все сразу(напрмер , телевизоры), группируя их по названию фирмы.
CODE (text):
скопировать код в буфер обмена
  1.  
  2. $r=mysql_query("select * from acc_pro ORDER BY acc_pro.firm ");
  3. while($a=mysql_fetch_row($r)){
  4. echo"<tr>
  5.  

и т.д.
как можно вывести в том же цикле только один раз назчание фирмы группы товаров? -
например
фирма
товар1
товар2
фирма2
тов....
фирма3
 
 Top
valenok
Отправлено: 04 Мая, 2007 - 16:56:18
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. $r = mysql_query("SELECT * FROM `tbl` WHERE `tovar`='television' ORDER BY `manufacter` ");
  5.  
  6. $current_manufacter='';
  7.  
  8. while($row = mysql_fetch_assoc($r)){
  9.  if(empty($current_manufacter) OR $current_manufacter != $row['manufacter']) {
  10.   $current_manufacter = $row['manufacter'];
  11.   echo $current_manufacter;
  12.  }
  13.  
  14. echo $row['tovar'];
  15. }
  16. ?>
  17.  
  18.  


-----
Truly yours, Sasha.
 
My status
 Top
evgenijj
Отправлено: 04 Мая, 2007 - 16:56:31
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




Мало информации. Нет структуры БД. Один из вариантов: сначала выбираем производителей товаров определенной категории:
SELECT DISTINCT maker FROM products WHERE type='TV' ORDER BY maker;
Потом в цикле перебираем всех производителей, для каждого из них получая список производимых товаров определенной категории:
SELECT id_product, title, description FROM products WHERE type='TV' AND maker='current_maker';
Получается два вложенных цикла.
 
 Top
alfred
Отправлено: 04 Мая, 2007 - 17:01:36
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Февр. 2007  
Откуда: Украина, Одесса


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




есть таблица телевизоров. их много. для каждого есть запись firm (LG, ....)и т.д.
я сделала похожий варинт, что дал valenok, но в моем случае он работает так%

в начале выводит все фимы, а потом все товары.
можно подробнее про "Потом в цикле перебираем всех производителей, для каждого из них получая список производимых товаров"
немного непонятно...) как перебираем? чем? как получить список?

PS отбой. проблема была в разметке страницы...)
 
 Top
evgenijj
Отправлено: 04 Мая, 2007 - 17:13:53
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




PHP:
скопировать код в буфер обмена
  1.  
  2. $q1 = "SELECT DISTINCT maker FROM products WHERE type='TV' ORDER BY maker";
  3. $r1 = mysql_query( $q1 );
  4. echo "<ul>";
  5. while( $maker = mysql_fetch_array( $r1 ) )
  6. {
  7.     echo "<li>";
  8.     echo $maker["maker"];
  9.     $q2 = "SELECT id_prd, title, description FROM products WHERE type='TV' AND maker='".$maker["maker"]."'";
  10.     $r2 = mysql_query( $q2 );
  11.     echo "<ul>";
  12.     while ( $prd = mysql_fetch_array( $r2 )
  13.     {
  14.          echo "<li>".$prd["title"]."<li>";
  15.     }
  16.     echo "</ul>";
  17.    echo "</li>";
  18. }
  19. echo "</ul>";
  20.  
 
 Top
valenok
Отправлено: 04 Мая, 2007 - 17:23:29
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




Вариант с условием :
0.000649929046630859385 секунд

Вариант с двумя циклами:
0.00146412849426269531 секунд


-----
Truly yours, Sasha.
 
My status
 Top
evgenijj
Отправлено: 04 Мая, 2007 - 17:25:56
Post Id



Участник


Покинул форум
Сообщений всего: 1212
Дата рег-ции: Авг. 2006  
Откуда: Москва


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




valenok пишет:
Вариант с условием :
0.000649929046630859385 секунд

Вариант с двумя циклами:
0.00146412849426269531 секунд

Да, согласен. Я бы тоже обошелся одним запросом к БД, а все остальное сделал бы средствами PHP.
 
 Top
alfred
Отправлено: 04 Мая, 2007 - 17:27:02
Post Id


Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Февр. 2007  
Откуда: Украина, Одесса


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




valenok пишет:
Вариант с условием :
0.000649929046630859385 секунд

Вариант с двумя циклами:
0.00146412849426269531 секунд

Радость
я домучала вариант с условием...я просто запуталась в tr td )))
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB