Pb checkbox et insertion dans la base

Fermé
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009 - 28 avril 2009 à 11:32
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009 - 29 avril 2009 à 10:48
Salut tout le monde,
est-ce-qu'il y a quelqu'un qui peut m'aider sur un probleme qui me bloque depuis des jours?
Bon, je suis entrain de créer un site en php qui contiendera des quizs pour étudiants.
Ce qui m'est demandé de faire c'est qu'à chaque fois qu'un enseignat veut créer un quiz il doit avoir toutes les question qui existent dans la base MYSQL avec leurs réponses biensur.Ces questions/reponses doive,t etre affichés sous forme des checkboxs afin qu'il puisse choisir ce qui lui convient.
Jusqu'ici, tout ce travail j'ai arrivé à le faire mais le probleme c'est que lorsque je coche plus d'une question avec ses reponses, seuls les premieres reponses cochées s'inserent dans la base pour toutes les questions chochées.
Et voici le code que j'utilise:(questions.php)

<?php
session_start();
if (isset($_POST['choix1']))
{
$choix1=$_POST['choix1'];
}
if (isset($_POST['choix2']))
{
$choix2=$_POST['choix2'];
}
if (isset($_POST['choix3']))
{
$choix3=$_POST['choix3'];
}
if (isset($_POST['choix4']))
{
$choix4=$_POST['choix4'];
}
if (isset($_POST['choix5']))
{
$choix5=$_POST['choix5'];
}

$link = mysql_connect("localhost", "root", "")
or die("Impossible de se connecter : " . mysql_error());
mysql_select_db ("database1", $link) or die ("Acces a database1 impossible");

$sql = " SELECT * FROM questionnaire";
$result = mysql_query($sql) or die("Requete pas comprise");
echo "<form action='questions.php' method='POST'>";
echo"<p align='center'><font face='courriel' size=+3> Questions:</font></p><br><br><br>";
while ($row=mysql_fetch_array($result))
{
echo"<table width=70% align='center'>";
echo"<p id='choix'><label></label>";
echo "<tr><td colspan=2><input type='checkbox' name='choix[]' value='$row[question]' />$row[question]</td>";
echo "<tr><td width=20%>1ere reponse:<td><input type='checkbox' name='choix1' value='$row[rep1]' />$row[rep1]</td>";
echo "<tr><td width=20%>2eme reponse:<td><input type='checkbox' name='choix2' value='$row[rep2]' />$row[rep2]</td>";
echo "<tr><td width=20%>3eme reponse:<td><input type='checkbox' name='choix3' value='$row[rep3]' />$row[rep3]</td>";
echo "<tr><td width=20%>4eme reponse:<td><input type='checkbox' name='choix4' value='$row[rep4]' />$row[rep4]</td>";
echo "<tr><td width=20%>La bonne reponse:<td><input type='checkbox' name='choix5' value='$row[rep]' />$row[rep]</td> ";
echo"</table>";
}
for ($i=0;$i<count($_POST['choix']);$i++)
{
$sql1 = "insert into quiz1 values ('','".$_POST['choix'][$i]."','".$choix1."','".$choix2."','".$choix3."','".$choix4."','".$choix5."')";
$res = mysql_query($sql1);
}
echo"<p align='center'><input type='submit'name='next' value='Next'></p>";
echo"</form>";
mysql_close($link);
?>



J'espere que j'ai été assez clair, et j'attends votre aide car je ne trouve plus de solutions et je n'ai meme pas beaucoup de temps pour trouver de solution à ce problème.
A voir également:

7 réponses

Profil bloqué
28 avril 2009 à 15:28
Vjr,essaye de faire un echo de ça : count($_POST['choix']); dans ta page afin de connaitre le nombre de ligne k ça renvoie:

echo count($_POST['choix']);
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 15:37
merci d'abord pour la réponse.
Mais je ne vois pas en koi ce count va me servir?? car lorsque je l'ai testé il me donne vraiment le numéro de questions que j'ai coché mais mon probleme c'est que meme si les questions changent,seuls les réponses de la 1ere question cochée entrent pour toutes les questions.
J'espere que tu m'as compris maintenant?
0
Profil bloqué
28 avril 2009 à 15:59
l'objectif du count que je venais de te demander était de connaitre le nombre d'élements présumé qui devrait être inséré dans la base,tu en trouve combien en lançant le echo ??
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 16:27
je l'ai testé et quand je coche 2 questions il me donne 2 si je coche 3 questions il m'affiche 3.
0
Profil bloqué
28 avril 2009 à 16:47
cé déjà bien,mai sje voudrais savoir,aprés avoir coché esk le script insére des tuples ou un tuple?
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 17:00
maintenant quans je coche une seule question,cette question est inserée correctement dans la base avec ses réponses;mais quand je coche plus d'une seule question,par exemple,si je coche 2 questions:les 2 questions seront enregistrées dans la table "quiz1",mais les réponses de la 2 eme question sont les memes reponses de la premiere question.
0
Profil bloqué
28 avril 2009 à 17:04
Ce qui veut dire k le premier tuple est répété,ok essayer de cocher 3 questions maintenant.
ça donne koi ??
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 17:18
meme resultat meme si je coche 100 questions,les questions changeront mais les reponses seront tous les memes,ce sont les reponses de la 1 ere question cochée
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Profil bloqué
28 avril 2009 à 17:32
Au niveau de tes name de tes checkbox par exemple
pour : name='choix1'
tu remplace par :
par : name='choix[]',

ainsi que pour les autres,cétadir,choix2,choix3,etc ... pour voir.
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 17:39
mais si je les remplacent comme tu dis au niveau d'"insert i,to..." qu'est-ce-que je dois mettre à la place de $choix1,$choix2...........????????
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
28 avril 2009 à 17:40
Et faudrait peut-etre préciser les index dans choix[], controler les valeurs avant insertion, utiliser foreach au lieu de ce for affreux, et surtout repenser tes tables, parce que quiz1, j'imagine que tu vas faire une table par quiz...
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 17:45
oui c'est ce que j'ai l'intention de faire, je vais créer pour chaque quiz une tabla à part,mais pour l'instant je veux juste que ce test marche pour créer d'autre table.
Pur le foreach que t'as proposé est-ce-que tu peux me dire exactement comment les integrer dans mon code parceque je n'ai aucune idée de ce foreach.
Et merci d'avance
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85 > sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 18:01
Non, justement on ne fait pas une table par quiz.

Donc repart du début en créant un schéma de tables adéquat, pour ton bien.

TABLE quiz ( id_quiz, nom_quiz, etc...)

TABLE quiz_question (id_quiz, id_question, question, etc...)

TABLE quiz_question_item (id_item, id_question, item, etc..)

Éventuellement une table pour les réponses, si tu veux enregistrer les résultats, etc...

En n'oubliant pas de mettre des clefs étrangères sur tes tables.
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009 > P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009
29 avril 2009 à 10:48
oui effectivement,j'ai deja une table questions pour les questions et reponses et d'autres qui seront pour les quizz mais maintenant juste pour ce test pouvoir inserer mes donees correctement et apres j'essaierai de revoir avec les tables.donc merci pour ta proposition mais n'as-tu-pas de solutions pour ce code là?
0
Profil bloqué
28 avril 2009 à 17:46
laisse la requete insert into telle qu'elle est et teste.
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
28 avril 2009 à 17:55
ok j'ai testé et maintenant il insere toutes les questions et les reponses cochées mais le probleme c'est qu'il insere le tout dans la colonne "questions" sous forme des lignes.
alors que faire maintenant?
0