Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [SQL][PHP]Mnożenie rekordów
Forum PHP.pl > Forum > Przedszkole
eurosoft
Witam,
mam tablicę o takiej sktrukturze:
ID_rek | nazwa | ilość | cena | nazwa1 | ilość1 | cena1 |

po zapise danych w rekordzie chciałbym utworzyć widok tabeli pokazujący mi poszczególne rekordy w pojedyńczych sztukach (bo może być taka sytuacja że rekord będzie wyglądał tak:
1 | masło | 2 | 3,9 | kawa | 1 | 15,4

a wynik tak:
1 | masło | 1 | 3,9
1 | masło | 1 | 3,9
1 | kawa | 1 | 15,4

proszę o pomoc
M.
CuteOne
Nie umiesz wyświetlać danych z mysql lub używać pętli ? Bo rozwiązanie Twojego problemu to 10 sek "główkowania"
eurosoft
Cytat(CuteOne @ 9.07.2012, 20:05:49 ) *
Nie umiesz wyświetlać danych z mysql lub używać pętli ? Bo rozwiązanie Twojego problemu to 10 sek "główkowania"

Jeśli tak wszystkim pomagasz to wielkie gratulacje... Jak nie masz ochoty to po co wogóle odpisujesz?
CuteOne
Widzisz gdybyś chwilę pomyślał nad swoim problemem i jeszcze raz przeczytał mój post doszedł byś do prostego wniosku - w pytaniu jest odpowiedź.

  1.  
  2. function createRow($name) {
  3.  
  4. return '<li>'.$name.'</li>';
  5. }
  6.  
  7. function multiRow($row) {
  8.  
  9. $html = '';
  10.  
  11. for($i=1;$i<=$row['count'];$i++) {
  12.  
  13. $html .= createRow($row['name']);
  14. }
  15.  
  16. return $html;
  17. }
  18.  
  19. $html = '';
  20.  
  21. while($row = mysql_fetch_assoc($query)) {
  22.  
  23. if($row['count'] > 1) {
  24.  
  25. $html .= multiRow($row);
  26. }
  27. else {
  28.  
  29. $html .= createRow($row['name']);
  30. }
  31. }
  32.  
  33. echo '<ul>'.$html.'</ul>';
eurosoft
Bardzo dziękuję za odpowiedź, ale w sumie szukałem czegoś innego (chyba), w każdym razie udało mi się to zrobić, ale problem pojawił się nowy. Rekordy ładnie mi się zapisują do kolejnych (rozmnożonych) za pomocą poniższego zapytania (oczywiście późniejszej pętli)

  1. $pozyskanie = "SELECT * FROM (
  2. SELECT
  3. book.id_book AS id_book,
  4. book.imie_nazwisko,
  5. book.nr_od,
  6. book.nr_ob,
  7. book.start,
  8. book.zb,
  9. shot.animals,
  10. shot.ilosc,
  11. ksiega.zatwierdz_l,
  12. ksiega.zatwierdz_s,
  13. ksiega.id_ksiega,
  14. ksiega.forma,
  15. ksiega.masa,
  16. ksiega.cena,
  17. ksiega.zwrot,
  18. ksiega.waluta,
  19. ksiega.przeznaczenie,
  20. 0 AS num,
  21. rekordy.n
  22. FROM rekordy, book LEFT JOIN shot ON book.id_book=shot.id_book LEFT JOIN ksiega ON book.id_book=ksiega.id_book WHERE shot.ilosc>'0' and book.nr_ob='{$formData['nr_ob']}' and rekordy.n BETWEEN 1 AND shot.ilosc
  23. UNION
  24. SELECT
  25. book.id_book AS id_book,
  26. book.imie_nazwisko,
  27. book.nr_od,
  28. book.nr_ob,
  29. book.start,
  30. book.zb,
  31. shot.animals1,
  32. shot.ilosc1,
  33. ksiega.zatwierdz_l,
  34. ksiega.zatwierdz_s,
  35. ksiega.id_ksiega,
  36. ksiega.forma1,
  37. ksiega.masa1,
  38. ksiega.cena1,
  39. ksiega.zwrot1,
  40. ksiega.waluta1,
  41. ksiega.przeznaczenie1,
  42. 1,
  43. rekordy.n
  44. FROM rekordy, book LEFT JOIN shot ON book.id_book=shot.id_book LEFT JOIN ksiega ON book.id_book=ksiega.id_book WHERE shot.ilosc1>'0' and book.nr_ob='{$formData['nr_ob']}' and rekordy.n BETWEEN 1 AND shot.ilosc1
  45. ) ksiega ORDER BY id_book,num LIMIT $from, $ileNaStronie";

mam juz wylistowane rekordy z każdej ewentualnie mnogiej pozycji, teraz mam możliwość zmiany wartości w polach cena i zwrot, jednak przy zapisie zmiana dokonywana jest wyłącznie do pierwszego rekordu. Prawdopodobnie powinienem wykorzystać podczas zapisu moje wirtualne pole 'num' ale niestety nie wiem jak.....
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.