2012-01-31 19 views
53

Ho un modulo che è un po 'complesso e spero di semplificare l'elaborazione sul lato server (PHP) nativamente POST di una serie di tuple.POST un array da un modulo HTML senza javascript

La prima parte del modulo rappresenta una utente:

  • Nome
  • Cognome
  • Email
  • Indirizzo
  • ecc

La seconda parte della forma representen ts una albero:

  • Frutta
  • Altezza
  • ecc

Il problema è che ho bisogno di essere in grado di pubblicare più Alberi per un singolo utente nel stessa forma. Vorrei inviare le informazioni come singolo Utente con un array di Alberi ma questo potrebbe essere troppo complesso da fare con un modulo. L'unica cosa che viene in mente è usare javascript per creare un messaggio JSON con un oggetto User e una matrice di oggetti Tree. Ma sarebbe bello evitare che javascript supporti più utenti (alcune persone hanno gli script disattivati).

+0

c'è cosa come matrici di modulo http://roshanbh.com.np/2008/08/handling-array-html- form-elements-javascript-php.html – Joseph

+1

L'array garantisce l'ordine? Vorrei una serie di oggetti Tree che avrebbero più campi, quindi questo significherebbe che devo usare array multipli per rappresentare un albero e gli array devono essere ordinati in modo da poter capire quale albero rappresentano. – styfle

risposta

102

check this one out.

<input type="text" name="firstname"> 
<input type="text" name="lastname"> 
<input type="text" name="email"> 
<input type="text" name="address"> 

<input type="text" name="tree[tree1][fruit]"> 
<input type="text" name="tree[tree1][height]"> 

<input type="text" name="tree[tree2][fruit]"> 
<input type="text" name="tree[tree2][height]"> 

<input type="text" name="tree[tree3][fruit]"> 
<input type="text" name="tree[tree3][height]"> 

dovrebbe finire così nel $ _POST [] array (formato PHP per una facile visualizzazione)

$_POST[] = array(
    'firstname'=>'value', 
    'lastname'=>'value', 
    'email'=>'value', 
    'address'=>'value', 
    'tree' => array(
     'tree1'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ), 
     'tree2'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ), 
     'tree3'=>array(
      'fruit'=>'value', 
      'height'=>'value' 
     ) 
    ) 
) 
+6

Quali caratteri sono consentiti nell'indicizzazione dell'array? Possiamo usare,.: '@? Esempio: 'albero [albero 1] [fr ui_t]' 'albero [albero.1] [fru: it]' 'albero [albero @ 1] [fru, it]' È _ solo delimitatore sicuro nella denominazione delle chiavi? – CoR

+2

sarebbe 'tree [] [fruit]' e 'tree [] [height]' non è valido per indicizzare automaticamente la matrice? – Wobbles

5

È possibile anche ingressi posta multipli con lo stesso nome e farli salvare in un array aggiungendo parentesi quadre vuote al nome di input come questo:

<input type="text" name="comment[]" value="comment1"/> 
<input type="text" name="comment[]" value="comment2"/> 
<input type="text" name="comment[]" value="comment3"/> 
<input type="text" name="comment[]" value="comment4"/> 

Se si utilizza PHP:

print_r($_POST['comment']) 

otterrete questo:

Array ([0] => 'comment1' [1] => 'comment2' [2] => 'comment3' [3] => 'comment4') 
Problemi correlati