Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][AJAX] "Division by zero" O CO KAMAN?
powertee
post
Post #1





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 13.12.2007
Skąd: Katowice/Goleniowy

Ostrzeżenie: (0%)
-----


mam bardzo prosty skrypt i nie wiem co się z nim dzieje:
Warning: Division by zero in C:\myphp\calc\licz.php on line 9
podaje tylko wynik dla objętości a co do czasu napełnienia nic się nie pojawia chociaż uważam ze skrypt jest prawidłowy
  1. <form>
  2. Szerokość: <input id="liczba1" /><br />
  3. Długość: <input id="liczba2" /><br />
  4. Głębokość: <input id="liczba3" /><br />
  5. Pedkość przepływu wody w L/h: <input id="liczba4" /><br />
  6. <a href="#" onclick="Oblicz();">Oblicz</a>
  7. <br />Wynik: <div id="wynik">(na razie nieznany)</div>
  8. </form>
  9.  
  10. <script type="text/javascript"><!--
  11.  
  12. function CreateAjaxObject()
  13. {
  14.   var x;
  15.   if (window.XMLHttpRequest) {
  16.      x = new XMLHttpRequest();
  17.   } else if (window.ActiveXObject) x = new ActiveXObject("Microsoft.XMLHTTP");
  18.   return x;
  19. }
  20.  
  21. function AjaxCompleted(ajax)
  22. {
  23.   if (ajax.readyState != 4) return false;
  24.   if (ajax.status != 200) return false;
  25.   return true;
  26. }
  27.  
  28. var Ajax = CreateAjaxObject();
  29.  
  30. function Oblicz()
  31. {
  32.   Ajax.onreadystatechange = function() {
  33.      if (!AjaxCompleted(Ajax)) return;
  34.      var i = document.getElementById('wynik');
  35.      i.innerHTML = Ajax.responseText;
  36.   }
  37.   Ajax.open('GET', 'licz.php?op=Oblicz&l1=' + document.getElementById('liczba1').value
  38.      + '&l2=' + document.getElementById('liczba2').value + '&l3=' + document.getElementById('liczba3').value + '&l4=' + document.getElementById('liczba4'), true);
  39.   Ajax.send(null);
  40. }
  41.  
  42.  
  43. //--></script>


  1. <?php
  2.  
  3. $operacja = $_GET['op'];
  4. $liczba1 = (float) $_GET['l1'];
  5. $liczba2 = (float) $_GET['l2'];
  6. $liczba3 = (float) $_GET['l3'];
  7. $liczba4 = (float) $_GET['14'];
  8. if ($operacja === 'Oblicz') {
  9. $objetosc = $liczba1 * $liczba2 * $liczba3 * 1000;
  10. $objetosc/$liczba4 = $czas;
  11. echo "objętość basenu wynosi: "; 
  12. echo $objetosc;
  13. echo " dm/3";
  14. echo "<br>czas napełnienia basenu wynosi: "; 
  15. echo $czas; 
  16. }
  17. else echo 'Nieznany typ operacji!';
  18. //?>
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
.radex
post
Post #2





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


"Nie dziel cholero nigdy przez zero" Czy jakoś tak (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

$liczba4 najwidoczniej jest zerem.

Sprawdzaj najpierw czy $liczba4 jest większa od zera.

if($liczba4 > 0)
$objetosc / $liczba4 = $czas;

I tu też co innego: Jest coś takiego jak l-wartość.

Więc nie może być

$objetosc / $liczba4 = $czas;

Chyba miałeś na myśli

$czas = $objetosc / $liczba4;

Ten post edytował radex_p 12.06.2008, 18:14:40
Go to the top of the page
+Quote Post
powertee
post
Post #3





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 13.12.2007
Skąd: Katowice/Goleniowy

Ostrzeżenie: (0%)
-----


chodzi o to ze $liczba4 nie jest zerem a php twierdzi ze jest
Go to the top of the page
+Quote Post
.radex
post
Post #4





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


zrób

var_dump($liczba4);

przed

$objetosc/$liczba4 = $czas;
Go to the top of the page
+Quote Post
powertee
post
Post #5





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 13.12.2007
Skąd: Katowice/Goleniowy

Ostrzeżenie: (0%)
-----


niestety "float(0) " czyli prawdopodobnie mam bląd w pierwszym skrypcie a nie w kodzie php i formularz przekazuje 0 jakimś sposobem
Go to the top of the page
+Quote Post
.radex
post
Post #6





Grupa: Zarejestrowani
Postów: 1 657
Pomógł: 125
Dołączył: 29.04.2006

Ostrzeżenie: (0%)
-----


powinno być

+ '&l2=' + document.getElementById('liczba2').value + '&l3=' + document.getElementById('liczba3').value + '&l4=' + document.getElementById('liczba4').value, true);


*chyba* - nie znam się na js zbytnio.

A - i proponowałbym zrobić to bardziej dostępne - tzn. normalny formularz, a wysyłanie przez AJAX jako *dodatek*.

Ten post edytował radex_p 12.06.2008, 18:27:01
Go to the top of the page
+Quote Post
tomeksobczak
post
Post #7





Grupa: Zarejestrowani
Postów: 139
Pomógł: 10
Dołączył: 6.07.2007
Skąd: opole

Ostrzeżenie: (0%)
-----


jeżeli Twój skrypt wygląda dokładnie tak jak wkleiłeś to tutaj
  1. <?php
  2. $liczba4 = (float) $_GET['14'];
  3. ?>

masz $_GET[czternascie] a nie $_GET[literaL i 4]

swoją drogą to nie mam pojęcia jak można zrobić taką literówkę

Ten post edytował tomeksobczak 12.06.2008, 18:30:11
Go to the top of the page
+Quote Post
powertee
post
Post #8





Grupa: Zarejestrowani
Postów: 58
Pomógł: 0
Dołączył: 13.12.2007
Skąd: Katowice/Goleniowy

Ostrzeżenie: (0%)
-----


dzięki już zakapowałem zamiast L przez przypadek wstawiłem 1 i się nie zgrywało

przerabiałem niedziałający skrypt kumpla i tak już było
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: 24.08.2025 - 20:48