Précédent   Forum du club des développeurs et IT Pro > 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
 
Outils de la discussion
Publicité
'
Vieux 19/12/2012, 18h42   #1
s.rais
Membre du Club
 
Inscription : novembre 2003
Messages : 120
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 120
Points : 51
Points : 51
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 :
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 :
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.
s.rais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 09h12   #2
RunCodePhp
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 965
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 965
Points : 3 675
Points : 3 675
Salut

Citation:
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 :
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 09h48   #3
s.rais
Membre du Club
 
Inscription : novembre 2003
Messages : 120
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 120
Points : 51
Points : 51
Bonjour à tous et merci RunCodePhp pour la réponse.
ci-après les messages d'erreur.
Citation:
Notice: Undefined index: totalg in C:\wamp\www\caisse\finvente.php on line 3
et
Citation:
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
s.rais est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 09h59   #4
Bovino
Responsable Développement Web

 
Avatar de Bovino
 
Homme Didier Mouronval
Développeur Web
Inscription : juin 2008
Messages : 18 569
Détails du profil
Informations personnelles :
Nom : Homme Didier Mouronval
Âge : 42
Localisation : France, Gironde (Aquitaine)

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

Informations forums :
Inscription : juin 2008
Messages : 18 569
Points : 66 753
Points : 66 753
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 !
Vous possédez un blog et aimeriez diffuser vos billets sur le forum, 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
Bovino est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 10h44   #5
RunCodePhp
Expert Confirmé
 
Avatar de RunCodePhp
 
Inscription : janvier 2010
Messages : 2 965
Détails du profil
Informations personnelles :
Localisation : Réunion

Informations forums :
Inscription : janvier 2010
Messages : 2 965
Points : 3 675
Points : 3 675
Citation:
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]
RunCodePhp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/12/2012, 11h22   #6
s.rais
Membre du Club
 
Inscription : novembre 2003
Messages : 120
Détails du profil
Informations forums :
Inscription : novembre 2003
Messages : 120
Points : 51
Points : 51
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 !
s.rais est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h50.


 
 
 
 
Partenaires

Hébergement Web