Traiter les données checkbox d'un formulaire
Résolu/Fermé
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
-
26 août 2007 à 20:34
Clicky Messages postés 18 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 26 août 2009 - 5 sept. 2007 à 14:16
Clicky Messages postés 18 Date d'inscription mardi 25 janvier 2005 Statut Membre Dernière intervention 26 août 2009 - 5 sept. 2007 à 14:16
A voir également:
- Traiter les données checkbox d'un formulaire
- Formulaire de réclamation facebook - Guide
- Effacer les données de navigation - Guide
- Comment sauvegarder toutes les données de mon téléphone - Guide
- Reinstaller windows sans perte de données - Guide
- Comment s'appelle la mémoire volatile, d'accès rapide où se trouvent les données en cours de traitement dans un ordinateur ? ✓ - Forum Matériel & Système
17 réponses
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
26 août 2007 à 22:56
26 août 2007 à 22:56
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.
gabuzo
Messages postés
736
Date d'inscription
mardi 21 août 2007
Statut
Membre
Dernière intervention
17 avril 2008
58
26 août 2007 à 20:50
26 août 2007 à 20:50
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
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
26 août 2007 à 20:52
26 août 2007 à 20:52
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.
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
26 août 2007 à 21:22
26 août 2007 à 21:22
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
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
27 août 2007 à 00:22
27 août 2007 à 00:22
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 !
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
27 août 2007 à 09:28
27 août 2007 à 09:28
salut,
alors bon courage pour la suite !
et n'oublie pas de marquer le post comme 'résolu'.
-;o)
alors bon courage pour la suite !
et n'oublie pas de marquer le post comme 'résolu'.
-;o)
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
27 août 2007 à 10:33
27 août 2007 à 10:33
Bonjour,
J'ai de quoi m'occuper oui.. :D
Merci beaucoup.
À bientôt.
J'ai de quoi m'occuper oui.. :D
Merci beaucoup.
À bientôt.
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
4 sept. 2007 à 00:44
4 sept. 2007 à 00:44
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.
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
4 sept. 2007 à 00:47
4 sept. 2007 à 00:47
Le "non résolu" n'a pas été pris en compte alors je le fais là..
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
4 sept. 2007 à 00:53
4 sept. 2007 à 00:53
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()); }
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
4 sept. 2007 à 01:21
4 sept. 2007 à 01:21
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 ;)
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
4 sept. 2007 à 08:34
4 sept. 2007 à 08:34
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"); }
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
4 sept. 2007 à 22:52
4 sept. 2007 à 22:52
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
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
4 sept. 2007 à 22:57
4 sept. 2007 à 22:57
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()); } ?>
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
4 sept. 2007 à 23:50
4 sept. 2007 à 23:50
Ç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.
Dalida
Messages postés
6728
Date d'inscription
mardi 14 mai 2002
Statut
Contributeur
Dernière intervention
11 janvier 2016
922
5 sept. 2007 à 00:17
5 sept. 2007 à 00:17
ah oui !
remplace le par deux apostrophes !
remplace le par deux apostrophes !
''
Clicky
Messages postés
18
Date d'inscription
mardi 25 janvier 2005
Statut
Membre
Dernière intervention
26 août 2009
2
5 sept. 2007 à 14:16
5 sept. 2007 à 14:16
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.