2011-01-14 14 views
27

ho visto qualcosa su questo sito: Manipolazione gamma di form HTML Elementi in JavaScript e PHP http://www.ajaxprojects.com/ajax/tutorialdetails.php?itemid=343HTML Element Array, name = "something []" o name = "something"?

E detto a proposito mettere la matrice in proprietà name e come il ottenere il valore della collezione di ingresso. ad es. name="education[]"

Ma come so, l'elemento di input HTML è pronto per l'array name. Sul lato client (GetElementsByName) o server-side ($_POST in PHP o Request.Form in ASP.NET) ad esempio: name="education", quindi qual è il diverso con o meno con il []?

+1

con istruzione [], puoi avere campi di input con nomi qualcosa come istruzione [soggetto] [1] e istruzione [soggetto] [2] come ottenere l'array associativo corrispondente sul lato server (in php $ _POST ['educazione ']) – naiquevin

risposta

39

PHP usa la sintassi parentesi quadra per convertire input del form in un array, in modo che quando si utilizza name="education[]" otterrete una matrice quando si esegue questa operazione:

$educationValues = $_POST['education']; // Returns an array 
print_r($educationValues); // Shows you all the values in the array 

Così, per esempio:

<p><label>Please enter your most recent education<br> 
    <input type="text" name="education[]"> 
</p> 
<p><label>Please enter any previous education<br> 
    <input type="text" name="education[]"> 
</p> 
<p><label>Please enter any previous education<br> 
    <input type="text" name="education[]"> 
</p> 

Fornirà tutti i valori inseriti all'interno dell'array $_POST['education'].

In JavaScript, è più efficiente per ottenere l'elemento da id ...

document.getElementById("education1"); 

L'ID non deve necessariamente corrispondere al nome:

<p><label>Please enter your most recent education<br> 
    <input type="text" name="education[]" id="education1"> 
</p> 
14

se si dispone di caselle di controllo è possibile passare una matrice di valori selezionati.

<input type="checkbox" name="fruits[]" value="orange"/> 
<input type="checkbox" name="fruits[]" value="apple"/> 
<input type="checkbox" name="fruits[]" value="banana"/> 

anche multipli selezionare dropdowns

<select name="fruits[]" multiple> 
    <option>apple</option> 
    <option>orange</option> 
    <option>pear</option> 
</select> 
7

E 'diverso. se pubblichi questa forma:

<input type="text" name="education[]" value="1"> 
<input type="text" name="education[]" value="2"> 
<input type="text" name="education[]" value="3"> 

si otterrà un array in PHP, in questo esempio si otterrà $_POST['education'] = [1, 2, 3].

se pubblichi questa forma senza []:

<input type="text" name="education" value="1"> 
<input type="text" name="education" value="2"> 
<input type="text" name="education" value="3"> 

si otterrà l'ultimo valore, qui si otterrà $_POST['education'] = 3.

Problemi correlati