MozillaPL.org - polskie centrum Mozilli

Główne menu:

[HTML] Problem SELECT w formularzu

Jak tworzyć strony WWW zgodnie ze standardami

Moderator: Pomocy?!

[HTML] Problem SELECT w formularzu

Postautor: yarek » 21 lipca 2006, 15:03

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4

Witam :D

Mam taki oto kod:
Kod: Zaznacz cały
<form method="post" action="index.php">
   <select multiple name="lol">
      <option value="jeden">Jeden</option>
      <option value="dwa">Dwa</option>
      <option value="trzy">Trzy</option>
   </select>
   <input type="submit" />
</form>

<?
   if (isset($_POST['lol'])) {
      echo '<pre>';
      print_r($_POST);
      echo '</pre>';
   } else {
      echo 'No options ...';
   }
?>

W kontrolce select z parametrem multiple można wybrać więcej niż jedną wartość. Tymczasem PHP zwraca mi tylko jedną, czemu się tak dzieje? Np. wybierając opcję "jeden" i "trzy" w zmiennej znajduję tylko jedną opcję: "trzy". Zależy mi na tym żeby można było wybrać kilka opcji :( Czy coś zrobiłem źle?
yarek
 

Postautor: alfest » 24 stycznia 2007, 21:09

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.8.1.2pre) Gecko/20070111 SeaMonkey/1.1

Za bardzo się na tym nie znam ale w tym form multiple="???" podaj jakąś wartość w argumencie multiple, może to wtedy zadziała, bo normalnie jak i tego nie napiszesz to będzie to samo. Ale jak napiszesz to ale multiple="coś..." to napewno będziesz miał jakiś efekt :)
alfest
 

Postautor: Tomek » 25 stycznia 2007, 10:33

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl-PL; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1

1. @alfest - przy założeniu że strona jest w xhtml powinno być <select multiple="multiple" name="lol"> - przy czym nie rozwiązuje to w żaden sposób problemu yarka. a określenia jakiś efekt nie są zbyt precyzyjne
2. @yarek - twój fragment php wychwytuje tylko jedną wartość 'lol' - trzeba zrobić chociażby prostą pętlę... (pozwoliłem sobie troszkę zmienić kod)
Kod: Zaznacz cały
<?php
 $lol=$_POST['lol'];
 if ($lol) {
   foreach ($lol as $l) {
    echo '<pre>'.$l.'</pre>';
   }
 } else {echo'plum...';}
?>


pisane z palca... więc sprawdź czy zawiasy itp się zgadzają....
"Mym sojusznikiem jest Moc, i potężnym sojusznikiem ona jest." -- Mistrz Yoda
Tomek
Moderator
 
Posty: 9041
Z nami od: 19 sierpnia 2004, 06:52

Postautor: Gość » 21 sierpnia 2007, 12:19

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

niestety nie działa, wywala bład: "Warning: Invalid argument supplied for foreach() in main_scheduler.php on line 5"
Gość
 

Postautor: Tomek » 21 sierpnia 2007, 12:43

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6

działa na 100% - najprawdopodobniej błąd występuje gdzie indziej - możliwe że zmienna przekazana do foreach jest pusta.
"Mym sojusznikiem jest Moc, i potężnym sojusznikiem ona jest." -- Mistrz Yoda
Tomek
Moderator
 
Posty: 9041
Z nami od: 19 sierpnia 2004, 06:52

Postautor: carlos » 21 sierpnia 2007, 14:43

Przeglądarka: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.6) Gecko/20070801 Firefox/2.0.0.6

tomasiek pisze:2. @yarek - twój fragment php wychwytuje tylko jedną wartość 'lol' - trzeba zrobić chociażby prostą pętlę... (pozwoliłem sobie troszkę zmienić kod)
Kod: Zaznacz cały
<?php
 $lol=$_POST['lol'];
 if ($lol) {
   foreach ($lol as $l) {
    echo '<pre>'.$l.'</pre>';
   }
 } else {echo'plum...';}
?>

eee, yarek dobrze zrobił, użył funkcji print_r($_POST).

Za to Twój kod nie sprawdza, czy $_POST['lol'] we ogóle istnieje, stąd błąd :)


Co do pytania w pierwszym poście (poprawiony kod):
Kod: Zaznacz cały
<select multiple="multiple" name="lol">

Tak ustawiona zmienna spowoduje wysłanie takich wartości (przykładowo):
Kod: Zaznacz cały
lol=jeden&lol=dwa

Przez co serwer wybierze ostatnią.


Należy podpowiedzieć przeglądarce/serwerowi, że to ma być tablica:
Kod: Zaznacz cały
<select multiple="multiple" name="lol[]">

Dostaniemy (po zdekodowaniu):
Kod: Zaznacz cały
lol[]=jeden&lol[]=dwa

i w php:
Kod: Zaznacz cały
Array
(
    [lol] => Array
        (
            [0] => jeden
            [1] => dwa
        )

)

Pozdrawiam.
Karol Kwiatkowski
C.A.R.L.O.S.: Cybernetic Android Responsible for Logical Observation and Sabotage
carlos
 
Posty: 288
Z nami od: 24 listopada 2004, 04:29
Lokalizacja: LV-426

podobna trudnosc

Postautor: katwer » 01 sierpnia 2008, 15:40

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.8.1.17pre) Gecko/20080716 K-Meleon/1.1.6

Witam :)
Ja rownież mam problem z poleceniem select. Chcę za jego pomocą przesłać wartość zmiennej, ale w tablicy post nic nie ma.. Dlaczego?


Kod: Zaznacz cały
<select name="miejscowoscID" size="">
               <option value="brak">
               <?php
               include('moduly/polaczenie.php');
                    $zapytanie = "select * from miejscowosci where miejscowosc like '%' order by miejscowosc asc";
                    $wynik = $db->query($zapytanie);
                    $ile = $wynik -> num_rows;
                    for ($i=0; $i<$ile; $i++) {
                     $wiersz = $wynik -> fetch_assoc();
                     echo("<option value=\"".$wiersz['miejscowoscID']."\">".$wiersz['miejscowosc']);
                     }
                 ?>
                </select>
[/code]
katwer
 


Wróć do Tworzenie stron WWW

Kto jest online

Zarejestrowani użytkownicy: Baidu [Spider], Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: