Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Co z tym sumowaniem?
Forum PHP.pl > Forum > PHP
irysek110
Co robi skrypt każdy widzi. Pytanie brzmi: dlaczego nie uzyskuję poprawnego wyniku sumowania ($cena_wywolawcza) + ($skok) w elsie na dole?. Wielkości sumowane są poprawne, gdy $skok = 5, a $cena_wywolawcza = 530, to wynik mam 5. Nie rozumiem dlaczego..


  1. <?php
  2.  
  3. if( isset($_POST['co_licytuje']))
  4. {
  5. $db=mysql_pconnect(&#092;"localhost\",\"root\",\"ppp\");
  6.  if ($db)
  7. {
  8.  $data=date(&#092;"Y-m-j\");
  9.  mysql_select_db(&#092;"aukcja\");
  10.  
  11.  $z_bazy = mysql_query(&#092;"SELECT * FROM asortyment WHERE asortyment_id = '$co_licytuje'\");
  12.  $licz_z_bazy= mysql_num_rows($z_bazy);
  13.  if ( $licz_z_bazy!= 0)
  14.  {
  15. $z_b = mysql_fetch_array($z_bazy);
  16.  
  17. $cena_wywolawcza = stripslashes($z_b[&#092;"cena_wywolawcza\"]);
  18. $skok = stripslashes($z_b[&#092;"skok\"]);
  19.  
  20. //echo \"<font color=\"black\">$cena_wywolawcza\";
  21.  }
  22.  $najwyzsza_licytowana = mysql_query(&#092;"SELECT MAX(cena_licytowana) AS cena_l FROM licytacje where asortyment_id = '$co_licytuje' \");
  23.  $nawj_lic= mysql_num_rows($najwyzsza_licytowana);
  24.  //echo $nawj_lic;
  25.  if ($nawj_lic!=0)
  26. {
  27.  $n_l = mysql_fetch_array($najwyzsza_licytowana);
  28.  $cena_obecna = stripslashes($n_l[&#092;"cena_l\"]);
  29.  $zalicytowalem = $cena_obecna + $skok;
  30.  
  31.  //echo $cena_obecna;
  32. }
  33.  else
  34. {
  35.  $zalicytowalem = ($cena_wywolawcza) + ($skok);
  36.  //echo $zalicytowalem;
  37. }
  38. //echo $moja_netaukcja;
  39. echo &#092;"<br>\".$cena_wywolawcza;
  40. echo &#092;"<br>\".$cena_obecna;
  41. echo &#092;"<br>\".$zalicytowalem;
  42.  
  43. }
  44.  
  45. }
  46. else
  47. echo &#092;"Nie przesyla\";
  48. ?>




Serdeczne dzięki
SongoQ
Hm niby wyglada ok, ale po co te nawiasy? Moze zor rzutownaie typow.
irysek110
Rzutowanie nic nie dało...Dziwne, bo jeśli skrypt wykonuje if -a i sumowanie jakie w nim jest ($zalicytowalem = $cena_obecna + $skok;) to to sumowanie działa poprawnie..

Masz SongoQ jeszcze inny pomysł? Może ktoś inny?
LukasMG
Nawiasy mogą, choć nie muszą być - nie wpływają na obliczenia w tym wypadku.
Przyjżyj się dokładniej wypluwa Ci baza przy zapytaniu o cene wywoławczą.
  1. <?php
  2.  
  3. //18 Linijka 
  4. $cena_wywolawcza = stripslashes($z_b[&#092;"cena_wywolawcza\"]);
  5.  
  6. ?>
dr_bonzo
a sprawdz tutaj:
  1. <?php
  2. else
  3. {
  4. echo $cena_wywolawcza; //<<<<<<<<<<<
  5.  $zalicytowalem = ($cena_wywolawcza) + ($skok);
  6.  //echo $zalicytowalem;
  7. }
  8. // bo tutaj
  9. if ( $licz_z_bazy!= 0)
  10.  {
  11. $z_b = mysql_fetch_array($z_bazy);
  12.  
  13. $cena_wywolawcza = stripslashes($z_b[&#092;"cena_wywolawcza\"]); // <<<<<<<<
  14. $skok = stripslashes($z_b[&#092;"skok\"]);
  15.  
  16. //echo \"<font color=\"black\">$cena_wywolawcza\";
  17.  }
  18. //warunkowo deklarujesz zmienna $cena_wywolawcza, ktora nie musi byc dostepna w ta
  19. tym ELSE
  20.  
  21. ?>
irysek110
Baza wypluwa mi odpowiednią zmienną $cena_wywolawcza, to już sprawdziłem.

Właśnie, to dokładnie tak wygląda jakby $cena_wywolawcza byla rowna 0, czyli jakby była niedostępna. Ale jak to jest, że ta zmienna nie jest dostępna, a zmienna $skok, uzyskiwana w tym samym miejscu w tym samym elsie działa poprawnie? Trochę tu brak konsekwencji..
Jak to jest możliwe, że ta zmienna nie musi być tam dostępna?

Mało tego...zlikwidowałem warunek, bo i tak to zapytanie do tabeli asortyment wyrzuci jeden rekord i mimo to nie działa..
LukasMG
Cytat(irysek110 @ 2005-06-19 21:59:44)
Baza wypluwa mi odpowiednią zmienną $cena_wywolawcza, to już sprawdziłem.

A nazwa kolumny w tabeli "asortyment" jest napewno zgodna z kluczem tablicy "cena_wywolawcza"?
Nie możliwe jest by ta zmienna nie była dostępna w interesującej Cię częsci skyptu.
irysek110
Na pewno się zgadza. Wyświetliłem sobie zaraz pod
$cena_wywolawcza = stripslashes($z_b["cena_wywolawcza"]);

tę zmienną i jest poprawna..na bank
dr_bonzo
Wlacz error_reporting( E_ALL ), i zobacz jak twoj algorytm sie sypie. Stworz go na nowo i zakoduj! np:
  1. <?php
  2.  
  3. if ($nawj_lic!=0)
  4. {
  5.  $n_l = mysql_fetch_array($najwyzsza_licytowana);
  6.  $cena_obecna = stripslashes($n_l[&#092;"cena_l\"]); // <<<<< CENA OBECNA
  7.  $zalicytowalem = $cena_obecna + $skok;
  8. }
  9.  else
  10. {
  11.  $zalicytowalem = ($cena_wywolawcza) + ($skok);
  12.  // <<< TU JEJ NIE MA
  13. }
  14. echo &#092;"<br>\".$cena_wywolawcza;
  15. echo &#092;"<br>\".$cena_obecna; // A MIMO TO JA ECHUJESZ
  16. echo &#092;"<br>\".$zalicytowalem;
  17.  
  18. }
  19.  
  20. ?>
irysek110
Dzięki wszystkim, problem rozwiązałem....Okazało się, że zapytanie z klauzulą MAX nie działało do końca dobrze przez co skrypt nie wchodził do else i nie sumował, tylko wchodził do "if", gdzie sumował $skok i nieistniejącą w tabeli licytacje wartość $cena_obecna, dlatego na końcu wartość $zalicytowalem była równa skokowi...

Dzięki serdeczne za zainteresowanie.

Pozdrawiam
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.