Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][HTML]deklaracja zmiennej
Forum PHP.pl > Forum > Przedszkole
tymbarkowy
Jestem początkującym. Nie znam terminologii.

Do tej pory zrobiłem sobie formularz wysyłkowy (być może ktoś go zna, pochodzi z książki PHP i MySql - Vademecum profesjonalisty wydanie IV).

Formularz składał się z 2 plików jeden html drugi php. Pliki były połączone za pomocą
  1. <form action="1.php" method=post>


a w pliku 1.php na początku każda zmienna była zdeklarowana za pomocą

  1. $iloscopon = $_POST['iloscopon'] ;
  2. $iloscoleju = $_POST['iloscoleju'] ;
  3. $iloscswiec = $_POST['iloscswiec'];
  4. $jak = $_POST['jak'];
  5. $data=date(" H:i, jS F Y");
  6. $adres = $_POST['adres'];
  7. $nrdomu = $_POST['nrdomu'];


Przez co mogłem dalej operować na tych zmiennych.


Następnym zadaniem jakie sobie wyznaczyłem (na powtórkę tego co już umiem) było sporządzenie podobnego formularza, ale aby cena towarów wyświetlała się na tej samej stronie. Bez przeładowywania. Formularz miałby liczyć cenę towarów na bierząco, zaraz po ich wybraniu z listy, czy wpisaniu ilości. A więc logicznie: kod php powinien się znajdować w kodzie html. Umieściłem prosta funkcję switch dla próby w kodzie html:
  1. <?php
  2.  
  3. $graf=$_POST['graf'];
  4.  
  5. switch ($graf)
  6. {
  7. case 'a' ;echo'A';break;
  8. case 'b' ;echo'B';break;
  9. case 'c' ;echo'C';break;
  10. }
  11.  
  12.  
  13. ?>

Jednak deklarowanie zmiennych metodą $_POST wywołuje błąd
  1. Notice: Undefined index: graf in C:\xampp\htdocs\test pc\home.php on line 59




Doszedłem do wniosku, że zmienna $graf musi być zdeklarowana w inny sposób, logicznym jest to, że inaczej deklaruje się zmienne z odrębnego dokumentu html i wewnątrz niego.

Nie znam tego sposobu. Chcę go poznać.
phpion
Problemem jest to, że przy wejściu na stronę bez przesłanego formularza nie masz elementu w tablicy $_POST. Zrób tak:
  1. if (isset($_POST['graf'])) {
  2. $graf = $_POST['graf'];
  3. }
  4. else {
  5. $graf = 'c'; // lub inna domyslna wartosc
  6. }

W przypadku, gdy nie będzie $_POST['graf'] do zmiennej $graf zostanie przypisana domyślna wartość.
tymbarkowy
Nie do końca o to mi chodziło. Chcę aby mój formularz
  1. <td> Wybierz grafikę </td>
  2. <td align = "center"height="60" width="300" ><select name="graf">
  3. <option value = "a"> Geforce
  4. <option value = "b"> Radeon
  5. <option value = "c"> zintegrowana


po wybraniu opcji a - Geforce wyświetlił mi automatycznie jakąś wartość (w tym przypadku wartość A) w innym miejscu na tej samej stronie bez przeładowywania jej. Tymczasem użycie
  1. if (isset($_POST['graf'])) {
  2. $graf = $_POST['graf'];
  3. }
  4. else {
  5. $graf = 'a';
  6. }
  7. switch ($graf)
  8. {
  9. case 'a' ;echo'A';break;
  10. case 'b' ;echo'B';break;
  11. case 'c' ;echo'C';break;
  12. }


cały czas wyświetla wartość A, bez względu na to, co wybiorę. (w późniejszym etapie zamiast A B C użyję jakichś kwot)

Mam nadzieję, że tym razem wyraziłem się jaśniej smile.gif
bastard13
PHP jest wykonywany po stronie serwera, więc aby zaszła jakakolwiek reakcja na akcję użytkownika, dane muszą zostać wysłane na serwer (w twoim przypadku lokalny), czyli strona musi zostać odświeżona. Natychmiastowe reakcje na akcje użytkownika możesz otrzymać wykorzystując do tego celu java script.
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.