Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]skrypt do przetwarzania danych
Forum PHP.pl > Forum > Przedszkole
emachines92
Witam
mam problem z pewnym skryptem, a mianowicie w napisanym przez mojego kolege skrypcie na stronie html wyskakuja jakies dziwne bledy
ponizej zamieszczam zdjecie-to co zaznaczone na czerwowo to wlasnie tego chcialbym sie pozbyc

http://img4.imageshack.us/img4/529/uo0001co.jpg

ponizej zamieszczam kod tego skryptu:

  1. <?php
  2.  
  3. $r = $_POST['r']; //promien podstawy
  4. $l = $_POST['l']; //dlugosc powierzchni bocznej
  5. $h = $_POST['h']; //wysokosc stozka
  6.  
  7. if(!$r OR !$l OR !$h OR $r=="r" OR $h=="h" OR $l=="l") {
  8. echo 'Pole i objętosc stozka:<br /><br />
  9. r - promien podstawy<br />
  10. h - wysokosc stozka<br />
  11. l - dlugosc powierzchni bocznej<br />
  12. <form name="licz" action="index.php" method="post"><table cellspacing="0" cellpadding="0">
  13. <tr>
  14. <td><input type="text" name="r" value="r" /></td>
  15. </tr>
  16. <tr>
  17. <td><input type="text" name="l" value="l" /></td>
  18. </tr>
  19. <tr>
  20. <td><input type="text" name="h" value="h" /></td>
  21. </tr>
  22. <tr>
  23. <td><input type="submit" value="Oblicz" /></td>
  24. </tr>
  25. </table></form>';
  26. }
  27. else echo 'Pole i objetosc stozka:<br /><br />
  28. r - promien podstawy<br />
  29. h - wysokosc stozka<br />
  30. l - dlugosc powierzchni bocznej<br />
  31. <form name="licz" action="index.php" method="post"><table cellspacing="0" cellpadding="0">
  32. <tr>
  33. <td><input type="text" name="r" value="r" /></td>
  34. </tr>
  35. <tr>
  36. <td><input type="text" name="l" value="l" /></td>
  37. </tr>
  38. <tr>
  39. <td><input type="text" name="h" value="h" /></td>
  40. </tr>
  41. <tr>
  42. <td><input type="submit" value="Oblicz" /></td>
  43. </tr>
  44. </table></form>';
  45. echo "Objetosc: ".(1/3)*($r*$r)*$h." &pi;<br />";
  46. echo "Pole powierzchni bocznej: ".$r*$l." &pi;";
  47.  
  48.  
  49. ?>



jesli ktos wie co usunac lub wstawic do tego skryptu aby pozbyc sie tego co zaznaczylem na zdjeciu,to bede bardzo wdzieczny
see ya
marcio
Takimi notice'ami sie nie przejmuj i daj
emachines92
Podziękował smile.gif
marcio
Oczywiscie jak chcesz wystarczy ze przed obrobieniem tych danych z $_POST dodasz if() z isset() na dane zmienne wtedy bledu nie powinno byc snitch.gif
croc
Ja bym nie robił tego co zaproponował marcio. Uważam, że lepiej jest w każdym formularzu wstawić jeden input hidden np. o nazwie "form" i z wartością określającą formularz, np.
  1. <input type="hidden" name="form" value="count">

Wtedy to, czy formularz został wysłany wystarczy sprawdzić przez
  1. if(isset($_POST['form']) and $_POST['form'] === 'count')

Moim zdaniem można na tym etapie założyć, że formularz został wysłany prawidłowo i nie sprawdzać każdej zmiennej osobno. To, co ty zrobiłeś u siebie jest bez sensu. Najpierw przypisałeś wartości z $_POST do zmiennych, a potem sprawdzasz czy istnieją.

Po drugie zwróć uwagę, że spora część kodu powtarza się w obu przypadkach - wysłanego i niewysłanego formularza. Nie musisz wklejać tej wspólnej części dwa razy, wstaw ją poza if-else.
marcio
To juz o wiele lepiej jest sprawdzic czy zostal wyslany submit snitch.gif
celbarowicz
po uruchomieniu- pierwszy raz- nie masz ustalonych danych post,
daj na poczatku
  1. <?php
  2.  
  3. if(!isset($_POST['r'])){$_POST['r']=0;}else{}
  4. if(!isset($_POST['l'])){$_POST['l']=0;}else{}
  5. if(!isset($_POST['h'])){$_POST['h']=0;}else{}
  6.  
  7.  
  8.  
  9. $r = $_POST['r']; //promien podstawy
  10.  
  11.  

i problem znika
croc
celbarowicz -> po pierwsze nie powinno się przypisywać samemu czegokolwiek do $_POST. Po drugie, po co ten pusty else? Po trzecie, To że ktoś nie wpisał nic nie oznacza, że tam ma być zero. Lepiej wyświetlić formularz jeszcze raz i kazać wpisać te wartości.
celbarowicz
croc jest sporo literatury ,które używają puste else, niekiedy jeśli nie użyjasz pustego else wyskakują błędy. ponadto dlaczego chcesz przeładowywać stronę i oglądać błędy skoro można tego uniknąć,
croc
Programujesz od niedawna, prawda?
celbarowicz
zaczynałem od fortranu 30 lat temu
croc
To może 30 lat temu "wyskakiwały" błędy od braku else. Nie chcę podważać twoich kompetencji programistycznych, ale twoje rady są co najmniej krótkowzroczne. Pozbywanie się jednego problemu, żeby wywołać inny to nie jest dobry pomysł. Dane niewpisane to dane, których nie ma. Brak danych to nie zero. Jeżeli ktoś nie poda boku kwadratu, to nie znaczy, że go interesuje kwadrat o boku 0, tylko że się pomylił i należy mu to ładnie pokazać.
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.