2012-02-14 3 views
3

Ok, donc, j'ai un autre type de problème lorsque vous traitez des réseaux de boutons radio que les autres threads. Je veux l'avoir pour que, selon la réponse choisie, la valeur soit sauvegardée sur un autre tableau, mais je ne veux pas que l'utilisateur puisse sélectionner plus d'une option de la même question.HTML: Array Button Array

Exemple:

Question 1 
<input type="radio" name="Array1[]" value="question1"/> 
<input type="radio" name="Array2[]" value="question1"/> 
<input type="radio" name="Array3[]" value="question1"/> 
<input type="radio" name="Array4[]" value="question1"/> 

Question 2 
<input type="radio" name="Array1[]" value="question2"/> 
<input type="radio" name="Array2[]" value="question2"/> 
<input type="radio" name="Array3[]" value="question2"/> 
<input type="radio" name="Array4[]" value="question2"/> 

Le but est pour que je puisse arranger les questions elles-mêmes dans l'une des 4 catégories, et remplir chaque tableau avec les questions qui leur se est assignés.

Exemple:

En supposant 4 questions et les réponses étant 1, 3, 1, 2, les tableaux résultants je veux serait:

Array1[0] = "question1" 
Array1[1] = "question3" 

Array2[0] = "question4" 

Array3[0] = "question3" 

Array4[] = Empty array 

cela peut être fait ou ai-je besoin d'un approche différente pour atteindre le résultat souhaité? Je prévois de traiter ce formulaire en utilisant PHP en passant.

EDIT: Plus de détails. Un exemple d'utilisation.

<h1>What are your preferences?</h1> 
<form type=...etc.> 
    <label>Cats</label> 
    <input type="radio" name="Love[]" value="Cats"/> 
    <input type="radio" name="Like[]" value="Cats"/> 
    <input type="radio" name="Dislike[]" value="Cats"/> 
    <input type="radio" name="Hate[]" value="Cats"/> 
    <label>Dogs</label> 
    <input type="radio" name="Love[]" value="Dogs"/> 
    <input type="radio" name="Like[]" value="Dogs"/> 
    <input type="radio" name="Dislike[]" value="Dogs"/> 
    <input type="radio" name="Hate[]" value="Dogs"/> 
    <label>Ferrets</label> 
    <input type="radio" name="Love[]" value="Ferrets"/> 
    <input type="radio" name="Like[]" value="Ferrets"/> 
    <input type="radio" name="Dislike[]" value="Ferrets"/> 
    <input type="radio" name="Hate[]" value="Ferrets"/> 
    <label>Turtles</label> 
    <input type="radio" name="Love[]" value="Turtles"/> 
    <input type="radio" name="Like[]" value="Turtle"/> 
    <input type="radio" name="Dislike[]" value="Turtles"/> 
    <input type="radio" name="Hate[]" value="Turtles"/> 
<form> 
+0

Quelle est la logique derrière tout cela? Quel est le but? Vous ne pouvez sélectionner qu'une seule radio, c'est la chose à propos des radios. Pourquoi utiliseriez-vous un tableau? Un simple '' Fonctionnera. – elclanrs

+0

Plutôt que les réponses aux questions, il s'agit d'une sorte de script d'arrangement, dans lequel l'utilisateur est censé organiser la question dans l'une des 4 catégories.Pensez-y comme les questions étant des objets, qui peuvent être mis dans l'une des 4 cases; donc la sortie désirée est ce que chaque boîte contient. – ZoeStellan

+0

Pouvez-vous donner un exemple d'une question possible et des réponses? Je ne comprends toujours pas. Tu ne peux pas utiliser les cases à cocher? – elclanrs

Répondre

1

Je pense que vous aurez besoin de venir à lui de l'autre direction, quelque chose comme ça

<label>Cats</label> 
<input type="radio" name="Cats" value="Love"/> Love 
<input type="radio" name="Cats" value="Like"/> Like 
<input type="radio" name="Cats" value="Dislike"/> Dislike 
<input type="radio" name="Cats" value="Hate"/> Hate 

et sur le côté serveur, quelque chose comme:

Ensuite, parcourez $ _POST, en vérifiant la valeur et, si elle correspond à l'un des quatre que vous attendez, en poussant le nom dans le tableau approprié.
$loves=array(); 
$likes=array(); 
$dislikes=array(); 
$hates=array(); 

2

Vous ne pouvez sélectionner un bouton radio par nom, donc si vous avez des noms différents (comme vous le faites) Les utilisateurs seront en mesure de choisir plus d'un bouton radio par question. Je suis désolé de le dire, mais ce que vous proposez ne fonctionnera pas. Au lieu de cela, vous devrez maintenir une liste manuelle des numéros répondus pour la question correspondante. Il semble que vous connaissiez toutes les réponses à l'avance, donc cela ne devrait pas être un gros problème.

+0

Je suis conscient que je dois utiliser le même nom pour que les options s'excluent mutuellement. Ma question est de savoir comment atteindre le résultat souhaité, même si je dois adopter une approche différente. – ZoeStellan

2

Je pense que vous pouvez deviner que le nom regroupe les cases à cocher de sorte que la façon dont vous voulez le faire n'est pas plausible sans javascript. Je vous suggère de nommer les cases à cocher par question et ensuite vous pouvez les regrouper par valeur en utilisant PHP. Par exemple, si vous obtenez les réponses 1, 3, 1, 2 vous pouvez push les dans le tableau approprié. Ce serait quelque chose comme ça. Mais ce n'est pas la preuve de pétards

 <form method="post"> 
      <input type="radio" name="v1" id="v1-1" value="1"/><label for="v1-1">1-1</label><br/> 
      <input type="radio" name="v1" id="v1-2" value="2"/><label for="v1-2">1-2</label><br/> 
      <input type="radio" name="v1" id="v1-3" value="3"/><label for="v1-3">1-3</label><br/> 

      <input type="radio" name="v2" id="v2-1" value="1"/><label for="v2-1">2-1</label><br/> 
      <input type="radio" name="v2" id="v2-2" value="2"/><label for="v2-2">2-2</label><br/> 
      <input type="radio" name="v2" id="v2-3" value="3"/><label for="v2-3">2-3</label><br/> 

      <input type="radio" name="v3" id="v3-1" value="1"/><label for="v3-1">3-1</label><br/> 
      <input type="radio" name="v3" id="v3-2" value="2"/><label for="v3-2">3-2</label><br/> 
      <input type="radio" name="v3" id="v3-3" value="3"/><label for="v3-3">3-3</label><br/> 

      <input type="radio" name="v4" id="v4-1" value="1"/><label for="v4-1">4-1</label><br/> 
      <input type="radio" name="v4" id="v4-2" value="2"/><label for="v4-2">4-2</label><br/> 
      <input type="radio" name="v4" id="v4-3" value="3"/><label for="v4-3">5-3</label><br/> 
      <input type="submit" value="vote"/> 
     </form> 
<?php 
if(! empty($_POST)) 
{ 
    $plausible_answers = array(1,2,3,4); 
    $answers = array(); 
    for($i=1;! empty($_POST["v$i"]);++$i) 
    { 
     if(in_array($_POST["v$i"], $plausible_answers)) 
     { 
      $answers[$_POST["v$i"]][] = $i; 
     } 
    } 
    print_r($answers); 
} 
?> 
+0

Oui, je pensais aussi, mais je voulais une solution plus simple (Occam). Comme il ne semble pas y avoir de solution, je vais devoir faire ce que vous avez dit. Merci. – ZoeStellan

0

Vous pouvez créer un tableau comme array [] mais dans le bouton radio, nous devons donner un index à ce tableau comme [1], tableau [2] ... dynamiquement. id nous donnons un nom comme radioArray [] comme autre type d'entrée = "fname []" mais il n'incrémentera pas automatiquement l'index que nous avons pour incrémenter l'index avec une variable supplémentaire.

e.g name= "$radiArray[1] = 'val1'"; //give index like 1,2,3 ... 
     name ="$radiArray[2] = 'val2'"; ....