Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php]Undefined variable[/php]
Maciejo_5
post
Post #1





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.03.2010

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


Witam, od wczoraj zacząłem bawić się php, zainstalowałem sobie wampa na windowsie, a na ubuntu zainstalowałem apache + php + mysql z phpmyadmin. Następnie znalazłem książkę i z niej się uczę. Podany przykład w kodzie html:
  1. <html>
  2. <head>
  3. </head>
  4. <body>
  5. <?php
  6. //utworz krotkie nazwy zmiennych
  7. $iloscopon = $_POST['iloscopon'];
  8. $iloscoleju = $_POST['iloscoleju'];
  9. $iloscswiec = $_POST['iloscswiec'];
  10. ?>
  11. <form action="action.php" method=post>
  12. <table border=0>
  13. <tr bgcolor=#cccccc>
  14. <td width="150">Produkt</td>
  15. <td width="15">Ilosc</td>
  16. </tr>
  17. <tr>
  18. <td>Opony</td>
  19. <td align="center"><input type="text" name="iloscopon" size="3" maxlenght="3"></td>
  20. </tr>
  21. <td>Oleje</td>
  22. <td align="center"><input type="text" name="iloscoleju" size="3" maxlenght="3"></td>
  23. </tr>
  24. <td>Swiece zaplonowe</td>
  25. <td align="center"><input type="text" name="iloscswiec" size="3" maxlenght="3"></td>
  26. </tr>
  27. <td colspan="2" align="center"><input type="submit" value="Zloz zamowienie"></td>
  28. </tr>
  29. </table>
  30. </form>
  31. </body>
  32. </html>


następnie kod z action.php

  1. <html>
  2. <head>
  3. <title>Czesci samochodowe Janka - wyniki zamowienia</title>
  4. </head>
  5. <body>
  6. <h1> Czesci samochodowe Janka</h1>
  7. <h2> Wyniki zamowienia</h2>
  8. <?php
  9. echo "<p>Zamowienie przyjete.</p>";
  10. echo '<p>Zamowienie Panstwa wyglada nastepujaco: </p>';
  11. echo $iloscopon.'opopn<br />';
  12. echo $iloscoleju.'butelek oleju<br />';
  13. echo $iloscswiec.'swiec zaplonowych<br />';
  14. ?>
  15. </body>
  16. </html>

na stronie wyskakuje komunikat:Notice: Undefined variable: iloscopon in D:\wamp\www\stronki\action.php on line 11
opopn.
Rozumiem że nie zdefiniowałem zmiennej z tym, że nigdzie nie ma w książce opisane jak to zrobićsmile.gif pozdrawiam i dzięki z góry za pomoc.
ps. przepraszam jak coś źle umieściłem w znacznikach nie wiem czy umieszczać kod html w znacznikach html jeśli chodzi mi o php głównie.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
wookieb
post
Post #2





Grupa: Moderatorzy
Postów: 8 989
Pomógł: 1550
Dołączył: 8.08.2008
Skąd: Słupsk/Gdańsk




W ten właśnie sposób
  1. //utworz krotkie nazwy zmiennych
  2. $iloscopon = $_POST['iloscopon'];
  3. $iloscoleju = $_POST['iloscoleju'];
  4. $iloscswiec = $_POST['iloscswiec'];


--------------------
Go to the top of the page
+Quote Post
pedro84
post
Post #3





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

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


  1. $iloscopon = $_POST['iloscopon'];


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
zelu
post
Post #4





Grupa: Zarejestrowani
Postów: 229
Pomógł: 34
Dołączył: 7.12.2008
Skąd: Poznań

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


Zanim wyświetlisz zmienne musisz coś do nich przypisać. Obstawiam, że coś z $_POST.

Bo w tej chwili próbujesz wyświetlić coś, co w ogóle nie istnieje smile.gif Stąd ten Notice
Go to the top of the page
+Quote Post
Maciejo_5
post
Post #5





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.03.2010

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


To wiem że muszę przypisać tylko jak? Skoro w tym formularzu mam zmienną
  1. $iloscopon = $_POST['iloscopon'];
rozumiem że jest przypisana do
  1. <tr>
  2. <td>Opony</td>
  3. <td align="center"><input type="text" name="iloscopon" size="3" maxlenght="3"></td>
  4. </tr>

wiec w tym formularzu wpisuje odpowiednio 1,2,3 dla przykladu opony, olej i świece i wyskakuje niezdefiniowana zmienna dla wszystkich 3 wpisanych liczb.
Go to the top of the page
+Quote Post
dg2001
post
Post #6





Grupa: Zarejestrowani
Postów: 71
Pomógł: 12
Dołączył: 9.01.2008
Skąd: Olkusz

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


Tak te pola odnoszą się do pól w formularzu, lecz formularz wywołuje plik action="action.php" w w tym pliku musisz mieć zdefiniowane do jakich zmiennych ma przypisać wartości z pól z formularza.

Czyli masz nazwę pola w formularzu ILOSCOPON to w pliku action.php musisz mieć albo zrobione tak że do zmiennej $iloscopon przypisze ci wartość pola $_POST['iloscopon'] albo przy wyświetlaniu tej wartości tak jak masz echo $iloscopon.'......'; wpiszesz po prostu $_POST['iloscopno'].'.....';
Go to the top of the page
+Quote Post
Maciejo_5
post
Post #7





Grupa: Zarejestrowani
Postów: 5
Pomógł: 0
Dołączył: 10.03.2010

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


Cóż dzięki za pomoc doszedłem przykład jest dobry zmienne zdeklarowałem nie w tym pliku co trzeba:) Rookie mistake:) Jeszcze raz dziękuje za cierpliwość i szybką pomoc i przede wszystkim za wyrozumiałość dla nowicjusza, pozdrawiam.
Go to the top of the page
+Quote Post
lucky2011
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.03.2011

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


Postanowiłem napisać tego posta bo miałem podobny problem z tej samej książki i odpowiedzi tutaj go nie rozwiązały.

Kod: $iloscopon = $_POST ['iloscopon']; rzeczywiście powinien być w pliku action.php ale to nie rozwiązało mojego problemu wieć poszukałem na google i znalazłem przyczynę.

Trzeba włączyć w serwerze php ustawienie "register globals", ma być ON co jest domyślnie wyłączone w wersiach od 4.2.0 w górę.

Innym sposobem można użyć zamiast $iloscopon styl średni $_POST['iloscopon'] od wersji PHP 4.1.0 i w górę.

$_POST ['iloscopon'] = $_POST ['iloscopon'];

http://lucky2011.strefa.pl
http://lucky.user.oak.pl
Go to the top of the page
+Quote Post
sadistic_son
post
Post #9





Grupa: Zarejestrowani
Postów: 1 495
Pomógł: 245
Dołączył: 1.07.2009
Skąd: Bydgoszcz

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


Włączenie register_globals nie jest dobrym pomysłem. Ze względów bezpieczeństwa powinna być ta opcja wyłączona. Jeśli uczysz się na swoim localhoscie to nie ma problemu ale po co nabierać złych przyzwyczajeń?

Ten post edytował sadistic_son 16.03.2011, 16:50:13


--------------------
Uśpieni przez system, wychowani przez media,
Karmieni zmysłami, próżnymi żądzami...

-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Jesteś zbyt leniwy, żeby się zarejestrować? Ja jestem zbyt leniwy aby Ci pomóc!
-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-
Go to the top of the page
+Quote Post
lucky2011
post
Post #10





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 16.03.2011

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


Napewno masz rację.

Dziekuje.
Go to the top of the page
+Quote Post
webdice
post
Post #11


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Zasada jest prosta, z tablicy POST możesz korzystać tylko i wyłącznie gdy formularz został wysłany, w innym wypadku zostaniesz poinformowany powyższym ostrzeżeniem. Dodatkowo wszystkie klucze do których się odwołujesz (np. $_POST['ilosc']) muszą mieć swoje odpowiedniki w polach formularza.

Zapoznaj się z funkcją isset.
Go to the top of the page
+Quote Post
-L300-
post
Post #12





Goście







[webdice]

W związku z tym, że miałem podobny problem z błędem indeksu NOTICE, który pojawił się gdy przepisałem kod z książki (raczej broszurki)

Komputer Świat Ekspert
Biblioteczka
Programowanie Krok Po Kroku
KURS PHP 02/2011.

Autor chyba miał wyłączone raportowanie błędów bo w jego przykładach (zrzutach obrazu w książce) nie widać błędu skryptu a u mnie tak.
Sporo się głowiłem dlaczego mam z tym problem a on nie i teraz mam wyjaśnienie.


Dodam dla przykładu jak w oryginale napisany jest przykład:
  1. <?php
  2. /*
  3. Listing 3.3. Przekazywanie danych do skryptu za pomocą formularza
  4. */
  5. ?>
  6. <form method="post" action="index.php">
  7. Nazwa wydawnictwa: <br />
  8. <input type="text" name="nazwa" />
  9. <br />
  10. <input type="submit" value="Przekaż do skryptu" />
  11. </form>
  12. <?php
  13. echo 'Nazwa wydawnictwa: '.$_POST['nazwa'];
  14. ?>


i w przeglądarce pojawiał się błąd
Notice: Undefined index: nazwa in C:\nauka\PHP\nr02\index.php on line 13

Poprawiłem wg Twojej rady na:
  1. <form method="post" action="index.php">
  2. Nazwa wydawnictwa:<br />
  3. <input type="text" name="nazwa" />
  4. <br />
  5. <input type="submit" value="Przekaż do skryptu" />
  6. </form>
  7. <?php
  8. if (isset($_POST['nazwa']))
  9. {
  10. echo 'Nazwa wydawnictwa: ' . $_POST['nazwa'];
  11. }
  12. ?>


Teraz to działa bombowo. Mogę przejść do dalszej nauki.

Dziękuję i pozdrawiam
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 20.08.2025 - 00:01