Pb php/mysql recuperer numero dans un tableau

Résolu/Fermé
marie77 Messages postés 6 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007 - 22 janv. 2007 à 09:55
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 - 22 janv. 2007 à 14:12
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 vendredi 10 juin 2005 Statut Membre Dernière intervention 14 mai 2009 60
22 janv. 2007 à 11:25
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
22 janv. 2007 à 11:57
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 lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 12:03
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
22 janv. 2007 à 12:12
C'est ça.
Ca donne quoi ?
0
marie77 Messages postés 6 Date d'inscription lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 12:49
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 lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 12:27
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
22 janv. 2007 à 12:52
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 lundi 22 janvier 2007 Statut Membre Dernière intervention 22 janvier 2007
22 janv. 2007 à 13:59
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 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
22 janv. 2007 à 14:12
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