[php] Przesyłanie zmiennych wykorzystując formularze

Języki, których efekty są wykonywane po stronie serwera. PHP, ASP czy CGI w połączeniu z bazami danych SQL dają niezwykłe możliwości budowy i zarządzania stron WWW. Tu zadajemy pytania oraz demonstrujemy kod, z którym mamy problem.
cwiru
Nowy
Nowy
Posty: 41
Rejestracja: pt lut 27, 2004 1:47 pm
Lokalizacja: ze Śródziemia

[php] Przesyłanie zmiennych wykorzystując formularze

Post autor: cwiru »

Mam np. taki kod :

Kod: Zaznacz cały

 
<html>
<body>
            <form  method="POST" action="odbierz.php">
                <SELECT>
                       <OPTION name="one"> 1 opcja</OPTION>
                       <OPTION name="two">2 opcja</OPTION>
                </SELECT>
                 <input type="submit" value="prześlij">
             </form>
</body>
</html>
[/color]
Chciałbym aby plik odbierz.php dawał informację typu:
- jeśli wybrano opcję 1 -> komunikat : "Wybrałeś 1 opcję"
- jeśli wybrano opcję 2 -> komunikat : "Wybrałeś 2 opcję"
W jaki sposób sprawdzać zmienne w tablicy $_POST ? Próbowałem wypisywać obie zmienne (onei two) ale bez żadnego rezultatu.
Jaką wartość będzie miała zmienna np. two jeśli nie wybiorę jej w formularzu ?
iro
Moderator
Posty: 402
Rejestracja: pt gru 19, 2003 8:20 pm
Lokalizacja: Szczecin

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: iro »

Napisałeś, że masz następujący kod:
<html>
<body>
<form method="POST" action="odbierz.php">
<SELECT>
<OPTION name="one"> 1 opcja</OPTION>
<OPTION name="two">2 opcja</OPTION>
</SELECT>
<input type="submit" value="prześlij">
</form>
</body>
</html>
Wydaje mi się, że powinno być:

Kod: Zaznacz cały

<html>
<body>
            <form  method="POST" action="odbierz.php">
                <SELECT>
                       <OPTION name="one" value="1"> 1 opcja</OPTION>
                       <OPTION name="one" value="2">2 opcja</OPTION>
                </SELECT>
                 <input type="submit" value="prześlij">
             </form>
</body> 
</html>
A w pliku odbierz.php na przykład tak:

Kod: Zaznacz cały

<?php
if $_POST["one"]="1"
{
echo "wybrałeś opcję 1"
}
if $_POST["one"]="2"
{
echo "wybrałeś opcję 2"
}
?>
Innymi słowy musisz nadać temu obiektowi jedną zmienną (one) a nie dwie, jak to zrobiłeś w swoim przykładzie. I co najważniejsze przypisać jej jakąś wartość (poprzez atrybut "value").

Powodzenia w dalszej pracy :)
cwiru
Nowy
Nowy
Posty: 41
Rejestracja: pt lut 27, 2004 1:47 pm
Lokalizacja: ze Śródziemia

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: cwiru »

Niestety chyba jest coś nie tak. U mnie po wpisaniu powyższego kodu wyświetla komunikat że wybrałem zarówno 1 opcję jak i 2 opcję. Obojętnie którą wybiorę , pierwszą albo drugą rezultat jest taki sam. Czemu to nie działa ? :cry:
one_eddie
Nowy
Nowy
Posty: 106
Rejestracja: sob sty 17, 2004 11:48 am
Lokalizacja: Polska

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: one_eddie »

To co ci tu napisali jest do bani, zrob tak:

Kod: Zaznacz cały

<form name="form1" action="jakis_plik.php" method="post">
<select name="nazwa_zmiennej" size="1">
<option value="1">tekst 1</option>
<option value="2">tekst 2</option>
<option value="3">tekst 3</option>
</select>
<input type="submit" name="btn1" value="Costam"></p>
</form>
teraz w jakis_plik.php robisz tak:

Kod: Zaznacz cały

<?php switch (nazwa_zmiennej)
{
case 1: echo "1";
...
}
?>
Ale tak naprawde wystarczylo poszykac jakiejkolwiek informacji na temat znacznika HTML (options, select).
cwiru
Nowy
Nowy
Posty: 41
Rejestracja: pt lut 27, 2004 1:47 pm
Lokalizacja: ze Śródziemia

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: cwiru »

Coś dziwnie działa u mnie powyższy kod. Jeśli wybrałem opcję 3 to wszystko ok. Jeśli wybrałem opcję nr 2 to komunikat wyświetla odpowiedzi jakbym wybrał opcje 2 i 3. A jeśli wybiorę opcję nr 1 to mam komunikaty dotyczące wszystkich trzech warunków case w instrukcji switch. Sprawdzałem również jaką wartość zmiennej mam w $_POST["nazwa_zmiennej"] i odpowiada ona temu , jaką opcję wybrałem. Więc czemu generują się pozostałe komunikaty ?
Dreen
Zaczyna działać
Zaczyna działać
Posty: 633
Rejestracja: pn paź 20, 2003 6:32 pm
Lokalizacja: Żywiec

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: Dreen »

sprobuj przepisac tego switcha na konstrukcje if - sa duzo czytelniejsze i jesli zrobiles jakis blad to masz wieksze szanse jego zauwazenia.

mowiac szczerze rzadko uzywam instrukcji switch - nadaje sie chyba po to aby troche namieszac w kodzie, ale nie znam faktow co do jej szybkosci (tzn czy jest szybsza od if) ktos wie?
cwiru
Nowy
Nowy
Posty: 41
Rejestracja: pt lut 27, 2004 1:47 pm
Lokalizacja: ze Śródziemia

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: cwiru »

Zamiana instrukcji switch na if-y nic nie daje. Efekt jest taki sam jak poprzednio. Czy ktoś rozwiąże ten problem ?
one_eddie
Nowy
Nowy
Posty: 106
Rejestracja: sob sty 17, 2004 11:48 am
Lokalizacja: Polska

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: one_eddie »

Jeju moj blad. myslalem ze cos kumacie.

powino byc tak:

Kod: Zaznacz cały

<?php switch (nazwa_zmiennej) 
{ 
case 1: echo "1"; break;
... 
} 
?>
one_eddie
Nowy
Nowy
Posty: 106
Rejestracja: sob sty 17, 2004 11:48 am
Lokalizacja: Polska

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: one_eddie »

Dreen pisze:sprobuj przepisac tego switcha na konstrukcje if - sa duzo czytelniejsze i jesli zrobiles jakis blad to masz wieksze szanse jego zauwazenia.

mowiac szczerze rzadko uzywam instrukcji switch - nadaje sie chyba po to aby troche namieszac w kodzie, ale nie znam faktow co do jej szybkosci (tzn czy jest szybsza od if) ktos wie?
Co to tyle bostow masz a takei glupoty piszesz 8O
cwiru
Nowy
Nowy
Posty: 41
Rejestracja: pt lut 27, 2004 1:47 pm
Lokalizacja: ze Śródziemia

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: cwiru »

Faktycznie, przecież bez instrukcji break wykonują się wszystkie możliwości po kolei. Ale nie ma różnicy (przynajmniej jeśil chodzi o działanie) czy korzysta się z if bądź switch . Problem ostatecznie rozwiązany.
one_eddie
Nowy
Nowy
Posty: 106
Rejestracja: sob sty 17, 2004 11:48 am
Lokalizacja: Polska

Re: [php] Przesyłanie zmiennych wykorzystując formularze

Post autor: one_eddie »

Jasne ze nie ma bo przeciez switch i tak zamieniany jest na identyczny kod jak if-y.

Ale takie cos poprawia czytelnosc przy wielu warunkach.
No jesli ktos uzyje jakiegos zamotanego stylu to switche tez moga byc zamotane :P
ODPOWIEDZ