Je suis en train d'essayer de mettre au point un petit concours.
Il y a les inscrits, les votants (qui eux ne sont inscrits nulle part), les critères de vote (par checkbox, plusieurs choix possible) et j'aimerais enregistrer le résultat des checkbox choisis dans une table qui lie tout le petit monde décrit plus haut.
J'ai une première table pour les inscrits, une seconde pour les votants, une troisième pour les critères qui sont déjà dedans, et la quatrième qui sert de liaison entre les trois première :
Code : Tout sélectionner
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;Extrait de mon formulaire :
Code : Tout sélectionner
<form method="post" action="vote_gars_traitement.php">
<fieldset><legend>Formulaire de vote</legend><br />
<input type="hidden" name="inscrit_id" value="<?php echo $_GET['inscrit_id']; ?>" />
<input type="hidden" name="inscrit_pseudo" value="<?php echo $_GET['inscrit_pseudo']; ?>" />
<input type="hidden" name="votant_id" value="<?php echo $_POST['votant_id']; ?>" />
Vous trouvez ce concurrent :<br />
(Vous avez droit à plusieurs choix)<br /><br />
<input type="checkbox" name="critere_valeur[a]" value="a"> Bon animateur.<br />
<input type="checkbox" name="critere_valeur[b]" value="b>"> Préfère le dialogue aux remballages.<br />
<input type="checkbox" name="critere_valeur[c]" value="c>"> Prêt à aider les nouveaux venus.<br />
<input type="checkbox" name="critere_valeur[d]" value="d>"> Toujours courtois.<br />$critere_valeur = $_POST['critere_valeur'];
//On vérifie que les champs ne continennent pas de html
$inscrit_id = mysql_real_escape_string(htmlentities($_POST['inscrit_id']));
$inscrit_pseudo = mysql_real_escape_string(htmlentities($_POST['inscrit_pseudo']));
$votant_id = mysql_real_escape_string(htmlentities($_POST['votant_id']));
if (isset($_POST["critere_valeur"]))
{
$critere_valeur = $_POST["critere_valeur"];
mysql_query("
INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur)
VALUES ('', '".$_POST['votant_id']."', '".$_POST['inscrit_id']."', '".$_POST['critere_valeur']."') ") or die (mysql_error());
}
Mais peut-être qu'il faut que je fasse les isset sur toutes les checkbox (critere_valeur[a], critere_valeur, etc..) et qu'ensuite, je fasse ma requête INSERT INTO en répètant l'opération pour chaque checkbox, genre :INSERT INTO concours_insc_crit_vot (icv_id, icv_votant_id, icv_inscrit_id, icv_valeur)
VALUES ('', '".$_POST['votant_id']."', '".$_POST['inscrit_id']."', '".$_POST['critere_valeur[a]']."'), ('', '".$_POST['votant_id']."', '".$_POST['inscrit_id']."', '".$_POST['critere_valeur']."'), etc..") or die (mysql_error());
J'en ai écrit un peu long, mais les explications me semblaient utiles.
Pourriez-vous m'aider pour ce genre de cas s'il vous plaît ?
Par avance, merci.
Ce que l'on apprend par l'effort reste toujours ancré beaucoup plus longtemps.