2010-09-14 8 views
8

Mi chiedo se c'è qualche tipo di garanzia sull'ordine delle variabili POST che vedrò dal lato server.Qual è l'ordine previsto di un array inviato in un modulo HTML?

Il mio caso d'uso è che ho un modulo che un utente compilerà per inserire un elenco di nomi ed e-mail. Sto utilizzando una tabella file, ognuno dei quali ha due ingressi:

<table> 
<tr> 
<td><input type='text' name='name[]' /></td> 
<td><input type='text' name='email[]' /></td> 
</tr> 
<tr> 
<td><input type='text' name='name[]' /></td> 
<td><input type='text' name='email[]' /></td> 
</tr> 
</table> 

La riga potrebbe essere clonato tramite JavaScript per consentire all'utente di digitare più nomi ed e-mail in modo da non voglio sapere in anticipo come molti saranno presentati.

Sul lato server, vedo $ _POST ['email'] e $ _POST ['nome'] impostato, ma mi chiedo se posso tranquillamente supporre $ _POST ['email'] [0] corrisponderà a $ _POST ['nome'] [0], $ _POST ['email'] [1] corrisponderà a $ _POST ['nome'] [1], e così via. Alcuni test di base sembrano indicare sì, ma mi chiedo se c'è una garanzia o se sto solo diventando fortunato.

risposta

12

perché non aggiungere una chiave di raggruppamento come:

<td><input type='text' name='user[0][name]' /></td> 
<td><input type='text' name='user[0][email]' /></td> 
</tr> 
<tr> 
<td><input type='text' name='user[1][name]' /></td> 
<td><input type='text' name='user[1][email]' /></td> 

e poi manuall impostare le user indici Quando si duplica sulla base del numero attuale. In questo modo tutto è già coallato.

1

I dati appariranno nello stesso ordine come nel modulo. Quindi prima fila hanno tasto 0, seconda fila - 1.

+0

Dice chi? Devo essere assolutamente sicuro, se lo userò in produzione. –

+0

perché non testare solo il formato semplice e il risultato var_dump. Vedrai il risultato. il risultato sarà sempre lo stesso di in form html (ovviamente è possibile modificare la posizione di visibilità degli elementi che non hanno effetto) –

+1

Specifica la specifica HTML: "I nomi/i valori di controllo sono elencati nell'ordine in cui appaiono nel documento ". http://www.w3.org/TR/html401/interact/forms.html#form-content-type – webbiedave

0

Come ha detto Vaidas Zilionis, appariranno i dati nel esattamente nello stesso ordine in cui appaiono nella forma, vedi del W3C HTML 4.01 Specification: applicazione

/x-www-form-urlencoded
[...] 2. I nomi dei controlli/valori sono elencati nell'ordine in cui appaiono nel documento.

multipart/form-data
[...] messaggio A "multipart/form-data" contiene una serie di parti, ognuna delle quali rappresenta un controllo di successo. Le parti vengono inviate all'agente di elaborazione nello stesso ordine in cui i controlli corrispondenti vengono visualizzati nello stream di documenti.

7

Qual è l'ordine atteso di una matrice presentato in un modulo HTML?

In base alle specifiche HTML:

Il controllo nomi/valori sono elencati nella nell'ordine in cui appaiono nel documento

http://www.w3.org/TR/html401/interact/forms.html#form-content-type

Tuttavia, è meglio di codifica pratica di impiegare un approccio array indicizzato come mostrato nella risposta di prodigitalson.

Problemi correlati