Strona 1 z 1

[php] Przesyłanie zmiennych wykorzystując formularze

: pt mar 26, 2004 3:07 pm
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 ?

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

: pt mar 26, 2004 6:51 pm
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 :)

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

: pt mar 26, 2004 9:03 pm
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:

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

: pt mar 26, 2004 10:11 pm
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).

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

: pt mar 26, 2004 11:47 pm
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 ?

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

: sob mar 27, 2004 1:32 am
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?

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

: sob mar 27, 2004 11:30 am
autor: cwiru
Zamiana instrukcji switch na if-y nic nie daje. Efekt jest taki sam jak poprzednio. Czy ktoś rozwiąże ten problem ?

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

: sob mar 27, 2004 11:33 am
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;
... 
} 
?>

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

: sob mar 27, 2004 11:35 am
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

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

: sob mar 27, 2004 5:55 pm
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.

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

: sob mar 27, 2004 6:49 pm
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