Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] petla zagnieżdzona ?
Forum PHP.pl > Forum > Przedszkole
Lonas
Kod wyglada tak :

  1. <?php
  2. $query = "select id from faktura where datasprzedazy >'".$od."' AND datasprzedazy <'".$do."' order by nrfaktury desc ";
  3. $result = mysql_query($query);
  4. $num_results = mysql_num_rows($result);
  5. $wartosc=0;
  6. $sumawbrutto=0;
  7. for ($i=0; $i <$num_results; $i++) {
  8. $row = mysql_fetch_array($result);
  9. $id= $row['id'];
  10.  
  11.  $query2 = "select wbrutto from faktura_pozycje where id_faktura='".$id."' ";
  12.  $result2 = mysql_query($query2);
  13.  $num_results2 = mysql_num_rows($result2);
  14.  for ($i=0; $i <$num_results2; $i++) {
  15.  $row = mysql_fetch_array($result2);
  16. $wbrutto=$row['wbrutto'];
  17. $sumawbrutto= $sumawbrutto + $wbrutto;
  18.  
  19.  }
  20.  
  21.  
  22.  
  23.  
  24. $wartosc=$wartosc + $sumawbrutto;
  25. }
  26.  
  27.  
  28.  
  29.  
  30. print $wartosc;
  31. ?>



według mnie powinien działać tak : wybrać ID faktur z dat od do,
potem wybrac wbrutto z faktury o danym id, zapisac go do zmiennej - wyjsc z petli wynik zapisac do $wartosc, i znowu powtórzyc czynnosc..

ale nie dziala ktoś wie dlaczego ?
nospor
Gdyby nie fakt, ze nie masz znacznikow w tytule, to bym nie pisal. A wiec:
popraw znaczniki w tytule zgodnie z zasadami!

skoro juz napisalem, to:
ale co ci nie dziala? moze ciut wiecej info? Nie wchodzi ci do pierwszej petli? nie wchodzi ci do drugiej petli? Moze dalbys pare kontrolnych echo by samemu sie dowiedziec gdzie jest blad?

po drugie:
sumowanie mozna zrobic o wielsze szybciej na poziomie bazy: sum
Lonas
  1. <?php
  2. $od= $_POST['od'];
  3. $do= $_POST['do'];
  4.  
  5. $query = "select id from faktura where datasprzedazy >'".$od."' AND datasprzedazy <'".$do."' order by nrfaktury desc ";
  6. $result = mysql_query($query);
  7. $num_results = mysql_num_rows($result);
  8. $wartosc=0;
  9. $sumawbrutto=0;
  10. for ($i=0; $i <$num_results; $i++) {
  11. $row = mysql_fetch_array($result);
  12. $id= $row['id'];
  13. print $id;
  14.  $query2 = "select wbrutto from faktura_pozycje where id_faktura='".$id."' ";
  15.  $result2 = mysql_query($query2);
  16.  $num_results2 = mysql_num_rows($result2);
  17.  for ($i=0; $i <$num_results2; $i++) {
  18.  $row = mysql_fetch_array($result2);
  19. $wbrutto=$row['wbrutto'];
  20. $sumawbrutto= $sumawbrutto + $wbrutto;
  21. print $sumawbrutto;
  22.  }
  23.  
  24.  
  25.  
  26.  
  27.  
  28. }
  29.  
  30.  
  31.  
  32.  
  33. print $wartosc;
  34. ?>


pokazuje aktualnie badane ID, później wartosc brutto na tym ID z tabeli faktura_pozycje i chyba nie wychodzi z 2 petli, bo nie robi tego ponownie czyli tyle razy ile jest ID w tabeli faktury
nospor
z racji ze nie poprawiles znacznika, napisze ci tylko tyle:
  1. <?php
  2. for ($i=0; $i <$num_results; $i++) {
  3. ?>


  1. <?php
  2.  for ($i=0; $i <$num_results2; $i++) {
  3. ?>

I wszystko jasne

ps: popraw ten znacznik
Lonas
już poprawiłem smile.gif nie wiedzialem o jaki znacznik Ci chodzi smile.gif

Edit: dla mnie niestety nie jest już wszystko jasne sad.gif
nospor
w nagrode ze poprawiles ten znacznik:
przyjrzyj się tym dwóm pętlom co ci napisalem. przyjrzyj się zmiennej $i. Wystepuje ona w obydwu petlach, co prowadzi, ze petla druga nadpisuje ci iteracje petli pierwszej, i pierwsza juz sie nie wykona, gdy w drugiej jest wiecej iteracji.
Najzwyklej w swiecie uzyj roznych zmiennych dla roznych petli

ps: mowilem ci juz ze lepiej sumuj se na poziomie zapytania: sum
Lonas
Zrobie to narazie w php i zaraz poczytam o sum() smile.gif
Dziekuje za pomoc
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.