Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Grupowanie rekordów. Jedna data dla kilku wyników
Forum PHP.pl > Forum > Przedszkole
misio90
Witam

Chcę zrobić terminarz, który wyświetli mi rekordy od daty, którą wyznaczę. Wszystko działa dobrze z tym, że jeżeli rekordy są z tego samego dnia wyświetla podwójnie datę.

  1. <?php
  2.  
  3. mysql_connect('localhost','root','') or die(mysql_error());
  4.  
  5. $first = '2013-10-15';
  6. //$last = '2013-10-22';
  7.  
  8. $sql = 'select * FROM tours WHERE start_tour >= '. $first.' order by start_tour asc';
  9. $res = mysql_query($sql) or die(mysql_error());
  10.  
  11.  
  12. $terminarz = array();
  13. while ($row = mysql_fetch_array($res)){
  14. $tid = $row['tour_id'];
  15.  
  16. if (!isset($terminarz[$tid]))
  17. {
  18. $terminarz[$tid] = array('start_tour' => $row['start_tour'], 'names' => array());
  19. }
  20.  
  21. if (!empty($row['name']))
  22. {
  23. $terminarz[$tid]['names'][] = array('name' => $row['name']);
  24. }
  25. }
  26.  
  27. echo '<pre>';
  28. print_r($terminarz);
  29. echo '</pre>';
  30.  
  31.  
  32. echo '<ul>';
  33.  
  34. foreach ($terminarz as $tourID => $day)
  35. {
  36. echo '<li>'.$day['start_tour'].'<ul>';
  37.  
  38. foreach ($day['names'] as $dni)
  39. {
  40. echo '<li>'. $dni['name'] .'</li>';
  41. }
  42.  
  43. echo '</ul></li>';
  44. }
  45.  
  46. echo '</ul>';
  47.  
  48. ?>


Efekt jest taki http://img818.imageshack.us/img818/4028/qlqa.png

Jak widać daty się powtarzają. Chciałbym aby w przypadku, gdy mamy kilka rekordów dla danego dnia to była jedna data i pod spodem rekordy, a nie jak teraz dwie. Kombinowałem na różne sposoby ale mi nie wychodzi. Proszę o pomoc
nospor
Musisz grupowac dane na poziomie PHP. Tutaj pisalem jak to robic dla kilku przykladow. Postepowanie u Ciebie ma byc podobne
http://nospor.pl/grupowanie-wynikow.html

ps: widze ze juz takie grupowanie robisz dla $tid. Dokladnie taksamo musisz zrobic jeszcze dla daty
misio90
@nospor ja to robiłem właśnie na podstawie Twojego artykułu. Wystarczyło zamienić
  1. $tid = $row['tour_id'];
na
  1. $tid = $row['start_tour'];
i jest GIT
nospor
No to kiepsko robilies, skoro musialem ponownie ci podac linka do tego samego arta bys wkoncu poprawil ID na DATE wink.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.