Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]Zmienna nie pobiera danych z formularza
Forum PHP.pl > Forum > Przedszkole
rafalek1001
Witam, około dwóch tygodni temu rozpocząłem naukę HTML i PHP, tak więc jestem jeszcze bardzo początkujący, a najczęstszy problem jaki napotykam to źle skonstruowany formularz. Od razu mówię że szukałem już troszkę na google i raczej mi tam nic nie pomogło :/ Tak więc mam taki kod w pliku "sklep.html":

  1. <!DOCTYPE html
  2. PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  3. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  6. <title>Sklep</title>
  7. </head>
  8. <body bgcolor="#8dbccb">
  9. <h1>Sklep</h1>
  10. <br />
  11. <br />
  12. <h3>Witamy w naszym internetowym sklepie!<br />
  13. Proszę złożyć zamówienie i potwierdzić zakup.<br /><br /></h3>
  14. <form method="post" action="zamowienie.php">
  15. <table border="0" rules="none">
  16. <tr>
  17. <td bgcolor="grey" width="70">Produkt</td> <td bgcolor="grey" width="70">Ilość</td>
  18. </tr>
  19. <tr>
  20. <td align="center" valign="middle">Jabłko</td>
  21. <td align="center" valign="middle"><input type="text" name="jablko" size="1" /></td>
  22. </tr>
  23. <tr>
  24. <td align="center" valign="middle">Kiwi</td>
  25. <td align="center" valign="middle"><input type="text" name="kiwi" size="1" /></td>
  26. </tr>
  27. <tr>
  28. <td align="center" valign="middle">Gruszka</td>
  29. <td align="center" valign="middle"><input type="text" name="gruszka" size="1" /></td>
  30. </tr>
  31. <tr>
  32. <td align="center" valign="middle" colspan="2">
  33. <input type="submit" value="Zamów" /></td>
  34. </tr>
  35. </form>
  36. </body>


I taki kod w pliku "zamowienie.php":

  1. <?php
  2.  
  3. define("jablko", 2);
  4. define("kiwi", 2.4);
  5. define("gruszka", 2.8);
  6. define("P_VAT", 0.22);
  7.  
  8. $ile_jablko = $_POST['jablko'];
  9. $ile_kiwi = $_POST['kiwi'];
  10. $ile_gruszka = $_POST['gruszka'];
  11. $towar = $ile_jablko + $ile_kiwi + $ile_gruszka;
  12.  
  13. $cena_jablko_netto = $ile_jablko * jablko;
  14. $cena_kiwi_netto = $ile_kiwi * kiwi;
  15. $cena_gruszka_netto = $ile_gruszka * gruszka;
  16. $cena_netto = $cena_jablko_netto + $cena_kiwi_netto + $cena_gruszka_netto;
  17.  
  18. $cena_jablko_brutto = $cena_jablko_netto + $cena_jablko_netto * P_VAT;
  19. $cena_kiwi_brutto = $cena_kiwi_netto + $cena_kiwi_netto * P_VAT;
  20. $cena_gruszka_brutto = $cena_gruszka_netto + $cena_gruszka_netto * P_VAT;
  21. $cena_brutto = $cena_jablko_brutto + $cena_kiwi_brutto + $cena_gruszka_brutto;
  22.  
  23. $sklep = fopen("sklep.txt", "a");
  24.  
  25. $zamowienie = "Zamówione towary:
  26. $ile_jablko jabłek
  27. $ile_kiwi kiwi
  28. $ile_gruszka gruszek
  29. Suma zamówionych towarów: <u>$towar</u>
  30. Za jabłka: $cena_jablko_netto zł
  31. Za kiwi: $cena_kiwi_netto zł
  32. Za gruszki: $cena_gruszka_netto zł
  33. Cena zamówionych towarów netto: <b>$cena_netto zł</b>
  34. Cena zamówionych towarów brutto: <b>$cena_brutto zł</b>
  35.  
  36. ";
  37.  
  38. if((is_integer($ile_jablko)) && (is_integer($ile_kiwi)) && (is_integer($ile_gruszka)) && (fwrite($sklep, $zamowienie, 999))) {
  39.  
  40. echo "Zamówione towary:<br />
  41. $ile_jablko jabłek<br />
  42. $ile_kiwi kiwi<br />
  43. $ile_gruszka gruszek<br />
  44. Suma zamówionych towarów: <u>$towar</u><br />
  45. Za jabłka: $cena_jablko_netto zł<br />
  46. Za kiwi: $cena_kiwi_netto zł<br />
  47. Za gruszki: $cena_gruszka_netto zł<br />
  48. Cena zamówionych towarów netto: <b>$cena_netto zł</b><br />
  49. Cena zamówionych towarów brutto: <b>$cena_brutto zł</b><br />";
  50. echo "<br /><br />";
  51. echo "Zamówienie zostało dodane do pliku!";
  52. }
  53. else
  54. {
  55. echo "Zamówienie zostało źle złożone!";
  56. echo "<br /><br />";
  57. echo "Zamówienie nie zostało zapisane!";
  58. }
  59.  
  60. fclose($sklep);
  61.  
  62. ?>
  63.  
  64. <form action="lista.php" method="post" />
  65. <input type="submit" value="Zobacz wszystkie zamówienia" />
  66.  
  67. </body>


Niestety, nie wiem czemu, ale dane wpisane do formularzy są źle przypisywane do zmiennych w "zamowienie.php", ponieważ kiedy chciałem sprawdzić jaką wartość przyjmują (usunąłem w if'ie warunek o tym, że zmienne muszą być liczbami) wszędzie wyświetliło się 0. Nie wiem jaki błąd popełniam, ponieważ zgodnie z instrukcjami jakimi kierowałem się z kursów html'a i php to jest prawidłowy(?) zapis. Proszę o poprawę kodu i wytłumaczenie co źle robię. Z góry dziękuję.
nospor
Każda dana z forma jest tekstem a nie liczbą. wiec is_integer nigdy nie będzie spelniony dla danej z forma. Mozesz zamiast tego uzyc is_numeric, by sprawdzic, czy tekst z forma przedstawia liczbę
rafalek1001
No tak... Rzeczywiście umknęło mi to, a od razu kiedy napisałeś o is_numeric przypomniała mi się ta formuła. Teraz już wszystko chodzi ok, bałem się że to coś z układaniem kodu, no ale już chodzi. Dzięki wielkie nospor. Widocznie muszę jeszcze raz powtórzyć niektóre lekcje bo często mi umykają takie rzeczy smile.gif Jeszcze raz wielkie dzięki biggrin.gif
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.