2013-03-03 10 views
6

Mam wybraną listę wielokrotną zawierającą kilka elementów. Jest to lista adresów IP dla listy ACL. Użytkownicy mogą dodawać/usuwać adresy IP, a następnie zapisywać listę. Jeśli jednak nie wybierzesz pozycji na liście, $_POST[selectName] nie zawiera żadnych wartości. Jak mogę to zrobić? Wiem, że mogę to zrobić z javascript, ale wolę trzymać się PHP.Jak mogę POST wszystkie opcje na liście wyboru?

+4

Przeglądarka nie wysyła tych wartości do PHP, potrzebujesz JavaScript do manipulowania e proces składania wniosków. W związku z tym nie ma sposobu, aby to zrobić tylko w PHP –

+0

Widziałeś to? http://stackoverflow.com/questions/2407284/how-to-get-multiple-selected-values-of-select-box-in-php – Kamil

+2

Tradycyjnym sposobem wykonania tej czynności jest użycie wyboru, który można wybrać do wyboru, a następnie przy składaniu formularza mają javascript wybierz wszystkie opcje. – Jodes

Odpowiedz

14

Edytuj/poprawiono: Potrzebujesz JS. Nie ma możliwości wysłania wszystkich (wybranych i niewybranych) opcji za pośrednictwem POST. Musisz zaprogramować wszystkie opcje przed przesłaniem.

Plik z formularza (file1.php):

<script type="text/javascript"> 
    function selectAll() 
    { 
     selectBox = document.getElementById("someId"); 

     for (var i = 0; i < selectBox.options.length; i++) 
     { 
      selectBox.options[i].selected = true; 
     } 
    } 
</script> 

<form method="post" action="file2.php"> 
    <select id="someId" name="selectName[]" multiple> 
     <option value="123.123.123.123">123.123.123.123</option> 
     <option value="234.234.234.234">234.234.234.234</option> 
    </select> 
    <input type="submit" name="submit" value=Submit onclick="selectAll();"> 
</form> 

pliku, który odbiera POST (file2.php):

<?php 
    foreach ($_POST['selectName'] as $item) 
    { 
    print "$item<br/>"; 
    } 
?> 
+0

Chce * wszystkie * dostępne wartości wysyłane z 'wielu', a nie tylko wybranych. –

+0

@Pekka 웃 aaah, więc może powinien ustawić wszystkie te opcje jako wybrane? – Kamil

+0

yup; będzie potrzebował JavaScript dla tego –

2

Wystarczy dołączać ten można również użyć wersji z jQuery @ Kod Kamila, który jest trochę prostszy niż pętla:

<script type="text/javascript"> 
jQuery('[name="form1"]').on("submit",selectAll); 

function selectAll() 
{ 
    jQuery('[name="selectName[]"] option').prop('selected', true); 
} 

</script> 
<form name="form1" method="post" action="file2.php"> 
<select id="someId" name="selectName[]" multiple> 
    <option value="123.123.123.123">123.123.123.123</option> 
    <option value="234.234.234.234">234.234.234.234</option> 
</select> 
<input type="submit" name="submit" value=Submit onclick="selectAll();"> 
</form> 
Powiązane problemy