Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL]Sortowanie wyników z bazy
Forum PHP.pl > Forum > Przedszkole
yoga
Witam ponownie.
Mam kolejny problem z sortowaniem wyników pobieranych z tabel.
Mam 2 tabele klienci oraz rolety. W tabeli klienci jest zapisany status zamówienia a w roletach zapisane są informacje nt. szerokości, wysokosci, ilości, koloru tkaniny. Dane do wyniku s a pobierane tylko dla klientów dla których status wynosi 0.
  1. $sql = mysql_query("SELECT * FROM `zam_mini` INNER JOIN `zam_klient` ON zam_mini.id_klienta = zam_klient.id WHERE zam_klient.status = 0");

Chciałbym wyciągnąć z bazy informacje ile i jakie kolory tkanin mam do zrobienia, żebym mógł sobie wpisać wartości do programu do optymalizacji rozkroju.

Czyli chciałbym otrzymać taki wynik:
Cytat
kolor | wymiar | szt |
------------------------
a2 | 30x150 | 3 |
| 40x150| 1 |
------------------------
a3 | 60x140 | 4 |
------------------------
a4 | 30x150 | 1 |
| 40x130 | 2 |
| 50x215 | 8 |
------------------------


Kolor do bazy jest wpisywany z ręki podczas wprowadzania danych do zamówienia (za dużo kolorów żeby robić selecta).

Niestety nie wiem jak to ugryźć. Proszę naprowadzcie mnie na właściwy tor myślenia.

XP'ek
ja osobiście zrobiłbym przekazanie wyników do tablicy następnie wykonał sortowanie tablicy i jej wyświetlenie ew. export danych do programu
yoga
Ok napisałem coś takiego:
  1. function tkaniny() {
  2. if (isset($_GET['tkanina'])) {
  3.  
  4. $kolor = mysql_query("SELECT DISTINCT tkanina FROM `zam_mini` INNER JOIN `zam_klient` ON zam_mini.klient = zam_klient.id WHERE zam_klient.status = 0 ORDER BY zam_mini.tkanina ASC");
  5. echo '<table><tr><td>Kolor</td><td>szerokość</td><td>wysokosc</td><td>szt</td></tr></table>';
  6. echo '<div style="width:1000px;">';
  7.  
  8. while($kol = mysql_fetch_arraY($kolor, MYSQL_ASSOC))
  9. {
  10. $tkanina=$kol['tkanina'];
  11. echo '<div style=" width: 250px; border: 1px solid #ccc; padding: 5px; float: left; position:relative;"><span style="font-weight:bold;">'.$tkanina.'</span>';
  12.  
  13. $sql = mysql_query("SELECT * FROM `zam_mini` INNER JOIN `zam_klient` ON zam_mini.klient = zam_klient.id WHERE zam_klient.status = 0 AND zam_mini.tkanina='$tkanina'");
  14. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  15. {
  16. echo '<div>'.$row['szer'].'';
  17. echo ' x '.$row['wys'].'';
  18. echo ' - '.$row['szt'].'szt';
  19. echo ' { '.$row['nick'].'} </div>';
  20. }
  21. echo '</div>';
  22. }
  23. echo '</div>';
  24. }
  25. }

i mam to o co mi chodziło.

Teraz chciałbym uzyskać spis szerokości rurek do cięcia - napisałem taką funkcję:
  1. function rurki() {
  2. if (isset($_GET['rurka'])) {
  3. $rurki = mysql_query("SELECT * FROM `zam_mini` INNER JOIN `zam_klient` ON zam_mini.klient = zam_klient.id WHERE zam_klient.status = 0 ORDER BY zam_mini.szer ASC");
  4. echo '<div style="width:1000px;">';
  5.  
  6. while($row = mysql_fetch_arraY($rurki, MYSQL_ASSOC))
  7. {
  8. echo '<div style=" width: 250px; border: 1px solid #ccc; padding: 5px; float: left;">';
  9. echo '<div>'.$row['szer'].'';
  10. echo ' - '.$row['szt'].'szt</div>';
  11. echo '</div>';
  12. }
  13.  
  14. }
  15. }

wszystko ładnie pobiera ale chciałbym znowu pogrupować wyniki tzn. zamiast otrzymywać 73 - 2szt , 73 - 2szt chciałbym otrzymać od razu 73 - 4szt.

pomożecie? smile.gif

Dziękuję za waszą bezcenną pomoc. Milczenie w tym temacie była tak wymowne, że problem został rozwiązany.
Ku potomności funkcja do której dązyłem:
  1. $szerokosc = mysql_query("SELECT DISTINCT szer FROM `zam_mini` INNER JOIN `zam_klient` ON zam_mini.klient = zam_klient.id WHERE zam_klient.status = 0 ORDER BY zam_mini.szer ASC");
  2. echo '<div style="width:1000px;">';
  3.  
  4. while($kol = mysql_fetch_arraY($szerokosc, MYSQL_ASSOC))
  5. {
  6. $szer=$kol['szer'];
  7. echo '<div style=" width: 250px; border: 1px solid #ccc; padding: 5px; margin: 5px; float: left; position:relative;"><span style="font-weight:bold;">'.($szer + 0.5).'</span>';
  8.  
  9. $sql = mysql_query("SELECT szt FROM `zam_mini` INNER JOIN `zam_klient` ON zam_mini.klient = zam_klient.id WHERE zam_klient.status = 0 AND zam_mini.szer='$szer'");
  10. $suma = 0;
  11. while($row = mysql_fetch_arraY($sql, MYSQL_ASSOC))
  12. {
  13. $suma = $suma + $row['szt'];
  14. }
  15.  
  16. echo ' - <strong>'.$suma.'</strong> szt';
  17. echo '</div>';
  18.  
  19. }
  20. echo '</div>';
  21.  
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.