Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP] Grupowanie takich samych elementów i wypisanie w tabeli
tomsi
post
Post #1





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


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ę?


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
Darti
post
Post #2





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


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. ?>


Ten post edytował Darti 12.12.2008, 23:19:33


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
tomsi
post
Post #3





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


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ł


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
Darti
post
Post #4





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


a pokaz co napisales


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
tomsi
post
Post #5





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Ach kurde już wiem nie w tym miejscu wstawiłem tabelkę. Sorry ~Darti smile.gif


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
Darti
post
Post #6





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


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. ?>


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
tomsi
post
Post #7





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


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ś?


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post
Darti
post
Post #8





Grupa: Zarejestrowani
Postów: 1 076
Pomógł: 62
Dołączył: 6.03.2005
Skąd: Wroc

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


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


--------------------
The answer is out there, Neo. It's looking for you. And it will find you, if you want it to.
SERVER_SOFTWARE : Apache/2.2.4 (Win32) PHP/5.2.1
MySQL Client API version : 5.0.27
Go to the top of the page
+Quote Post
tomsi
post
Post #9





Grupa: Zarejestrowani
Postów: 379
Pomógł: 45
Dołączył: 30.06.2007

Ostrzeżenie: (10%)
X----


Ale jak wywaliłem to zupełnie to też działało smile.gif


--------------------
Jeśli Ci pomogłem kliknij "Pomógł"
Jeśli Ty mi pomogłeś kliknę "Pomógł"
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 10:30