Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] petla zagnieżdzona ?
Lonas
post
Post #1





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

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


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 ?

Ten post edytował L.Pociask 8.03.2006, 11:30:15
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Lonas
post
Post #3





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

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


  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
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Lonas
post
Post #5





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

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


już poprawiłem (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) nie wiedzialem o jaki znacznik Ci chodzi (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Edit: dla mnie niestety nie jest już wszystko jasne (IMG:http://forum.php.pl/style_emoticons/default/sad.gif)

Ten post edytował L.Pociask 8.03.2006, 11:34:15
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
Lonas
post
Post #7





Grupa: Zarejestrowani
Postów: 576
Pomógł: 14
Dołączył: 9.11.2005

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


Zrobie to narazie w php i zaraz poczytam o sum() (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Dziekuje za pomoc
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 25.08.2025 - 16:15