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 :: Mysql группировка по дате

 PHP.SU

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


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

> Без описания
Elegant
Отправлено: 03 Апреля, 2014 - 11:57:07
Post Id



Частый гость


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


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




Добрый день! Пишу код который из базы берет записи по дате продажи(saledate) и по состоянию(sost=2). Хочу вывести их в блоки...т.е. что бы был блок "2014-02-28", а в нем все проданные товары за эту дату..
PHP:
скопировать код в буфер обмена
  1.  <?
  2.                    mysql_query("SET NAMES 'utf8'");
  3. $sql = "select sost,saledate from products where sost=2 ORDER BY saledate ASC";
  4. $result = mysql_query($sql);
  5. while ($itog = mysql_fetch_array($result, MYSQL_ASSOC))
  6. {
  7. $datasale=$itog["saledate"];
  8. ?>
  9.                         <article class="media">
  10.                                   <div class="media-body">
  11.                  <div class="pull-right media-mini text-center text-muted">
  12.                           <strong class='h4'><?echo $datasale?></strong>
  13.                     </div>
  14.                          <?
  15.                    mysql_query("SET NAMES 'utf8'");
  16. $sql1 = "select sost,saledate,img  from products where sost=2 and saledate='$datasale'";
  17. $result1 = mysql_query($sql1);
  18. while ($itog1 = mysql_fetch_array($result1, MYSQL_ASSOC))
  19. {
  20. echo "
  21. <img src='../products/".$itog1["img"]."' height='100' width='100'>
  22. ";
  23. }
  24. ?>
  25.    </article><div class="line pull-in"></div>
  26.  
  27. <?}?>

Но при выводе у меня берет все даты где состояния товара =2, и выводит их...получается что к примеру, если 2014-02-28 было две продажи, то выводится 2 блока с этими продажами...как сделать правильную группировку по дате?
 
 Top
peters
Отправлено: 04 Апреля, 2014 - 11:55:40
Post Id


Гость


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


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




Попробуйте первый запрос так:
PHP:
скопировать код в буфер обмена
  1. $sql = "select DISTINCT saledate from products where sost=2 ORDER BY saledate ASC";

(Добавление)
А вообще можно все одним запросом:
PHP:
скопировать код в буфер обмена
  1. $q = "select sost,saledate,img from products where sost=2 ORDER BY saledate ASC";


А в скрипте перебора результата запроса проверяем, если дата текущей строки не равна дате из прошлой строки, то выводим Вашу "шапку" с датой, иначе продолжаем выводить img
 
 Top
esterio
Отправлено: 04 Апреля, 2014 - 12:09:46
Post Id



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


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


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




Ну так если и есть две записи по данной дате и состоянию то mysql и вернет вам две записи. если вам нужна одна запись, то может подойдет LIMIT 1. только вот для чего такое не знаю
 
 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