Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Wyświetlanie danych z bazy z podziałem na dni
arturpiotrowski
post
Post #1





Grupa: Zarejestrowani
Postów: 71
Pomógł: 1
Dołączył: 6.12.2016

Ostrzeżenie: (0%)
-----


Wybieram sobie z bazy dane takim oto zapytaniem:
Kod
SELECT name,day,odm FROM tabela ORDER BY day,odm

Myślę że nigdy w tabeli nie będzie więcej jak 50 rekordów.
Potrzebuje mieć wynikowy kod w podobnej formie:
  1. <div>
  2. <div class='row' id='day-1'>
  3. <div class="row">
  4. <div class="col-3">[odm]</div>
  5. <div class="col-9">[name]</div>
  6. </div>
  7. <div class="row">
  8. <div class="col-3">[odm]</div>
  9. <div class="col-9">[name]</div>
  10. </div>
  11. </div>
  12. <div class='row' id='day-2'>
  13. <div class="row">
  14. <div class="col-3">[odm]</div>
  15. <div class="col-9">[name]</div>
  16. </div>
  17. <div class="row">
  18. <div class="col-3">[odm]</div>
  19. <div class="col-9">[name]</div>
  20. </div>
  21. <div class="row">
  22. <div class="col-3">[odm]</div>
  23. <div class="col-9">[name]</div>
  24. </div>
  25. </div>
  26. // dalsze dni
  27. // ...
  28. <div class='row' id='day-7'>
  29. <div class="row">
  30. <div class="col-3">[odm]</div>
  31. <div class="col-9">[name]</div>
  32. </div>
  33. </div>
  34. </div>

udało mi się na te chwilę coś takiego napisać i stanąłem:
  1. $results = ; // wynik powyższego zapytania select
  2. if(!empty($results)) {
  3. $day = 0;
  4. $content .= '<div>';
  5. foreach ($results as $row ){
  6. if($row->day<>$day){
  7. $content .= '<div class="row" id="day-'.$row->day.'">';
  8. /**
  9. * tu pewnie jakaś pętla foreach()
  10. * zwracająca name i odm dla danego day
  11. * tylko nie wiem jak ją zapisać
  12. **/
  13. $content .= '</div>';
  14. }
  15. $day = $row->day;
  16. }
  17. $content .= '</div>';
  18. }

Pomóżcie proszę.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




@Niree juz ci raz tlumaczylem co oznacza operator roznosci <>. Naprawde jeszcze nie zakumales? (IMG:style_emoticons/default/tongue.gif)

@artur zrobiles prawie dobrze, niestety w pewnym momencie zamotales sie w dwoch stylach. Pierwszy styl to grupowanie na "zywo". Drugi styl to wpierw przygotowanie danych, a potem ich wyswietlanie.
Ja ci opisze drugi styl, gdyz uwazam za go za bardziej poprawny - najpierw logika, potem wyswietlanie.

A wiec, najpierw przygotowujesz sobie tablice by miec tablice z dniami a w niej dane

  1. $data = [];
  2. foreach ($results as $row ){
  3. $day = $row->day;
  4. if (!isset($data[$day]) {
  5. $data[$day] = [];
  6. }
  7. $data[$day][] = $row;
  8. }
  9.  

Wyswietl sobie $data na koniec by zrozumiec co powstalo: print_r($data);

A teraz to juz tylko proste wyswietlanie:


  1. $content .= '<div>';
  2. foreach ($data as $day => $rows ){
  3. $content .= '<div class="row" id="day-'.$day.'">';
  4. foreach ($rows as $row) {
  5. $content.= $row->odm;
  6. //tutaj sobie dostosuj ten content jaki chcesz miec
  7. }
  8. $content .= '</div>';
  9. }
  10.  
  11. $content .= '</div>';
  12.  
Powód edycji: [nospor]:
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 12.10.2025 - 09:45