2010-08-27 13 views
0

J'ai un formulaire de soumission qui se composent de 1 bouton radio du groupe.envoyer la valeur de radiobutton à différents champs à DB

<div id="defectclass"> 
     <input id="def1" type="radio" class="defect" name="defect" value="1"/>S 
     <input id="def2" type="radio" class="defect" name="defect" value="1" />A 
     <input id="def3" type="radio" class="defect" name="defect" value="1" />B 
     <input id="def4" type="radio" class="defect" name="defect" value="1" />C 
</div> 

côté que i ai 4 champs à table DB, qui est:

  1. S
  2. A
  3. B
  4. C

Je veux après soumets:

- if def1 are checked send value to field "S" 
    - if def2 are checked send value to field "A" 
    - if def3 are checked send value to field "B" 
    - if def4 are checked send value to field "C" 
    - if all not checked or null send to all fields value="0" 

comment puis-je faire ça bcoz je n'ai jamais essayé ça?

+0

Comment gérez-vous la fonctionnalité côté serveur? PHP, Python, C#? – Rahul

+0

J'utilise php .. – klox

+0

la ligne existe-t-elle déjà? Où insérez-vous la rangée dans la table? – Rahul

Répondre

0
  1. Vous devez créer 1 champ seulement.
  2. Si vous avez besoin de chiffres pour représenter ces lettres, créez un tableau .

comme celui-ci

$defects_arr = array(0,"S","A","B","C"); 

ce tableau peut être utilisé dans de nombreuses tâches:

  • pour représenter ces lettres avec des numéros
  • pour valider l'utilisateur RINPUT
  • pour construire cette entrée dynamiquement

Ainsi, lors de la réception de vos données POST comparaison juste contre ce tableau:

$defect = '0'; 
if(!empty($_POST['defect'])) { 
    $key = array_search($_POST['defect'],$defect_arr)); 
} 

et vous aurez un certain nombre dans la variable clé $. Ce numéro doit être stocké dans la base de données.

+0

si en faisant cela peut répondre à ma question initiale sur ce lien? – klox

+0

Hm, solution intéressante, mais je ne pense pas que ce soit ce qu'il est après. Il veut 1 ou 0, pas 0, 1, 2, 3 ou 4. – Mischa

+0

@klox ce n'est pas une question par le lien, mais juste un peu une question. Un bout. Mais une solution de tableau permet encore de convertir des lettres en nombres. –

-1

En regardant les valeurs possibles de defect, dans la définition de votre table,

changement defect VARCHAR(1)-defect VARCHAR(1) DEFAULT "0"

Cela simplifie votre code pour insérer des colonnes ligne/mise à jour

dans votre script php, après En analysant le formulaire, ajoutez une instruction switch pour décider quelle colonne mettre à jour.

 


// I assumed the row already exists 

mysql_connect (localhost, $username, $password); 
@mysql_select_db ($database) or die("Error"); 

$defect = mysql_real_escape_string($_POST["defect"]); //parse the defect field 
$id = mysql_real_escape_string$_POST["id"]); //primary key of the table 
$flag = True; 

if(!empty($_POST['defect'])) 
{ 

    switch($defect) 
    { 
     case "S" : $var = "S"; 
        break; 
     case "A" : $var = "A"; 
        break; 
     case "B" : $var = "B"; 
        break; 
     case "C" : $var = "C"; 
        break; 
     default : $flag = False; 
    } 

    if($flag) 
    { 
     $query = "UPDATE TABLE_NAME SET" + $var + " = '1' WHERE Id = '$id'"; 
     mysql_query($query); 
    } 

    mysql_close(); 
} 

 
+0

Quand voté vers le bas, laisser un commentaire m'aiderait à me corriger. – Rahul

+0

Trop de choses à corriger. Sans parler de ce code est un péché contre l'art de programmation - il répète un morceau de code énorme pour changer juste une lettre! Et injection SQL aussi bien. –

+0

horrible erreur. l'édition est-elle meilleure? – Rahul

-1
<div id="defectclass"> 
     <input id="def1" type="radio" class="defect" name="defect['s']" value="1"/>S 
     <input id="def2" type="radio" class="defect" name="defect['a']" value="1" />A 
     <input id="def3" type="radio" class="defect" name="defect['b']" value="1" />B 
     <input id="def4" type="radio" class="defect" name="defect['c']" value="1" />C 
</div> 

Cela vous donnera $ _POST [ 'défaut'] [ 's'], & tc. Vous saurez ainsi quel chemin de mise à jour prendre. Voir http://php.net/faq.html pour plus d'informations sur cette syntaxe.

+0

Des commentaires sur pourquoi le -1? Ce devrait être une solution parfaitement acceptable au problème donné? – TML

+0

ce n'est pas une solution du tout. Tout d'abord ce n'est pas un champ de radiobutton mais 4. –