IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Champ input non défini après soumission d'un formulaire en POST


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    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

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2007
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    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?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Points : 20 778
    Points
    20 778
    Par défaut
    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.

Discussions similaires

  1. Réafficher les champs de saisie après soumission d'un formulaire
    Par Géssé dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/03/2014, 13h05
  2. [AJAX] innerHTML et champ input non mise a jour.
    Par laurent1 dans le forum AJAX
    Réponses: 2
    Dernier message: 03/11/2012, 08h20
  3. [1.x] pb de route apres soumission d'un formulaire
    Par erictomcat dans le forum Symfony
    Réponses: 1
    Dernier message: 21/06/2011, 12h23
  4. Réponses: 1
    Dernier message: 20/05/2010, 13h28
  5. champ input, non saisissable
    Par sam01 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 05/04/2010, 14h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo