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 :

Transmission des valeurs d'un formulaire vers une page PHP5


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Points : 99
    Points
    99
    Par défaut Transmission des valeurs d'un formulaire vers une page PHP5
    Bonsoir à tous.
    Dans une page j'ai un formulaire avec des 'input's et des boutons dont 2 de ces boutons font appel à des fonctions js et 1 fait appel à une page PHP pour insérer des enregistrements dans une table ; je joint le code du formulaire :
    Code html : 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
    	<form action="finvente.php" method="post" name="operation" target="_self" class="formulaireoperation" id="operation">
    		<br />
    	   <div align="center"> <input type="text" name="Produit" id="Produit" tabindex="1"  value="Produit" class="inputlabel" disabled="disabled" /> 
          						<input type="text" name="idProduit" id="idProduit" tabindex="2"  value="id" class="inputlabel" disabled="disabled"  />
    	   </div>
          <label for="quantite">Quantité :</label>
          <input class="chiffre" type="text" name="quantite" id="quantite" tabindex="3"  value="quantite" onblur="javascript:calcul()"/>
    	  <br />
          <label for="prix">Prix unitaire :</label>
          <input class="chiffre" type="text" name="prix" id="prix" tabindex="4"  value="prix" disabled="disabled" onblur="javascript:calcul()" />
    	  <br />
          <label for="total">Total article :</label>
          <input class="chiffre" type="text" name="total" id="total" tabindex="5"  value="total" disabled="disabled" width="40%" />
    	  <br />
          <p style="text-align: center;">
            <input type="button" name="confirmer" id="confirmer" value="Ajouter au panier" tabindex="6" align="middle" onclick="valid()" />
            <input type="button" name="valider" id="valider" value="Annuler" tabindex="7" align="middle" onclick="annuler()" />
            <!--<input type="button" name="annuler"  id="annuler" value="Annuler" tabindex="6" align="middle"  onclick="annuler()" /> -->
          </p>
          <p style="text-align: center; color:#0000ff;" >======================================</p>
    	  <p style="text-align: center; color:#FF0000; background-color:#00CC66">TOTAL DU PANIER</p>
          <label for="nbrart">Nombre article :</label>
          <input class="chiffre" type="text" name="nbrart" id="nbrart" tabindex="8" align="right" value="0" disabled="disabled"/><br />
    	   <label for="nbrpiece">Nombre de pièce :</label>
          <input class="chiffre" type="text" name="nbrpiece" id="v" tabindex="9" align="right" value="0" disabled="disabled"/><br />
          <label for="totalg">Total général :</label>
          <input class="chiffre" type="text" name="totalg" id="totalg" tabindex="10" align="right" value="0"disabled="disabled"/>
    	  <p style="text-align: center;">
            <input type="submit"  name="confirmer" id="confirmer" value="Confirmer" tabindex="11" align="middle" />
          </p>
    </form>
    et le code de la page php appelée
    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
    <?php
    	echo 'total de la vente ='.$_POST["totalg"];
    	require ("mysql_connexion.php");
    	$chrSQL='SELECT max(`id_vente`) as vente FROM `ventes`';
    	$req=$bdd->query($chrSQL);
    	$data=$req->fetch();
    	$vente = $data['vente']+1;
    $req->closeCursor();
     
    	$req = $bdd->prepare('insert into `ventes` (date_vente,total_vente,heure_vente) values (:dateV,:totV,:heureV)');
     
    	$req->execute(array(
        	'dateV' => date("Y-m-d"),
    	'totV' => $_POST["totalg"],
    	'heureV' => date("H:i:s")
    		));
    	$req->closeCursor();
    	?>
    A l'exécution et d'après un message d'erreur le '$_POST' n'a pas fonctionné. ET je n'arrive pas à trouver la cause. Quelqu'un peut-il m'aider ?
    Merci d'avance.

  2. #2
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Salut

    A l'exécution et d'après un message d'erreur le '$_POST' n'a pas fonctionné.
    Le minimum aurait été de poster l'erreur sur $_POST, genre de chose qui nous aiderait à mieux comprendre ton problème.

    Puis ton formulaire est composé de 2 bouton s de type "button" et non de type "submit".
    Un bouton de type "button" ne soumet pas un formulaire, c'est un bouton de type "submit" qui effectue cette action.


    Ceci dit, ces 2 boutons font appel à des fonction JS, mais tu n'as pas mis le code, donc on ne peu pas t'aider là encore.

    La logique voudrait (du moins on suppose que ...) que la fonction JS valid() va soumettre le formulaire étant donnée que le formulaire n'intègre pas cette action, et par la suite transmettre les données en POST.
    Si ce n'est pas le cas, c'est le code JS qui aurait un problème.


    Par ailleurs, je suis plus adepte de procéder comme ceci (simple exemple) :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="..." method="post" onsubmit="return valid()">
        ... divers contrôles HTML ...
     
        <input type="submit" name="valider" value="Valider" />
    </form>
    La fonction valid() sera appelée lors de l'évènement "submit", qui est plus proche de la réalité (si on peu dire).

    Cet évènement "submit" attend une valeur de retour (true/false), et selon le cas validera ou pas le formulaire.
    De plus, si un internaute venait à désactiver JS dans son navigateur, ou encore qu'il y aurait une erreur dans le code JS, le formulaire pourra être soumis vu qu'il intègre un bouton submit.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    Bonjour à tous et merci RunCodePhp pour la réponse.
    ci-après les messages d'erreur.
    Notice: Undefined index: totalg in C:\wamp\www\caisse\finvente.php on line 3
    et
    Notice: Undefined index: totalg in C:\wamp\www\caisse\finvente.php on line 15
    "totalg" sont les variables à soumettre à la page ; quant aux 2 boutons de type button font appel à des fonctions js qui exécutent des calculs et affectent le résultat au différente 'input' du même formulaire et ne transmettent pas de valeur à la page d'enregistrement. Le 3 ème bouton de type 'submit' fait appel à la page d'enregistrement et du coup devrait transmettre des données. Encore merci

  4. #4
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 418
    Points
    91 418
    Billets dans le blog
    20
    Par défaut
    Les champs disabled ne sont pas transmis lors de la soumission...
    Utilise readonly à la place.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  5. #5
    Membre expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Points : 3 947
    Points
    3 947
    Par défaut
    Le 3 ème bouton de type 'submit' fait appel à la page d'enregistrement et du coup devrait transmettre des données
    Je l'avais pas vu celui là


    Une autre solution existe encore au lieu d'exploiter des "disabled" ou "readonly", c'est de mettre cette valeur totalg dans 2 éléments différents.
    - Dans un simple span (ou div) pour que l'utilisateur la voit sans pouvoir faire de modification
    - Et dans un champ caché (hidden) dans le but de la transmettre.
    Le JS mettra alors à jour cette valeur dans ces 2 éléments à chaque fois.


    A coté de ça, cette donnée serait une valeur calculée en rapport avec celles qui s'y trouveraient dans le formulaire : quantité, prix, etc ...
    Ne serait-il pas plus fiable de faire (ou refaire) ce calcul en Php (donc coté serveur) dans le but de rendre cela plus fiable ?
    Cette donnée serait apparemment enregistrée dans une Bdd.


    Autre point qui m'interpelle un peu, c'est qu'au départ on se base sur des données qui viendrait d'un panier, puis on fait au moins 1 calcul.
    Au bout ça donnerait des données dans une table "ventes".
    La théorie veut qu'un panier n'est pas une vente, c'est juste un panier.
    En général on commence par un panier, puis une fois validé ça débouche sur une commande, à la suite de ça, ça débouche sur un règlement/paiement pour finir à une facture.
    C'est théoriquement les 2 dernières étapes ou on peu considérer qu'il y a eu vente.
    Win XP | WampServer 2.2d | Apache 2.2.21 | Php 5.3.10 | MySQL 5.5.20
    Si debugger, c'est supprimer des bugs, alors programmer ne peut être que les ajouter [Edsger Dijkstra]

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2003
    Messages
    173
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 173
    Points : 99
    Points
    99
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Les champs disabled ne sont pas transmis lors de la soumission...
    Utilise readonly à la place.
    Merci Bovino ! Effectivement c'est mon erreur ! Encore merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème lors de l'insertion des valeurs d'un formulaire dans une base
    Par nour93 dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 05/03/2015, 02h29
  2. Transférer des données d'un formulaire vers une feuille de données
    Par kirsie dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 09/04/2013, 20h45
  3. Réponses: 2
    Dernier message: 25/03/2013, 17h07
  4. [MySQL] récupération des valeurs d'un formulaire d'une page dans une autre page
    Par CSI2012 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 06/02/2013, 13h43
  5. [XL-97] Copie capricieuse des valeurs d'un range vers une autre feuille
    Par Michel Delapouaitte dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 24/04/2009, 09h34

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