2017-02-01 1 views
0

J'ai un formulaire sur lequel vous pouvez remplir plusieurs champs. Le nombre de champs n'est pas fixe, mais dépend de l'entrée de l'utilisateur.Combiner les données de poste avant d'envoyer

forme simplifiée:

<form method="POST" action="post.php"> 
    Field one: <input type="text" name="field[]" /><br /> 
    Field two: <input type="text" name="field[]" /><br /> 
    Field three: <input type="text" name="field[]" /><br /> 

    <br /><br /> 

    Checkbox one: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox two: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox three: <input type="checkbox" name="check[]" value="1" /><br /> 

    <br /><br /> 

    <input type="submit" value="Submit" /> 
</form> 

Le problème que je suis face, est que field one doit être couplé avec checkbox one, two avec two et ainsi de suite. Cela ne semble pas dur, non? Si tout est vérifié et rempli, ce n'est pas:

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

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

En PHP je pouvais lier les indices de tableau ensemble et tout va bien. Le problème auquel je suis confronté est lorsque vous ne sélectionnez pas la deuxième case à cocher. Si vous faites cela, il y aura une entrée moins dans le check post data:

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
     ) 
) 

Quelle est la meilleure façon de gérer cette situation? Ajax soumission n'est pas une option, mais la manipulation JavaScript est.

Je pensais à un moyen de créer des tableaux dans JS par élément (un, deux, trois) et soumettre ces données. La question est, comment dois-je faire, ou y a-t-il une meilleure (meilleure) façon de gérer ce problème?

+0

champ de texte caché pour les cases à cocher. si la case à cocher est cochée, le champ caché aura une valeur, sinon, le champ masqué sera vide. – Eugen

Répondre

1

Vous devez les jumeler avec des index correspondant et définir une valeur par défaut entrée cachée pour la case à cocher avant de la définir:

Field one: <input type="text" name="field[0]" /><br /> 

       <input type="hidden" name="check[0]" value="0"> 
Checkbox one: <input type="checkbox" name="check[0]" value="1" /><br /> 

Alors maintenant, vous avez toujours un check[0] apparié à field[0] mais il aura une valeur 0 si non vérifié.

+0

Je travaille depuis longtemps sur ce sujet, c'est certain ... Bien sûr, l'ajout d'un index est la meilleure solution, et ça marchera. que je n'ai pas pensé par moi-même ... – Mathlight

+0

Et merci d'avoir trouvé ce petit truc pour les cases à cocher ... Je n'ai jamais su que c'était possible. – Mathlight