Pb php/mysql recuperer numero dans un tableau [Résolu/Fermé]

Signaler
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
22 janvier 2007
-
Messages postés
3605
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
16 juillet 2020
-
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.

8 réponses

Messages postés
342
Date d'inscription
vendredi 10 juin 2005
Statut
Membre
Dernière intervention
14 mai 2009
59
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
Messages postés
3605
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
16 juillet 2020
962
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
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
22 janvier 2007

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 ?
Messages postés
3605
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
16 juillet 2020
962
C'est ça.
Ca donne quoi ?
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
22 janvier 2007

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.
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
22 janvier 2007

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.
Messages postés
3605
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
16 juillet 2020
962
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 :) )
Messages postés
6
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
22 janvier 2007

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
Messages postés
3605
Date d'inscription
jeudi 16 juin 2005
Statut
Membre
Dernière intervention
16 juillet 2020
962
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'>";