Problème incrémentation php

Fermé
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009 - 5 mai 2009 à 16:37
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 6 mai 2009 à 20:04
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
A voir également:

8 réponses

Utilisateur anonyme
5 mai 2009 à 20:50
^^
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.
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
6 mai 2009 à 01:09
merci pour ta reponse ,
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
0
Utilisateur anonyme
6 mai 2009 à 09:39
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.
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mai 2009 à 10:00
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);
			}
		}
	} 
}
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
6 mai 2009 à 11:07
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.
0

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

Posez votre question
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mai 2009 à 12:35
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
0
Utilisateur anonyme
6 mai 2009 à 14:00
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é...
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mai 2009 à 14:05
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
0
sahoumita Messages postés 52 Date d'inscription lundi 10 novembre 2008 Statut Membre Dernière intervention 30 juin 2009
6 mai 2009 à 17:46
Voila ce qu'il me donnent:
Valeur SESSION[i]:21
Nombre enr trouves:0
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
6 mai 2009 à 20:04
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 ?
0