Traiter les données checkbox d'un formulaire
Résolu
Clicky
Messages postés
18
Date d'inscription
Statut
Membre
Dernière intervention
-
Clicky Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
Clicky Messages postés 18 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Traiter les données checkbox d'un formulaire
- Whatsapp formulaire opposition - Guide
- Fuite données maif - Guide
- Formulaire de réclamation facebook - Guide
- Supprimer les données de navigation - Guide
- Formulaire de reclamation instagram - Guide
17 réponses
tu as ce qu'il te faut !
un as de la bdd te diras sans doute qu'on peut faire plus économe en ressource et mieux conçu, mais ça doit amplement suffire.
pour 'concours_criteres' tu insères :
… auto, 'Bon animateur'
… auto, 'Assez à l''écoute'
… auto, 'Répondant aux demandes d'aide'
… auto, 'Toujours courtois'
imagine que je sois un votant (id_votant=007) et toi une inscrite (id_inscrit=001).
je te juge "Bon animateur" (id_critere=0) et "Toujours courtois" (id_critere=3).
dans 'concours_insc_crit_vot' tu insères :
… auto, 007, 01, 0
… auto, 007, 01, 3
après tu l'exploiteras en faisant des comptages de lignes et/ou des moyennes.
"mais quoi qu'il y ait eu comme choix de fait, ils s'enregistrent tous, pas pratique"
que veux tu dire par là ???
si je ne vote que pour deux critères seuls ces deux là seront enregistrés pour ce votant et cette inscrite.
un as de la bdd te diras sans doute qu'on peut faire plus économe en ressource et mieux conçu, mais ça doit amplement suffire.
pour 'concours_criteres' tu insères :
… auto, 'Bon animateur'
… auto, 'Assez à l''écoute'
… auto, 'Répondant aux demandes d'aide'
… auto, 'Toujours courtois'
imagine que je sois un votant (id_votant=007) et toi une inscrite (id_inscrit=001).
je te juge "Bon animateur" (id_critere=0) et "Toujours courtois" (id_critere=3).
dans 'concours_insc_crit_vot' tu insères :
… auto, 007, 01, 0
… auto, 007, 01, 3
après tu l'exploiteras en faisant des comptages de lignes et/ou des moyennes.
"mais quoi qu'il y ait eu comme choix de fait, ils s'enregistrent tous, pas pratique"
que veux tu dire par là ???
si je ne vote que pour deux critères seuls ces deux là seront enregistrés pour ce votant et cette inscrite.
Checkbox : case à cocher
Radio button insérée dans une data box = 1 choix unique
Après, on peut sélectionner à l'enregistrement si toutes les données utiles ont été entrées
Radio button insérée dans une data box = 1 choix unique
Après, on peut sélectionner à l'enregistrement si toutes les données utiles ont été entrées
salut,
je suppose que tu veux effectuer un classement.
tu dois avoir un table qui contient les concurrents (avec par exemple un 'id_concurrent')
tu fais une table 'concours' qui doit contenir un champ qui pointe vers le critère et un autre qui pointe vers le concurrent.
comme ça tu pourra faire des tris et des opérations par critère ou par concurrent.
si un concurrent as deux critères, tu insères deux lignes.
je suppose que tu veux effectuer un classement.
tu dois avoir un table qui contient les concurrents (avec par exemple un 'id_concurrent')
tu fais une table 'concours' qui doit contenir un champ qui pointe vers le critère et un autre qui pointe vers le concurrent.
comme ça tu pourra faire des tris et des opérations par critère ou par concurrent.
`concours`
• id
• concurrent
• critere
si un concurrent as deux critères, tu insères deux lignes.
Merci pour les réponses rapides.
En fait oui, c'est un genre de classement.
J'ai plusieurs tables, une pour l'inscrit, une pour le votant, une pour les critères et une dernière censée lier les trois premières :
Je bloque déjà pour faire entrer les choix de critères dans la table `concours_criteres`, j'ai essayé avec un
mais quoi qu'il y ait eu comme choix de fait, ils s'enregistrent tous, pas pratique.
Je sens que je vais m'amuser pour remplir la dernière table..
Merci.
En fait oui, c'est un genre de classement.
J'ai plusieurs tables, une pour l'inscrit, une pour le votant, une pour les critères et une dernière censée lier les trois premières :
CREATE TABLE `concours_inscrits` ( `inscrit_id` int(11) NOT NULL auto_increment, `inscrit_ip` varchar(15) NOT NULL default '', `inscrit_pseudo` varchar(50) NOT NULL default '', `inscrit_description` text NOT NULL, `inscrit_email` varchar(250) NOT NULL default '', `inscrit_sexe` enum('a','n','g') NOT NULL default 'a', `inscrit_valid` bigint(1) default '0', PRIMARY KEY (`inscrit_id`), KEY `id` (`inscrit_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE `concours_criteres` ( `critere_id` int(11) NOT NULL auto_increment, `critere_nom` varchar(50) NOT NULL default '', PRIMARY KEY (`critere_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE `concours_votants` ( `votant_id` int(11) NOT NULL auto_increment, `votant_ip` varchar(15) NOT NULL default '', `votant_email` varchar(250) NOT NULL default '', PRIMARY KEY (`votant_id`), KEY `id` (`votant_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ; CREATE TABLE `concours_insc_crit_vot` ( `icv_crit_id` int(11) NOT NULL default '0', `icv_votant_id` int(11) NOT NULL default '0', `icv_inscrit_id` int(11) NOT NULL default '0', `icv_valeur` char(1) NOT NULL default '0', PRIMARY KEY (`icv_crit_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
Je bloque déjà pour faire entrer les choix de critères dans la table `concours_criteres`, j'ai essayé avec un
INSERT INTO concours_criteres(crit_id, crit_nom) VALUES ('', 'Bon animateur'), ('', 'Assez à l''écoute') etc..;
mais quoi qu'il y ait eu comme choix de fait, ils s'enregistrent tous, pas pratique.
Je sens que je vais m'amuser pour remplir la dernière table..
Merci.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir,
C'est ce que j'appelle une réponse enthousiaste et motivante Dalida !
" "mais quoi qu'il y ait eu comme choix de fait, ils s'enregistrent tous, pas pratique"
que veux tu dire par là ???
si je ne vote que pour deux critères seuls ces deux là seront enregistrés pour ce votant et cette inscrite."
En fait, j'essayais comme une andouille de rentrer les critères choisis, dans la tables `concours_criteres`, qui les a déjà tous, et apparemment, je devais mal concevoir ma requête pour l'insertion, parce que même si je choisissais un, deux, trois ou les quatre critères, dans tous les cas ils s'enregistraient tous dans la table, mais je viens de comprendre qu'il n'y avait juste besoin que de faire entrer les données choisies dans la dernière table `concours_insc_crit_vot`.
Ça me paraît un peu plus limpide maintenant, reste plus qu'à mettre tout ça par écrit, faire des tests et enfin, faire les calculs pour l'affichage des résultats.
Je vais pouvoir continuer, enfin essayer du moins parce que j'ai encore beaucoup à apprendre.
En tout cas, je te remercie beaucoup pour ton aide éclairant ma lanterne.
À bientôt !
C'est ce que j'appelle une réponse enthousiaste et motivante Dalida !
" "mais quoi qu'il y ait eu comme choix de fait, ils s'enregistrent tous, pas pratique"
que veux tu dire par là ???
si je ne vote que pour deux critères seuls ces deux là seront enregistrés pour ce votant et cette inscrite."
En fait, j'essayais comme une andouille de rentrer les critères choisis, dans la tables `concours_criteres`, qui les a déjà tous, et apparemment, je devais mal concevoir ma requête pour l'insertion, parce que même si je choisissais un, deux, trois ou les quatre critères, dans tous les cas ils s'enregistraient tous dans la table, mais je viens de comprendre qu'il n'y avait juste besoin que de faire entrer les données choisies dans la dernière table `concours_insc_crit_vot`.
Ça me paraît un peu plus limpide maintenant, reste plus qu'à mettre tout ça par écrit, faire des tests et enfin, faire les calculs pour l'affichage des résultats.
Je vais pouvoir continuer, enfin essayer du moins parce que j'ai encore beaucoup à apprendre.
En tout cas, je te remercie beaucoup pour ton aide éclairant ma lanterne.
À bientôt !
Bonsoir,
Je me permets de remettre le topic en "non résolu" parce que j'ai un problème avec ma requête censée enregistrer les donnèes dans la dernière table.
Si par exemple je choisie les deux premiers critères dans mon formulaire,
la requête me rentre deux fois le premier critère et une fois le second dans le champ `icv_valeur`,
comme ceci :
https://i19.servimg.com/u/f19/11/09/74/62/table_11.jpg
Et si je choisie les trois premiers critères, ça m'enregistre les données de la façon suivante :
https://i19.servimg.com/u/f19/11/09/74/62/table_12.jpg
1, puis 1 et 2, puis 1, 2 et 3..
En fait, je ne devrais avoir que les trois dernières entrées pour bien faire..
j'utilise ce code :
Est-ce que quelqu'un pourrait m'aider à résoudre ce problème s'il vous plaît ?
Merci d'avance.
Je me permets de remettre le topic en "non résolu" parce que j'ai un problème avec ma requête censée enregistrer les donnèes dans la dernière table.
Si par exemple je choisie les deux premiers critères dans mon formulaire,
la requête me rentre deux fois le premier critère et une fois le second dans le champ `icv_valeur`,
comme ceci :
https://i19.servimg.com/u/f19/11/09/74/62/table_11.jpg
Et si je choisie les trois premiers critères, ça m'enregistre les données de la façon suivante :
https://i19.servimg.com/u/f19/11/09/74/62/table_12.jpg
1, puis 1 et 2, puis 1, 2 et 3..
En fait, je ne devrais avoir que les trois dernières entrées pour bien faire..
j'utilise ce code :
$nb_critere = array(1 => 0, 1, 2, 3); $values = array(); for($i=0; $i<sizeof($nb_critere); $i++) { if (isset($_POST['critere_nom'][$i])) { $values[] = '( NULL , "' . mysql_real_escape_string(htmlentities($_POST['votant_id'])) . '", "' . mysql_real_escape_string(htmlentities($_POST['inscrit_id'])) . '", "' . mysql_real_escape_string(htmlentities($_POST['critere_nom'][$i])) . '")'; $req = "INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur) VALUES " . implode( ',' , $values ) . ';'; $result = mysql_query($req) or die ("erreur sql : Impossible de sauvegarder les données. ".mysql_error()); } }
Est-ce que quelqu'un pourrait m'aider à résoudre ce problème s'il vous plaît ?
Merci d'avance.
salut,
Je me permets de remettre le topic en "non résolu"
c'est toi l'chef, chef !
au lieu du 'for' couplé au 'if' essaie :
Je me permets de remettre le topic en "non résolu"
c'est toi l'chef, chef !
au lieu du 'for' couplé au 'if' essaie :
foreach ($_POST['critere_nom'] as $critere) { $values[] = '( NULL , "' . mysql_real_escape_string(htmlentities($_POST['votant_id'])) . '", "' . mysql_real_escape_string(htmlentities($_POST['inscrit_id'])) . '", "' . mysql_real_escape_string(htmlentities($critere)) . '")'; $req = "INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur) VALUES " . implode( ',' , $values ) . ';'; $result = mysql_query($req) or die ("erreur sql : Impossible de sauvegarder les données. ".mysql_error()); }
Je viens d'essayer, et j'ai le même problème :/
Je me demande s'il n'y a pas un problème du côté de l'array..
Merci beaucoup pour ton aide et ta rapidité de réponse en tout cas ;)
Je me demande s'il n'y a pas un problème du côté de l'array..
Merci beaucoup pour ton aide et ta rapidité de réponse en tout cas ;)
salut,
pour vérifier le contenu de ta variable :
pour vérifier le contenu de ta variable :
foreach ($_POST['critere_nom'] as $key => $value) { echo("<p>clé = $key ; valeur = $value</p>\n"); }
Bonsoir,
J'ai essayé, ça m'a affiché :
J'avais bien choisie les critères 2 et 3.
J'ai essayé ensuite avec la requête mais ça m'enregistre toujours trois lignes au lieu de deux, à moins qu'il faille changer certains paramètres, au vu de ton dernier foreach.
Je viens de ré-essayer en faisant :
Toujours pareil. Il doit bien y avoir un moyen que ça marche quand même.. :D
J'ai essayé, ça m'a affiché :
clé = 0 ; valeur = 2 clé = 1 ; valeur = 3
J'avais bien choisie les critères 2 et 3.
J'ai essayé ensuite avec la requête mais ça m'enregistre toujours trois lignes au lieu de deux, à moins qu'il faille changer certains paramètres, au vu de ton dernier foreach.
Je viens de ré-essayer en faisant :
$critere_nom = array(1 => 0, 1, 2, 3); $values = array(); foreach ($_POST['critere_nom'] as $key => $value) { $values[] = '( NULL , "' . mysql_real_escape_string(htmlentities($_POST['votant_id'])) . '", "' . mysql_real_escape_string(htmlentities($_POST['inscrit_id'])) . '", "' . mysql_real_escape_string(htmlentities($value)) . '")'; $req = "INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur) VALUES " . implode( ',' , $values ) . ';'; $result = mysql_query($req) or die ("erreur sql : Impossible de sauvegarder les données. ".mysql_error()); }
Toujours pareil. Il doit bien y avoir un moyen que ça marche quand même.. :D
je te propose ma version, je pense que ta façon d'entrer les données dans '$values' n'est pas bonne.
essaie en remplaçant exactement ce que tu as copié par :
essaie en remplaçant exactement ce que tu as copié par :
<?php foreach ($_POST['critere_nom'] as $value) { $values = array( NULL , '"'.mysql_real_escape_string(htmlentities($_POST['votant_id'])).'"', '"'.mysql_real_escape_string(htmlentities($_POST['inscrit_id'])).'"', '"'.mysql_real_escape_string(htmlentities($value)).'"' ); $req = "INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur) VALUES " . implode( ',' , $values ) . ';'; $result = mysql_query($req) or die ("erreur sql : Impossible de sauvegarder les données. ".mysql_error()); } ?>
Ça ne marche toujours pas, j'ai ce message d'erreur :
77, 21 et 3 sont dans l'ordre : l'id du votant, l'id de l'inscrit et le premier des checkbox choisis (les 3 et 4) donc le 3.
On dirait que la façon dont est écrit "NULL" ne lui convient pas.
erreur sql : Impossible de sauvegarder les données. Erreur de syntaxe près de '"77","21","3"' à la ligne 3
77, 21 et 3 sont dans l'ordre : l'id du votant, l'id de l'inscrit et le premier des checkbox choisis (les 3 et 4) donc le 3.
On dirait que la façon dont est écrit "NULL" ne lui convient pas.
Bonjour,
Ça n'a pas marché, j'avais toujours ce problème de syntaxe, mais depuis, on m'a conseillé ceci :
Et ça marche bien \o/ problème résolu donc.
Merci pour ton aide ;o)
À bientôt.
Ça n'a pas marché, j'avais toujours ce problème de syntaxe, mais depuis, on m'a conseillé ceci :
foreach ($_POST['critere_nom'] as $key=>$critere){ $values = '( NULL , "' . mysql_real_escape_string(htmlentities($_POST['votant_id'])) . '", "' . mysql_real_escape_string(htmlentities($_POST['inscrit_id'])) . '", "' . mysql_real_escape_string(htmlentities($critere)) .'")'; $req = "INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur) VALUES ".$values.';'; $result = mysql_query($req) or die ("erreur sql : Impossible de sauvegarder les données. ".mysql_error()); }
Et ça marche bien \o/ problème résolu donc.
Merci pour ton aide ;o)
À bientôt.