Pb php/mysql recuperer numero dans un tableau

Résolu
marie77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention   -  
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   -
bonjour, à tous, voilà j'ai un tit problème.

Je voudrais récupérer des variables que j'ai listé dans un tableau préalablement créer soit des n° de coupon.

Mais je n'arrive qu'à en récupérer un seul sur le nbre x qu'il peut y avoir.

Logiciel, programme utilisé :
-phpmyadm 2.6.1
-mysql 4.1.9
-PHP 4.3.10

Voila tout d'abord fichier pre info :
<?
include("connect_bd.php");
$num=$_GET['var1'];
$nom=$_GET['var2'];

echo"<form action='verif_facture.php'>
<center><h1><font color=blue>Editer la facture de : $nom </h1></font></center>";

$sql="select coupon.num_coupon,coupon.nom_eleve,nb_h,
eleve.num_eleve,eleve.civilite_eleve,num_rue_eleve,rue_eleve,
cp_eleve,ville_eleve,pt_cadeau_eleve
FROM coupon,eleve
WHERE eleve.num_eleve=coupon.num_eleve
and coupon.etat_facture='attente'
AND eleve.num_eleve=('$num')";

$req=mysql_query($sql)or die ("error de connexion");

//echo $req ;

$nb=mysql_num_rows($req);//nbre de ligne du résultat de la requete

echo'<table align=center bgcolor=blue border=0 cellspacing=5>';
$i=0;

while($resultat=mysql_fetch_array($req))
// creation tableau pour afficher resultat de la requete
{
// les mettres qu'entre les $RESULTAT permet d'eviter de répéter les meme DONNER
$num_coupon=$resultat['num_coupon'];
$num=$resultat['num_eleve'];

//echo '<br>'.$num_coupon;
// BUT pouvoir garder une trace des N° coupon afin aprés de les déclarer en Etat_facture=valider Mais on les cache

// ." . $i . " permet de compter les numéros
echo "<input type=hidden name=num_coupon_".$i ." value=".$num_coupon."></td></tr>";
$i=$i+1;
echo "<input type='hidden' name='i' value='$i'></td></tr>";
echo $i;
}
echo "<tr><td align=center>N° de l'élève : </td><td align=center><input name='num' value='$num'></td></tr>";

...
echo'<div align=center><input type="submit" name="Valider" value="Valider"></div></form> ';
?>

PUIS sa renvoie donc au fichier VERIF : qui creer le tableau pour récupérer n° coupon

<?
//session_start();
include('connect_bd.php');
$nom=$_GET['nom'];
$i=$_GET['i'];

// Vérification si facture déjà fait au nom donné
{
$sql="select * from facture,eleve,coupon
where nom_eleve_facture=('$nom') ";

/*
BUT essayer de s'occuper des num_coupons
$num=$_GET['num'];
AND facture.num_eleve=('$num')
and facture.num_eleve=eleve.num_eleve
and eleve.num_eleve=coupon.num_eleve
and coupon.etat_facture='attente'*/
$req=mysql_query($sql)or die('erreur');

$nb=mysql_num_rows($req);//nbre de ligne du résultat de la requete
}

// verifie si une ou plusieures factures ont déjà été faites à son nom
if($nb>=1){

/* C = est 1 variable simple, $i est le nbre total de num_coupon */
/// création du tableau pour récuperer les num_coupon
for ($c=0;$c<$i;$c++)
{
$tableau[$c]=$_GET[ 'num_coupon_'.$c];
//echo $tableau[$c];
$num_coupon=$_GET[ 'num_coupon_'.$c];
//echo "$num_coupon<br>";
}
echo "$num_coupon<br>";

include('previsu_facture_sans.php');
}

else...

?>


Donc aprés sa renvoie au fichier Prévisu : qui va récupérer les N° de coupon et les lister dans un tableau, donc jusque là sa marche.


<?
//session_start();

$chaine="form action=ajout_facture_sans.php?";
echo "$chaine<br>";

foreach ($tableau as $num => $num_coupon)
{
echo "$num : $num_coupon <br>";
//$chaine=$chaine.$num.'='.$num_coupon;
$chaine=$chaine.'&'.$num_coupon;
$chaine1=$num_coupon;
//echo "$chaine<br>";
//echo "$num_coupon<br>";
}
echo $chaine1;
echo '<br>'.$num_coupon;

echo"<$chaine>";
...
/*
RESULTAT d'affichage :
form action=ajout_facture_sans.php?
0 : 33490
1 : 33497
2 : 33496
3 : 33494
donc sa récupere bien

*/
echo"<br><p span class='Style1' align='center'><input type='submit' name='Valider' value='ENREGISTRER DANS BASE'></p></form> ";
?>
DONC le $ chaine que j'ai fait, va se mettre sur le boutton :

Soit si on se met sur le boutton est marqué :
ajout_facture_sans.php?&33490&33497&33496&33494

Et donc c'est censer me renvoyer mes n° sur la page ajout.

SOIT page AJOUT :
adresse de la page étant :

"/ajout_facture_sans.php?num_facture=&date=&num=195&num_coupon=33494... "

Donc il ne me prend pas les autres n°.
BUT Recupérer ces N° pour les modifier dans la base.
Le code :
<?
session_start();
//echo $chaine;
//$num_coupon=$_GET[ 'num_coupon_'.$c]
$num_coupon=$_GET['num_coupon'];

echo $num_coupon;=> affiche en fait que le 1er ou dernier N° de coupon.

$nom=$_GET['nom'];// assimile NOM + PRENOM
....

$valider='valider';
include('connect_bd.php');
{
$req="UPDATE coupon SET
etat_facture=('$valider') where coupon.num_coupon=('$num_coupon') ";

mysql_query($req) or die('erreur1');

//echo'etat facture modifier<br>';
}

?>


Merci de M'aider !!!

Bonne journée.
A voir également:

8 réponses

nauno Messages postés 342 Date d'inscription   Statut Membre Dernière intervention   60
 
salut, je suis pas sur d'avoir tout compris mais il semblerait que tu récupère un tableau de num_coupon alors que tu n'envoie q'un seul num_coupon!

PS: il y'a une balise
code
qui permet de lire bcp plus facilement le code
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Bonjour,

Je crois que j'ai localisé ton problème. En tous cas, c'est un problème !
while($resultat=mysql_fetch_array($req))
// creation tableau pour afficher resultat de la requete
{
// les mettres qu'entre les $RESULTAT permet d'eviter de répéter les meme DONNER
$num_coupon=$resultat['num_coupon'];
$num=$resultat['num_eleve'];

//echo '<br>'.$num_coupon;
// BUT pouvoir garder une trace des N° coupon afin aprés de les déclarer en Etat_facture=valider Mais on les cache

// ." . $i . " permet de compter les numéros
echo "<input type=hidden name=num_coupon_".$i ." value=".$num_coupon."></td></tr>";
$i=$i+1;
echo "<input type='hidden' name='i' value='$i'></td></tr>";
echo $i;
} 

Dans ce bout de code, tu mets N fois la ligne
<input type='hidden' name='i' value='$i'>
(N étant le nombre de résultats de ta requête).

Le problème, c'est que du coup, tu as N champs input ayant le même nom, "i" !
Donc, dans la suite, quand tu fais $i = $_GET['i'] , lequel de ces champs va être utilisé ? Vu le problème que tu décris (un seul numéro), je dirais bien qu'il prend le premier : <input name='i' value='1'>...
Pour résoudre ton problème, je te propose de "sortir" cette ligne (echo "<input type='hidden' name='i' value='$i'>) de la boucle. Ainsi, tu n'auras qu'un seul <input name='i' [...]>, qui vaudra la valeur la plus grande de i, c'est à dire le nombre total de coupons de ta requête.

Voilà, j'espère que ça va t'aider :)

Xavier
0
marie77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
oui pi etre,


et donc il faudrait que je sors :
// ." . $i . " permet de compter les numéros
echo "<input type=hidden name=num_coupon_".$i ."
value=".$num_coupon."></td></tr>";
$i=$i+1;
echo "<input type='hidden' name='i' value='$i'></td></tr>";
echo $i;

de ma boucle while..{ } je le met aprés avec les autres input
C'est sa ?
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
C'est ça.
Ca donne quoi ?
0
marie77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Donc je me suis remise dedans , donc j'ai essayé de mettre ce qu'on avait dit aprés les accolade du while, mais non sa ne marche pas car là justement il me prend qu'un numéro.

je vais tenté lors de la création du tableau et de son listage de le mettre en session, le truc aprés c'est q je sais pas comme reprendre les info pr que ma requete l'indentifie.

Je vais tester.
on verra.
lol.
0

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

Posez votre question
marie77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
J'ai pas encore testé je testerai tte a l'heure, car je me suis pris la tete dessus hier donc aujourd'hui j'ai décroché un peu et demande un peu d'aide.

Donc, je regarderai aprés mangé, et je te tiens au courant, ya pas de soucis.

Merci.
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Euh, je n'ai pas trop compris... Tu peux mettre ici ton code modifié ?
(et n'oublie pas de le mettre entre < code > et </ code>, c'est nettement plus facile à lire :) )
0
marie77 Messages postés 6 Date d'inscription   Statut Membre Dernière intervention  
 
Comme je te disais j'ai essayé de mettre le comptage des num aprés la boucle, mais il ne prend pas en compte tous les num s'il en a plusieurs.


...
while($resultat=mysql_fetch_array($req))
// creation tableau pour afficher resultat de la requete
{
// les mettres qu'entre les $RESULTAT permet d'eviter de répéter les meme DONNER
$num_coupon=$resultat['num_coupon'];
$num=$resultat['num_eleve'];
}



// ." . $i . " permet de compter les numéros
echo "<input type=hidden name=num_coupon_".$i ."
value=".$num_coupon."></td></tr>";
$i=$i+1;
echo "<input type='hidden' name='i' value='$i'></td></tr>";
echo $i; 





Donc je vais voir avec la session
0
Reivax962 Messages postés 3672 Date d'inscription   Statut Membre Dernière intervention   1 011
 
Il n'y avait qu'une seule ligne à enlecer du while !
Donc au final, ça donne plutôt :
while($resultat=mysql_fetch_array($req))
// creation tableau pour afficher resultat de la requete
{
// les mettres qu'entre les $RESULTAT permet d'eviter de répéter les meme DONNER
$num_coupon=$resultat['num_coupon'];
$num=$resultat['num_eleve'];

// ." . $i . " permet de compter les numéros
echo "<input type=hidden name=num_coupon_".$i ."
value=".$num_coupon."></td></tr>";
$i=$i+1;
echo "</td></tr>";
echo $i;
}

echo "<input type='hidden' name='i' value='$i'>";
0