2011-05-12 3 views
1

J'ai ce formulaire que j'ai besoin de soumettre quelques questions avec des valeurs cachées et les lier tous ensemble.Soumettre le formulaire et générer

J'ai actuellement ajouter le nom avec l'ID de la question, puis ajouter _ puis le nombre de réponses.

<form> 
    <span>1:Question goes here </span> 
    <input type=hidden name=t_1 value=10> 
    <input type=hidden name=f_1 value=20> 
    <input type=checkbox name=a1_1>value1 
    <input type=checkbox name=a1_2>value2 
    <input type=checkbox name=a1_3>value3 
    <span>2:Question goes here </span> 
    <input type=hidden name=t_2 value=40> 
    <input type=hidden name=f_2 value=20> 
    <select name=a2_1> 
     <option>blah</option> 
     <option>etc</option> 
    </select> 
</form> 

Du côté du serveur, je les champs exploserai soumis et les mettre ensemble:

foreach ($_POST as $var => $val) { 
    switch ($var[0]) { 
     case "a" : 
      $b = substr($var, 1); // remove first char to get number following 
      $pos = strpos($b, "_"); 
      if ($pos !== false) { 
       $i = explode("_", $b); // separating question number from choice number (for multi select questions) 
       $answer[$i[0]][] = $val; 
       break; 
      } 
      else { 
       $answer[$b][] = $val; 
       break; 
      } 
     case "t" : 
      $b = substr($var, 1); 
      $target[$b] = $val; 
      break; 
    } 
} 

est-il une meilleure façon de le faire?

Répondre

2

vous pouvez nommer vos balises de la manière suivante:

<input name="question[1][answer]" type="text" value="someValue" /> 

cela va créer tableau pour vos questions et vous pouvez itterate à travers eux, sans avoir besoin d'exploser ou quoi que ce soit sous-chaîne.

1

Vous pouvez utiliser

f[] or f[1], f[2] 

Ce faisant, $ _POST contiendra un tableau.

Questions connexes