Pb checkbox et insertion dans la base
sahoumita
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
sahoumita Messages postés 52 Date d'inscription Statut Membre Dernière intervention -
sahoumita Messages postés 52 Date d'inscription Statut Membre Dernière intervention -
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.
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:
- Pb checkbox et insertion dans la base
- Base de registre - Guide
- Touche insertion clavier - Guide
- Insertion sommaire word - Guide
- Insertion filigrane word - Guide
- Insertion liste déroulante excel - Guide
7 réponses
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']);
echo count($_POST['choix']);
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 ??
cé déjà bien,mai sje voudrais savoir,aprés avoir coché esk le script insére des tuples ou un tuple?
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.
Ce qui veut dire k le premier tuple est répété,ok essayer de cocher 3 questions maintenant.
ça donne koi ??
ça donne koi ??
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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.
pour : name='choix1'
tu remplace par :
par : name='choix[]',
ainsi que pour les autres,cétadir,choix2,choix3,etc ... pour voir.
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...
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
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
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.
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.
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à?
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?