Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Grupowanie takich samych elementów i wypisanie w tabeli
Forum PHP.pl > Forum > Przedszkole
tomsi
Mam w bazie pewne dane (np. datę, ale rozłożoną na dzień miesiąc i rok, mam też przypisane do tej daty jakieś wartości, tytuł, krótki opis) za pomocą while wyświetlam wszystko w tabelce ładnie pogrupowałem względem najpier roku potem miesiąca i na końcu dnia. Jest np. tak

01.01.2001 Zakup butów 230zł
03.11.2001 Zakup koszuli 100zł
22.04.2002 Zmiana serwera 1000zł
23.04.2002 Zmiana oprogramowania 2500zł
24.07.2003 Zakup monitora 900zł

No i to jest w tabelce w wierszach i 3 kolumnach a teraz chciałbym żeby przed ażdą datą gdzie jest nowy rok wstawił się wiersz szeroki na 3 kolumny w którym byłby rok. Czyli tak:

2001
01.01.2001 Zakup butów 230zł
03.11.2001 Zakup koszuli 100zł
2002
22.04.2002 Zmiana serwera 1000zł
23.04.2002 Zmiana oprogramowania 2500zł
2003
24.07.2003 Zakup monitora 900zł

Wiem, że można pobrać z bazy datę , dodać do tabeli za pomocą array-unique zlikwidować powtarzające się elementy, ale jak to potem dodać do while i jak zrobić żeby to się wpisywało tak w tabelkę?
Darti
przed while ustaw sobie $rok=-1;
w pętli sprawdzaj czy rok z bazy = $rok if'em (jak nie, to wypisujesz wiersz nagłówka roku z bazy i przypisujesz do $rok ten rok z bazy, jak tak to lecisz z koksem dalej).

  1. <?php
  2. $rok = -1;
  3. while(mysql_fetch...itakiepierdy){
  4. if($rok != $wiersz['rok']){
  5. echo $wiersz['rok'];
  6. $rok = $wiersz['rok'];
  7. }
  8. echo $wiersz['dzien'].$wiersz['miesiac'];// itd
  9. }
  10. ?>
tomsi
Ale w którym miejscu mam wstawić tabelkę z danymi? Albo mam tak, że jest

2001
2002
2003

i tu tabelka

albo w tabelce są pojedyncze daty

01.01.2001 Zakup butów 230zł
22.04.2002 Zmiana serwera 1000zł
24.07.2003 Zakup monitora 900zł
Darti
a pokaz co napisales
tomsi
Ach kurde już wiem nie w tym miejscu wstawiłem tabelkę. Sorry ~Darti smile.gif
Darti
no skoro robisz w tabeli:
  1. <?php
  2. $rok2 = -1;
  3.   while ($wiersz=mysql_fetch_array($wynik))
  4.       {      
  5.           $dzien=$wiersz['dzien'];
  6.           $miesiac=$wiersz['miesiac'];
  7.           $rok=$wiersz['rok'];
  8.           $towar=$wiersz['towar'];
  9.           $cena=$wiersz['cena'];
  10.  
  11.           if($rok2 != $rok)
  12.              {
  13.                echo "<tr><td colspan=\"3\">Tu jest rok: $rok</td></tr>";
  14.                $rok2 = $rok;
  15.               }
  16.           echo "<tr>";
  17.           echo "<td><center>$dzien-$miesiac-$rok</center></td>";
  18.           echo "<td><center>$towar</center></td>";
  19.           echo "<td><center>$cena</center></td>";
  20.           echo "</tr>";
  21.        }
  22. ?>
tomsi
Cytat(Darti @ 12.12.2008, 23:16:46 ) *
przed while ustaw sobie $rok=-1;


A mógłbyś mi wytłumaczyć dlaczego trzeba wstawić przed pętlą takie coś?
Darti
ni wiem, równie dobrze ustaw sobie -100 ... chodziło o to, żeby wartość była na pewno mniejsza niż najmniejszy element zwracany przez bazę, więc jak zwróci nawet 0 to i tak się wiersz z rokiem wyświetli
tomsi
Ale jak wywaliłem to zupełnie to też działało smile.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.