2009-12-30 8 views
7

Mi chiedo prima di tentare di refactoring la mia pagina se è possibile avere un array di input doppio nidificato in html. Ho un gruppo 8X5 di elementi in una forma e sarebbe bello per me essere in grado di analizzare utilizzando un array di array ... qualcosa comeè possibile avere array di tag di input doppio nidificati in html?

<input type="text" name="list[][]" /><input type="checkbox" name="list[][]" /> 

e così via

+0

Qual è la vostra elaborazione del server linguaggio? Credo che PHP possa gestirlo. –

+0

Darrell: im usando php. Quello che mi chiedo è se $ _POST ['elem_name'] sia una matrice di matrici o se sia spazzatura. –

risposta

13

si sta andando ad avere bisogno di fornire gli indici nella prima parte di ogni campo, altrimenti non c'è niente da nido, e se non lavoro, non sarebbe apparire come una griglia all'altra estremità:

fila 1:

name="list[0][]" 

riga 2:

name="list[1][]" 

ecc

Infine, yo il tuo server ha bisogno di supportare questo come PHP e Rails fanno out of the box. Non sono sicuro delle altre tecnologie server. Per un esempio, il seguente codice HTML una volta inviati a PHP:

<form action="post.php" method="POST" accept-charset="utf-8"> 
    <input type="text" name="list[0][]" value="1" /> 
    <input type="text" name="list[0][]" value="2" /> 
    <input type="text" name="list[0][]" value="3" /> 

    <input type="text" name="list[1][]" value="4" /> 
    <input type="text" name="list[1][]" value="5" /> 
    <input type="text" name="list[1][]" value="6" /> 

    <input type="text" name="list[3][]" value="7" /> 
    <input type="text" name="list[3][]" value="8" /> 
    <input type="text" name="list[3][]" value="9" /> 

    <input type="submit" name="Send" value="Send" id="Send" /> 
</form> 

Se in PHP il seguente codice esiste:

<?php print_r($_POST['list']); ?> 

l'output è:

Array 
(
    [0] => Array 
     (
      [0] => 1 
      [1] => 2 
      [2] => 3 
     ) 

    [1] => Array 
     (
      [0] => 4 
      [1] => 5 
      [2] => 6 
     ) 

    [3] => Array 
     (
      [0] => 7 
      [1] => 8 
      [2] => 9 
     ) 

) 
+0

Quindi stai solo dando i nomi dei campi che hanno un numero. Stai fingendo la funzionalità, non è realmente supportato da HTML4. – voyager

+0

e allora se io sono? Sto solo cercando di rendere un po 'più elegante il mio codice php all'altra estremità del modulo :) –

+1

Ho aggiornato la mia risposta per fornire un esempio in PHP. @voyager, non sto davvero fingendo nulla dato che i campi sono nomi HTML4 validi e fino alla tecnologia server per supportarlo. –

0

HTML che permette avere diversi ingressi con lo stesso nome, che vengono inviati al server tramite POST o GET come array separati da virgola, che la maggior parte (tutti?) le lingue laterali del server riconoscono come array nativo.

Non esiste un modo nativo di creare un array multidimensionale con puro HTML senza che tu stessi arrotolando qualcosa con javascript.

+0

PHP non riconosce i campi con lo stesso nome di un array. Infatti, restituirà solo l'ultimo valore definito. 'd = 1 & d = 2 & d = 3' quando recuperato con' $ _GET ['d'] 'restituire' "3" ' –

+0

@Doug Neiner: Non ho mai usato PHP per qualcosa di più grande di un' ciao, mondo', quindi ho pensato che funzionasse come ASP, Python, Ruby e (credo) Perl. – voyager

Problemi correlati