Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Wyniki SQL w tabeli, usuwanie duplikatów
Forum PHP.pl > Forum > PHP
kristaps
Witam, od pewnego czasu głowie się nad pewnym problemem. Mam bazę danych fdb, z której wyniki przedstawiam w tabeli. Nie mogę w tym przypadku użyć DISTINCT, dane pobieram za pomocą odpowiednich procedur.

W efekcie otrzymuję taką tabelę (dla przykładu):


| Gruszki |2 | 2,20 |
| Gruszki |11| 1,50 |
| Gruszki |12| 2,50 |
| Jabłko |2 | 3,50 |
| Jabłko |12| 2,21 |
| Śliwki |1 | 2,50 |
| Śliwki |2 | 1,50 |

Zależy mi żeby grupować pierwszą kolumnę w tabeli:

| Gruszki |2 | 2,20 |
| |11| 1,50 |
| |12| 2,50 |
| Jabłko |2 | 3,50 |
| |12| 2,21 |
| Śliwki |1 | 2,50 |
| |2 | 1,50 |

W efekcie muszę otrzymać taki kod:

  1. <tr><td>Gruszki</td><td>2</td><td>2,20</td></tr>
  2. <tr><td> </td><td>11</td><td>1,50</td></tr>
  3. <tr><td> </td><td>12</td><td>2,20</td></tr>
  4. <tr><td>Jabłko</td><td>2</td><td>3,50</td></tr>
  5. <tr><td> </td><td>12</td><td>2,21</td></tr>


Próbowałem już to ugryźć na wiele sposobów, od array_unique po wyrażenia regularne.

  1. <?php
  2. echo "<table class = test>";
  3. $kody = '';
  4. $stmt2 = "SELECT * FROM PRZYKLAD(owoc, ilosc, cena)";
  5. $sth2 = ibase_query($dbh, $stmt2);
  6.  
  7. $i = 0;
  8. while ($row2 = ibase_fetch_assoc($sth2)) {
  9.  
  10. $row_class = table_row_format($i);
  11.  
  12. $owoce.= "<tr class=\"$row_class\"><td>" . $row2["owoc"] . ":</td><td>" . $row2["ilosc"] . "</td><td>" . $row2["cena"] . "</td></tr>";
  13.  
  14. }
  15. echo $kody;
  16. echo "</table>";
  17. ?>


Czy ma ktoś pomysł jak uzyskać taki efekt? Czyli jak sprawdzać czy $row2["owoc"] już wystąpiło i jeśli tak zamieniać go na spację ' '. Ewentualnie zrobić to po wykonaniu pętli na zmiennej $owoce?

Z góry dziękuję za pomoc,
pozdrawiam.
memory
Raczej tak jak myślisz
Nospor
phpion
Powinno zadziałać:
  1. <?php
  2. $owoc = NULL;
  3.  
  4. echo "<table class = test>";
  5.  
  6. $kody = '';
  7.  
  8. $stmt2 = "SELECT * FROM PRZYKLAD(owoc, ilosc, cena)";
  9.  
  10. $sth2 = ibase_query($dbh, $stmt2);
  11.  
  12.  
  13.  
  14. $i = 0;
  15.  
  16. while ($row2 = ibase_fetch_assoc($sth2)) {
  17.  
  18.  
  19.  
  20. $row_class = table_row_format($i);
  21.  
  22.  
  23.  
  24. $owoce.= "<tr class=\"$row_class\"><td>" . ($row2["owoc"] != $owoc ? $row2["owoc"] : '') . ":</td><td>" . $row2["ilosc"] . "</td><td>" . $row2["cena"] . "</td></tr>";
  25.  
  26. $owoc = $row2["owoc"];
  27.  
  28. }
  29.  
  30. echo $kody;
  31.  
  32. echo "</table>";
  33.  
  34. ?>
kristaps
Cholera, nie wpadłem na to, a podobnie przecież rozwiązałem kolory wierszy.

Dziękuję za pomoc, oba posty były bardzo przydatne.
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.