![]() |
![]() ![]() |
![]() |
---Szaman--- |
![]()
Post
#1
|
Goście ![]() |
Dopiero zaczynam przygodę z PHP i mam problem, na który rozwiązania nie umiem znaleźć, mimo intensywnego przeszukiwania polsko- i anglojęzycznych for. Chodzi mianowicie o zastosowanie "if" w przypadku spełnienia dwóch, lub więcej warunków.
Tak sformułowałem formularz w pliku HTML, wybrałem metodę GET, żeby widzieć co jest przesyłane do pliku php: Kod <form method="get" action="kloss.php"> <input type="checkbox" name="bubu" value="bol"> Bolek <br /> <input type="checkbox" name="bubu" value="lol"> Lolek <br /> <input type="checkbox" name="bubu" value="tol"> Tola <br /> <input type="submit" value="GO"><br> </form> W przypadku zaznaczenia dwóch pierwszych pól chceckbox do php leci " ?bubu=bol&bubu=lol " Wpierw spróbowałem interpretować te dane w php: w ten sposób: Kod if ($_GET['bubu'] == 'bol' && $_GET['bubu'] == 'lol') { echo'Bolek i Lolek.'; } elseif ($_GET['bubu'] == 'bol' && $_GET['bubu'] != 'lol') { echo'sam Bolek.'; } Pojawił się jednak problem z "widzeniem" przez php drugiego warunku, spróbowałem więc przez zdefiniowanie zmiennych: Kod $oni = $_GET['bubu']; $onb = ($oni == 'bol'); $onl = ($oni == 'lol'); $ont = ($oni == 'tol'); if ($onb && $ont) { echo'Bolek i Lolek.'; } elseif ($onb && !$ont) { echo'sam Bolek.'; } Problem jednak pozostał. Podejrzewam, że ma to związek z tym, że w przypadku użycia danych liczbowych,a nie imion niemożliwe jest, by x=1 i jednocześnie x=2. Nie mam już kompletnie pomysłu jak sobie z tym poradzić i stworzyć php wyświetlające różne wyniki w zależności od tego czy którykolwiek z bohaterów jest zaznaczony w checkbox (czyli zastosowaniu empty lub isset), czy też w przypadku wszelkich możliwych ich kombinacji. Proszę o pomoc. |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
A zauważyłeś, że twoje checkboxy mają identyczną nazwę "bubu"? Jak chcesz je rozróżniać potem w kodzie?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 7.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Ok, już się zalogowałem.
Wielkie dzięki Konrados, wcześniej też próbowałem w chceckboxie dawać różne name, ale musiałem coś namotać i porzuciłem sprawdzanie w tym kierunku. Teraz to tak wygląda: Htm Kod <form method="get" action="kloss.php"> <input type="checkbox" name="bub1" value="bol"> Bolek <br /> <input type="checkbox" name="bub2" value="lol"> Lolek <br /> <input type="checkbox" name="bub3" value="tol"> Tola <br /> <input type="submit" value="GO"><br> i php Kod if ($_GET['bub1'] == 'bol' && $_GET['bub2'] == 'lol' && $_GET['bub3'] == 'tol') { echo'Bolek i Lolek i Tola.'; } elseif ($_GET['bub1'] == 'bol' && $_GET['bub2'] == 'lol' && $_GET['bub3'] != 'tol') { echo'Bolek i Lolek.'; } elseif ($_GET['bub1'] == 'bol' && $_GET['bub2'] != 'lol' && $_GET['bub3'] != 'tol') { echo'sam Bolek.'; } Problem w tym, że przy zaznaczeniu tylko 'bub1' w checkbox 'bub2' i 'bub3' wyskakuje jako "undefined index". Może zamiast używać != powinienem użyć (empty($_GET['bub2']) ? |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 623 Pomógł: 79 Dołączył: 16.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 7.06.2012 Ostrzeżenie: (0%) ![]() ![]() |
Problem rozwiązany, wystarczyło użyć empty zamiast != i isset zamiast ==
Kod if (isset($_GET['bub1']) && (isset($_GET['bub2'])) && (isset($_GET['bub3']))) { echo'Bolek i Lolek i Tola.'; } elseif (isset($_GET['bub1']) && (isset($_GET['bub2'])) && (empty($_GET['bub3']))) { echo'Bolek i Lolek.'; } elseif (isset($_GET['bub1']) && (empty($_GET['bub2'])) && (empty($_GET['bub3']))) { echo'sam Bolek.'; } XAMPP nie zgłasza zastrzeżeń ![]() I jeszcze pytanie - jeżeli napotkam na jeszcze jakieś trudności w czasie tworzenia wszystkich możliwych odpowiedzi na checkbox w tym kodzie, to lepiej pisać o tym posta tutaj, czy w osobnych tematach ? |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 168 Pomógł: 126 Dołączył: 5.02.2010 Skąd: Świdnica Ostrzeżenie: (0%) ![]() ![]() |
Wg. mnie dopisuj tutaj.
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 13.06.2025 - 09:14 |