problème de recuperation de variables

Eléphant du PHP | 130 Messages

27 avr. 2005, 17:31

Bonjour à tous

Voila mon probleme
J'ai deux page php une premiere avec un form qui me renvoie les champs suivant
ref--designation--descrip--prix--qte--et une checkbox

Je recupere tous cela dans ma deuxième page sous forme de tableaux
le probleme est que si le champs quantite n'est pas rempli la checkbox declanche le calcule sur la cellule qte suivante.
comment faire pour resoudre ce problème

voici mes deux pages
--------------page1---------------------------
$result = mysql_query("select * from produits where reference_produit like'lm%' order by reference_produit");
while ($row = mysql_fetch_object($result))
{
echo "<tr>
<td align=\"center\">";
echo $row->reference_produit;echo"<input type=\"hidden\" name=\"choix5[]\" value=".$row->reference_produit.">";
echo "</td>
<td align=\"center\">";
echo $row->designation;echo"<input type=\"hidden\" name=\"choix2[]\" value=".$row->designation.">";
echo "</td>
<td align=\"center\">";
echo $row->descriptif;echo"<input type=\"hidden\" name=\"choix3[]\" value=".$row->descriptif.">";
echo "</td>
<td align=\"center\">";
echo $row->prix_vente;echo"<input type=\"hidden\" name=\"choix4[]\" value=".$row->prix_vente.">";
echo "</td>
<td align=\"center\">";
echo"<input type\"text\" name=\"choix1[]\" size=\"2\" maxlength=\"4\"></td>
<td align=\"center\">";
echo"<input name=\"choix[]\" type=\"checkbox\" value=".$row->reference_produit." >";
echo "</td></tr>";}
-----------------------------------------------------
----------------page2------------------------------
//choix pour la checkbox
$chek=$_POST['choix'];
//choix1 pour la quantite
$qte=$_POST['choix1'];
//choix2 pour la designation
$des=$_POST['choix2'];
//choix3 pour le descriptif
$desc=$_POST['choix3'];
//choix pour le prix de vente
$pv=$_POST['choix4'];
//choix5 pour la reference produit
$ref=$_POST['choix5'];
//test si il ya connection--------------------------------------------------------------
if(empty($_SESSION['id']))
{
echo" il faut vous connecter";//si pas de connexion
}
else
{
$identifiant_client=$_SESSION['id'];
$j=0;
echo "<h1>vous venez d'ajouter au panier :</h1>";
echo"<table border=\"1\" cellspacing=\"0\" cellpading=\"0\" align=\"center\" width=\"644\">
<tr>
<td align=\"center\"><b>Reference</b></td>
<td align=\"center\"><b>Designation</b></td>
<td align=\"center\"><b>Descriptif</b></td>
<td align=\"center\"><b>Quantite</b></td>
<td align=\"center\"><b>Montant</b></td>
<tr>";
for ($i=0;$i<sizeof($chek);$i++)
{
$req_test=mysql_query("select quantite from tampon where reference_produit='".$chek[$i]."' && identifiant_client=".$_SESSION['id']." limit 1");
if(mysql_num_rows($req_test)==0)
{
$montant=$pv[$i]*$qte[$i];
//affichage de chaque ligne-----------------------------------------------------------------------
echo"<tr>
<td align=\"center\">".$chek[$i]."</td>
<td align=\"center\">".$des[$i]."</td>
<td align=\"center\">".$desc[$i]."</td>
<td align=\"center\">".$qte[$i]."</td>
<td align=\"center\">".$montant." €</td>
</tr>";
//bla bla bla
}}
D'avance merci

Eléphant du PHP | 98 Messages

28 avr. 2005, 10:08

et si tu mettais la valeur 0 dans le champ qte s'il est vide ?

Eléphant du PHP | 130 Messages

28 avr. 2005, 15:06

deja essayer cela ne change rien il y a un decallage mais je ne sais pas comment obliger le travail sur la même ligne(même indice

Eléphant du PHP | 130 Messages

28 avr. 2005, 16:51

J'ai essayer en testant la valeur des champs
mais le decalage à quand même lieu

Personne ne sait comment m'aider????

Mammouth du PHP | 19672 Messages

28 avr. 2005, 17:10

Rajoute un gestionnaire d'évènement dans ton formulaire pour forcer à remplir ce champ quantité, c'est ce que je vois de plus simple.

Sinon, autre méthode, dans ta page deux avant traitement, tu teste la valeur de cette quantité, si elle est inexistante, tu renvoie vers le formulaire avec header(location: .....)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

28 avr. 2005, 17:19

je debute en php
c'est quoi ton gestionnaire d'evenement et d'après ce que tu me dis le header (location: )ne convient pas car je veux rentrer les champs suivant s'il son renseigner.

Mammouth du PHP | 19672 Messages

28 avr. 2005, 17:28

Un gestionnaire d'évènement, c'est du JavaScript : onClick, onChange, onSubmit etc... ça se programme en JavaScript.

Le header(Location:), c'est pour renvoyer l'internaute vers le formulaire incomplet: si la donnée n'est pas fournie, le traitement va bugguer, donc tu le force à remplir correctement le champ.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

28 avr. 2005, 18:28

ok pour le javascript je vais essayer

mais pour le header ce n'est pas possible puisque tout les champs ne sont pas obligatoirement rempli le problème c'est que si tu ne rempli pas le premier champ quantite et que tu coche la premiere checkbox il fait le calcul du montant avec la quantite rentrer tout de suite apres et donc tout se decale.

J'ai voulu faire un test pour qu'il fasse le calcul seuleument si qte et checked sont remplie et valider mais il semble passer au travers

Mammouth du PHP | 19672 Messages

28 avr. 2005, 18:31

Alors tu peux mettre un évènement onchange sur les checkbox pour vérifier si une quantité a été inscrite.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 130 Messages

29 avr. 2005, 11:51

en fait il me suffiser de vidanger tous les zeros du tableau.
merci à tous