Problème incrémentation php
sahoumita
Messages postés
52
Date d'inscription
Statut
Membre
Dernière intervention
-
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Alain_42 Messages postés 5361 Date d'inscription Statut Membre Dernière intervention -
Bonjour,je suis entrain de créer un quiz en php et pour cela je doiscréer une page "questions.php" qui permet de selectiionner toutes les question et les réponses que j'ai dans une table" question" pour les mettre sous forme de checkbox et permettre ensuite au formateur de choisir quels questions vont etre dans le quiz et les stocker ensuite dans une table "quiz1" composé de:
num,login,question,rep1,rep2,rep3,rep.
Jusqu'ici c'est bon.
Ce que je dois faire maintenant c'est que je veux inserer dans le champs num (qui n'est pas auto_increment) des nombres de 1 à n, tel que n est le nombre de question existantes,mais malheureusement je n'arrive pas à le faire.
voici mon code qui est chargé de l'insertion:
if ($_SESSION['login'] != '')
{ $pseudo = $_SESSION['login'];
for($i=1;$i<$_SESSION['i'];$i++){
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
}
}
}
Et j'ai essayé de le modifier :
if ($_SESSION['login'] != '')
{ $pseudo = $_SESSION['login'];
$req="select * from quiz1 where login='$pseudo'";
$res=mysql_query($req);
for($i=1;$i<$_SESSION['i'];$i++){
for($j=1;$j<mysql_num_rows($res);$j++){
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('$j','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
}
}
}
mais il n'insere plus rien.
S.V.P aidez-moi car j'ai vraiment besoin de votre aide.
Et merci
num,login,question,rep1,rep2,rep3,rep.
Jusqu'ici c'est bon.
Ce que je dois faire maintenant c'est que je veux inserer dans le champs num (qui n'est pas auto_increment) des nombres de 1 à n, tel que n est le nombre de question existantes,mais malheureusement je n'arrive pas à le faire.
voici mon code qui est chargé de l'insertion:
if ($_SESSION['login'] != '')
{ $pseudo = $_SESSION['login'];
for($i=1;$i<$_SESSION['i'];$i++){
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
}
}
}
Et j'ai essayé de le modifier :
if ($_SESSION['login'] != '')
{ $pseudo = $_SESSION['login'];
$req="select * from quiz1 where login='$pseudo'";
$res=mysql_query($req);
for($i=1;$i<$_SESSION['i'];$i++){
for($j=1;$j<mysql_num_rows($res);$j++){
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('$j','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
}
}
}
mais il n'insere plus rien.
S.V.P aidez-moi car j'ai vraiment besoin de votre aide.
Et merci
A voir également:
- Problème incrémentation php
- Easy php - Télécharger - Divers Web & Internet
- Expert php pinterest - Télécharger - Langages
- Alert php ✓ - Forum PHP
- Retour a la ligne php ✓ - Forum PHP
- Php alert - Forum PHP
8 réponses
^^
Faut toi quelques affichages... notamment de ton $j pour voir si tu n'essayes pas d'insérer des num qui existent déjà.
Je te conseille de faire une requête dans ta boucle for (celle avec le $j) qui va sélectionner à chaque tour le nombre max de num dans ta table.
Là, dans ta requête insert, tu n'auras plu qu'à mettre pour le num cette valeur + 1.
Faut toi quelques affichages... notamment de ton $j pour voir si tu n'essayes pas d'insérer des num qui existent déjà.
Je te conseille de faire une requête dans ta boucle for (celle avec le $j) qui va sélectionner à chaque tour le nombre max de num dans ta table.
Là, dans ta requête insert, tu n'auras plu qu'à mettre pour le num cette valeur + 1.
Voilà comment je le ferais moi :
{
$pseudo = $_SESSION['login'];
$req="select * from quiz1 where login='$pseudo'";
$res=mysql_fetch_row(mysql_query($req));
for($i=1;$i<$_SESSION['i'];$i++)
{
for($j=1;$j<$res[0];$j++)
{
$requete="select MAX(numquest) from quiz1 where login='$pseudo'";
$reponse=mysql_fetch_row(mysql_query($req));
$num=$reponse[0] + 1;
if (isset($_POST['choix'.$i]))
{
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('$num','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
echo "Le num : $num<br>";
echo "Le i : $i"
}
}
}
Mais ça marchera pas je pense. Tu insères $cchoix[i] alors que ta boucle ne fait qu'un i à chaque fois...
A toi de voir...
A quoi sert $_SESSION['i']?
Il manquait des accolades, je pense que c'était juste que tu les avais pas mises dans le post. Mais bon, le code est plu clair avec.
{
$pseudo = $_SESSION['login'];
$req="select * from quiz1 where login='$pseudo'";
$res=mysql_fetch_row(mysql_query($req));
for($i=1;$i<$_SESSION['i'];$i++)
{
for($j=1;$j<$res[0];$j++)
{
$requete="select MAX(numquest) from quiz1 where login='$pseudo'";
$reponse=mysql_fetch_row(mysql_query($req));
$num=$reponse[0] + 1;
if (isset($_POST['choix'.$i]))
{
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('$num','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
echo "Le num : $num<br>";
echo "Le i : $i"
}
}
}
Mais ça marchera pas je pense. Tu insères $cchoix[i] alors que ta boucle ne fait qu'un i à chaque fois...
A toi de voir...
A quoi sert $_SESSION['i']?
Il manquait des accolades, je pense que c'était juste que tu les avais pas mises dans le post. Mais bon, le code est plu clair avec.
if ($_SESSION['login'] != '') { $pseudo = $_SESSION['login']; $req="select * from quiz1 where login='$pseudo'"; $res=mysql_query($req); //TEST echo "Valeur SESSION[i]: ".$_SESSION['i']."<br />"; echo "Nombre enr trouves: ".mysql_num_rows($res)."<br />"; for($i=1;$i<$_SESSION['i'];$i++){ for($j=1;$j<mysql_num_rows($res);$j++){ if (isset($_POST['choix'.$i])){ $choix=$_POST['choix'.$i]; //si tu as un name different pour chaque checbox comme il semble ici //pourquoi ligne ci dessous tu considères $choix comme un array ?? $sql1 ="insert into quiz1 values ('$j','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')"; $res = mysql_query($sql1); } } } }
j'ai essayé de faire les echos que tu m'as proposé mais rien ne s'insere aussi.
on me donne le nombre trouve : 0
et a propos d'"insert" elle ne me pose pas de probleme mais si tu as de solution de mieux je suis prenante.
on me donne le nombre trouve : 0
et a propos d'"insert" elle ne me pose pas de probleme mais si tu as de solution de mieux je suis prenante.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
les echos ne sont pas la pour inserer mai spour voir si tu as bien les valeurs attendues
déja tu peux remarquer que le nombre trouvé est = 0 donc aucune chance d'inserer qq chose
déja tu peux remarquer que le nombre trouvé est = 0 donc aucune chance d'inserer qq chose
Si dans la boucle for tu écris echo $i et qu'il t'affiche juste 0, c'est qu'il y a un soucis avec ton $_SESSION['i'].
Essaye de chercher de ce côté...
Essaye de chercher de ce côté...
je t'ai mis deux echo pour voir les valeurs:
echo "Valeur SESSION[i]: ".$_SESSION['i']."<br />";
echo "Nombre enr trouves: ".mysql_num_rows($res)."<br />";
donnes nous ce qu'ils sortent
echo "Valeur SESSION[i]: ".$_SESSION['i']."<br />";
echo "Nombre enr trouves: ".mysql_num_rows($res)."<br />";
donnes nous ce qu'ils sortent
Ok le fait qu'aucun enr ne soit trouvé veux dire que ta requette a un pb
fais un echo "pseudo: ".$pseudo pour voir si tu as bien cette valeur
de plus dans ces boucles:
for($i=1;$i<$_SESSION['i'];$i++){
for($j=1;$j<mysql_num_rows($res);$j++){
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
//si tu as un name different pour chaque checbox comme il semble ici
//pourquoi ligne ci dessous tu considères $choix comme un array ??
$sql1 ="insert into quiz1 values ('$j','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
}
}
}
a quoi sert la boucle sur $j puisque cette variable n'apparait nulle part dans la boucle ?
fais un echo "pseudo: ".$pseudo pour voir si tu as bien cette valeur
de plus dans ces boucles:
for($i=1;$i<$_SESSION['i'];$i++){
for($j=1;$j<mysql_num_rows($res);$j++){
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
//si tu as un name different pour chaque checbox comme il semble ici
//pourquoi ligne ci dessous tu considères $choix comme un array ??
$sql1 ="insert into quiz1 values ('$j','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
}
}
}
a quoi sert la boucle sur $j puisque cette variable n'apparait nulle part dans la boucle ?
d'apres ce que j'ai compris de ce que t'as dit voila ce que j'ai modifié:
{$pseudo = $_SESSION['login'];
$req="select * from quiz1 where login='$pseudo'";
$res=mysql_query($req);
//$resa=mysql_num_rows($res);
for($i=1;$i<$_SESSION['i'];$i++){
for($j=1;$j<$res;$j++){
$requete="select MAX(numquest) from quiz1 where login='$pseudo'";
$reponse=mysql_query($req);
$num=$reponse++;
if (isset($_POST['choix'.$i])){
$choix=$_POST['choix'.$i];
$sql1 ="insert into quiz1 values ('$num','$pseudo','".$choix[0]."','".$choix[1]."','".$choix[2]."','".$choix[3]."','".$choix[4]."','".$choix[5]."')";
$res = mysql_query($sql1);
echo"$num";
mais ça n'insere rien du tout....
peut etre que je n'ai pas bien modifié puisque je ne suis que débutante en php/mysql ,alors j'attends ton aide.Et merci