Précédent   Forum des professionnels en informatique > PHP > Langage > Formulaires
Formulaires Forum d'entraide sur les formulaires avec PHP. Avant de poster -> FAQ formulaires, Cours de formulaires et Sources de formulaires
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 09/04/2007, 00h09   #1
Invité de passage
 
Inscription : avril 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 3
Points : 0
Points : 0
Par défaut Champ input non défini après soumission d'un formulaire en POST

Salut, alors voila j'ai commencé a coder un panier, avec la quantité a coté de chaque produit en input type text. Je voudrais que l'utilisateur puisse mettre à jour avec un bouton le nombre d'article rentré dans la case.

Voici mon code :

Dans la page ou sont affichés les produits :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
$prixtotal=0;
while($data = mysql_fetch_assoc($req)) 
    { 
 
	echo'
	<form action="fonctions.php?action=ajcad?id='.$data['id'].'" method="POST">
 
     <b> Produit N°: '.$data['id'].' => '.$data['nomproduit'].', Categorie : '.$data['catproduit'].'</b>, Prix : '.$data['priproduit'].'€  Quantité : <input type="text" name="quanti" value="'.$data['quantprod'].'" size="2"> <a href=fonctions.php?action=ajcad&id='.$data['id'].'>Ajouter au caddie</a><br>
</form>';
 
$quant=$data['quantprod']+1;
$prixtotal=$prixtotal+$data['quantprod']*$data['priproduit'];
 
}
if (empty($quant)) {
echo "voter panier est vide";
}else{ 
echo "<br><br>Vous avez $quant articles dans votre panier<br><br>Le montant de votre panier s'elève à $prixtotal €<br><br>";
}?>
<br> <form name="quanti" method="post" action="fonctions.php?action=maj"><input type="submit" value="Recalculer" name="submit"></form>
 
et dans la page qui execute l'action fonction.php?action=maj :
 
$db = mysql_connect($sql_serveur,$sql_user,$sql_passwd);
mysql_select_db('kiki',$db);
$sq = "SELECT * FROM caddie"; 
$rep = mysql_query($sq);
while($data = mysql_fetch_assoc($rep)) 
    { 
$quant = $_POST['quanti'];
$sql = "update caddie SET  quantprod='$quant'"; 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
}
Voila, l'erreur qu'il me dit est que la variable quanti n'est pas défini. Je pense que le problème vient du fait qu'il existe une case pour chaque produits et qu'il nn peut pas l'identifier avec ce code. Quelqu'un aurait-il une solution ?

Merci d'avance
blaze24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 08h00   #2
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Je dirais que c'est un peu normal. D'une part tu as ton champ quanti qui contient ta valeur et qui est dans un <form> spécifique et d'autre part tu as ton bouton submit qui est dans un autre <form>. Donc php ne trouvant pas tes inputs, c'est normal qu'il te dise qu'il n'existe pas.

Autre chose : étant donné que tu peux avoir plusieurs produit ce serait mieux d'utiliser la notation suivante name="quanti[]".

Enfin tu mets à jour ton tableau de produits mais si tu as plusieurs alors tous les champs auront la même valeur que le dernier produit envoyé par le formulaire.

Je dis tout ça en espérant que j'ai bien compris ton code
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 11h39   #3
Invité de passage
 
Inscription : avril 2007
Messages : 3
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 3
Points : 0
Points : 0
ah ok, merci de ta réponse, je pense que j'ai compris le problème, mais comment utiliser la notation quanti[] (dois-je mettre $_POST['quanti[]'] ?)

Aurais tu une solution pour assigner chaque case à une seule valeur de la table?
blaze24 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/04/2007, 15h29   #4
Inactif
 
Avatar de Kerod
 
Inscription : septembre 2004
Messages : 11 753
Détails du profil
Informations forums :
Inscription : septembre 2004
Messages : 11 753
Points : 14 585
Points : 14 585
Pour la récupération des données il faudrait faire $_POST['quanti'][$i] bien sur dans une boucle afin de récupérer chaque élément.
Pour ce qui est de la reqûete il suffit d'avoir l'id de chaque produit afin de mettre une clause where.

N'empêche que j'ai toujours pas compris le fonctionnement. Pourquoi tu as un lien ajouter ? Il fait quoi ?
Bon le bouton maj ok c'est pour mettre à jour la bdd. Et si tu mets 0 comme quantité dans un produit il se passe quoi ? Pour le moment rien car le produit reste dasn la bdd même s'il est à 0.
Kerod est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h42.


 
 
 
 
Partenaires

Hébergement Web