Erreur dans mon formulaire PHP

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Erreur dans mon formulaire PHP

Re: Erreur dans mon formulaire PHP

par macgawel » 29 avr. 2011, 09:27

- Pense à mettre ton code dans les balises qui vont bien (bouton HTML par exemple). Ce sera plus lisible :wink:
Ma question : Comment contrôler et traiter mes champs et ma case à cocher de mon html dans traitement_formulaire1.php?
Il faut que je code ? Comment faire ? Je possède traitement_formulaire1.php uniquement pour 4 variables.
Oui, il faut que tu le codes...

Comment faire ?
Le minimum, c'est d'ouvrir ton traitement_formulaire1.php (si possible avec un éditeur de texte à coloration syntaxique - Notepad++ le fait très bien sous Windows), le lire, et comprendre au moins le principe de base.
Ensuite, il faudrait t'inspirer du traitement des 4 champs pour tes autres champs - y compris ta case à cocher.
Pour la case à cocher, elle prend une valeur ("on") uniquement si elle a été cochée. Et comme tu dois la vérifier avant tout traitement, il faut la tester avant toute autre action.

Sinon, il y a pas mal de tutoriels sur le net, et même un ICI.

Re: Erreur dans mon formulaire PHP

par Mazarini » 28 avr. 2011, 21:17

Essayes de mettre <script> et </script> autour de ta fonction javascript

Mais la fonction ne s'affiche pas dans ton navigateur actuellement ?

Re: Erreur dans mon formulaire PHP

par Alex2011 » 28 avr. 2011, 18:17

Merci, je comprends un peu. Comme ça c'est correct ?

HTML :


function validateCheckBox(){
var conditions = document.getElementById('acceptConditions').checked;
if (conditions==false) {
alert("Merci de cocher la case si vous acceptez les conditions !" );
}
return conditions;
}

<form id="contact" method="post" action="traitement_formulaire1.php" onSubmit=" return validateCheckBox()">

<fieldset><legend><FONT COLOR="#FFFFFF">Adresse de livraison</FONT></legend>
<p align="right"><label for="nom">Nom :&nbsp;</label><input type="text" size="20" id="nom" name="nom" tabindex="1" /></p>
<p align="right"><label for="prenom">Prénom :&nbsp;</label><input type="text" size="20" id="prenom" name="prenom" tabindex="2" /></p>
<p align="right"><label for="email">Email :&nbsp;</label><input type="text" size="20" id="email" name="email" tabindex="3" /></p>
<p align="right"><label for="tel">Tél. :&nbsp;</label><input type="text" size="20" id="tel" name="tel" tabindex="4" /></p>
<p align="right"><label for="adresse">Adresse :&nbsp;</label><input type="text" size="20" id="adresse" name="adresse" tabindex="5" /></p>
<p align="right"><label for="cp">Code Postal :&nbsp;</label><input type="text" size="5" id="cp" name="cp" tabindex="6" /></p>
<p align="right"><label for="ville">Ville :&nbsp;</label><input type="text" size="20" id="ville" name="ville" tabindex="7" /></p>
</fieldset>

<fieldset><legend><FONT COLOR="#FFFFFF">Votre commande :</FONT></legend>
<p><label for="objet">Votre marque et modèle de véhicule :</label><input type="text" size="30" id="objet" name="objet" tabindex="3" /></p>

<div style="text-align:center;">J'accepte les conditions générales :
<input type="checkbox" name="acceptConditions" id="acceptConditions" />
<input type="submit" id="submit" name="envoi" value="Passer à l'Etape 2" onclick="validateCheckBox();" /></div>

</fieldset>
</form>

Mon formulaire renvoie vers une page de traitement, traitement_formulaire1.php, ça oui.
Ma question : Comment contrôler et traiter mes champs et ma case à cocher de mon html dans traitement_formulaire1.php?
Il faut que je code ? Comment faire ? Je possède traitement_formulaire1.php uniquement pour 4 variables.

Re: Erreur dans mon formulaire PHP

par macgawel » 28 avr. 2011, 17:37

Tu as lu le sujet du forum hardware ?
je voudrais créer un page d'accueil avec toutes les règles du site 'sur cette page' puis à la fin une case qu'il faut cocher et un bouton 'j'accepte les conditions' qui ramène à la page d'inscription 'si la personne à coché la case'
Toi, tu veux :
modifier le formulaire simple à 4 variables en formulaire à 8 variables (+tél,adresse,etc) plus ajouter une case à coché obligatoire. Et si seulement la case était cochée, le formulaire serait envoyé dans ma boite à mail.
Pour moi c'est deux choses qui n'ont rien à voir (il n'est pas question de formulaire dans le message sur hardware.fr) !!!


A priori, ton formulaire renvoie vers une page de traitement, traitement_formulaire1.php.
Pour rajouter des champs à ton formulaire, il faut prévoir de les contrôler et traiter dans cette page.
Pour rajouter une case à cocher, c'est pareil.
Tout ça, c'est du PHP (et du HTML pour afficher les champs dans le formulaire :roll: ).

Maintenant, si tu veux que le formulaire ne soit envoyé que si la case est coché, il faut du javascript dans le formulaire pour bloquer l'action au niveau du navigateur (en gardant à l'esprit qu'il est toujours possible de contourner ce qui se passe côté navigateur).
Si tu veux pouvoir bloquer l'envoi du formulaire, il faut agir au niveau de l'évènement onSubmit. Et pour ça, le script que je t'ai donné a l'air de fonctionner...

Re: Erreur dans mon formulaire PHP

par Alex2011 » 28 avr. 2011, 17:07

Merci cordialement, à tous
je vais pour l'instant utiliser mon petit formulaire trouvé sur : http://www.php-astux.info/script-formulaire-contact.php à 4 variables qui marche bien, tant qu'on y ajoute rien.

mais si quelqu’un à tout hasard pourrait me dire comment intégrer le code suivant trouvé sur : http://forum.hardware.fr/hfr/Programmat ... 4063_1.htm

Ça m'aiderait beaucoup.
En fait je voulais faire une chose simple (je le croyais), modifier le formulaire simple à 4 variables en formulaire à 8 variables (+tél,adresse,etc) plus ajouter une case à coché obligatoire. Et si seulement la case était cochée, le formulaire serait envoyé dans ma boite à mail.

Ça peut paraître simple pour certains, mais pas évident pour moi, malgré qu'on trouve plein d'explications de partout, plein de tuto, plein de différents formulaires en les mélangeant rien ne fonctionne.

Voila 2 jours que je recherche, en vain. Mais bon j'ai au moins un ptit formulaire qui marche en attendant...

Merci beaucoup pour votre aide

Re: Erreur dans mon formulaire PHP

par Mazarini » 28 avr. 2011, 15:40

C'est plutôt sans javascript car le nombre de variables n'a pas trop d'importance.

Re: Erreur dans mon formulaire PHP

par Alex2011 » 28 avr. 2011, 15:12

Merci beaucoup pour votre aide.
Mon formulaire ne fonctionne pas pour l'instant, mais ça va venir par la suite.
Je vais prendre un formulaire plus simple (à 4 variables et sans case à cocher) pour commencer.

Encore une fois merci à tous !!!

Re: Erreur dans mon formulaire PHP

par macgawel » 28 avr. 2011, 14:02

Pour ce genre de chose, ce que je ferais :
1. Penser aux gens chez qui le JavaScript est désactivé.
En clair, comence par construire un formulaire "normal", qui envoit sur ta page de traitement, qui elle va se charger de faire les vérifications.

2. Au niveau du JS, comme dit Mazarini la fonction que tu appelles par le onsubmit doit retourner False s'il y a une erreur.
Le principe du JS : onSubmit => action à effectuer au moment où on valide le formulaire. La "vraie" validation ne se fait pas si le JS renvoie False.

3. Ne pas utiliser window.location.href, qui redirige vers une page avant de valider le formulaire !
En pratique, avec ton script (celui de base), quand on valide le formulaire on appelle le JS.
Le JS vérifie que la case est cochée, et SI elle est cochée redirige vers le lien indiqué.
Changement de page => le formulaire n'est pas envoyé.

Au final, un JS basique (il n'y a pas de balise JS ? ) :
function validateCheckBox(){
	var conditions = document.getElementById('acceptConditions').checked;
	if (conditions==false) {
		alert("Merci de cocher la case si vous acceptez les conditions !" );
	}
	return conditions;
}
Le bouton :
<input name="submit" type="submit" id="submit" name="envoi" value="Passer à l'Etape 2" onclick="return validateCheckBox();" />
Si la case n'est pas cochée, le JS renvoie FALSE et le submit est annulé...

Re: Erreur dans mon formulaire PHP

par Mazarini » 28 avr. 2011, 13:38

print_r($_POST) en début de script pour voir ce que contient $_POST.

Re: Erreur dans mon formulaire PHP

par Alex2011 » 28 avr. 2011, 12:31

Bonjour,

Apparemment un truc comme ca :
<form name="xxx" method="post" action="xxx" onSubmit=" return validateCheckBox()">
validateCheckBox doit retourner true ou false
Le fait que je retourne dans le traitement.php sur le message : Vous devez d'abord envoyer le formulaire. Ca signifie qu'il y une erreur dans php ?

Re: Erreur dans mon formulaire PHP

par Mazarini » 28 avr. 2011, 11:56

Bonjour,

Apparemment un truc comme ca :
<form name="xxx" method="post" action="xxx" onSubmit=" return validateCheckBox()">
validateCheckBox doit retourner true ou false

Re: Erreur dans mon formulaire PHP

par Alex2011 » 28 avr. 2011, 11:48

Bonjour,

Je ne suis pas très bon en html et javascript mais "window.location.href = "lienVersLaPage d'inscription.html" correspond à un changement de page, pas à l'envoi du formulaire.

Il me semble qu'il faut utiliser submit() ou retourner une valeur false ou true dans ton javascript pour bloquer ou non le submit().

Je te laisse chercher la syntaxe exacte.
Grand merci, je sens que je m'approche du but. Pour l'instant ça ne marche pas (normal, je n'ai pas encore trouvé comment faire submit à la place du lien), mais ça viendra... j'espère.

Par contre, lorsque je valide mon formulaire, je passe quandmeme à la page traitement.php.
L'erreur vient du html ("window.location.href = "lienVersLaPage d'inscription.html") ou du traitement.php(une valeur false ou true dans ton javascript pour bloquer ou non le submit)

Re: Erreur dans mon formulaire PHP

par Mazarini » 28 avr. 2011, 11:23

Bonjour,

Je ne suis pas très bon en html et javascript mais "window.location.href = "lienVersLaPage d'inscription.html" correspond à un changement de page, pas à l'envoi du formulaire.

Il me semble qu'il faut utiliser submit() ou retourner une valeur false ou true dans ton javascript pour bloquer ou non le submit().

Je te laisse chercher la syntaxe exacte.

Re: Erreur dans mon formulaire PHP

par Alex2011 » 28 avr. 2011, 11:04

Bonjour,

<input name="submit" type="submit" id="submit" name="envoi" value="Passer à l'Etape 2" onclick="validateCheckBox();"

Merci pour la réponse, mais ça ne fait rien, malheureusement.

Toujours le même probleme : Dès la validation du formulaire (code en html ci-dessus), le message apparaît Vous devez d'abord envoyer le formulaire.

Mon formulaire est faux !!!

En fait pour réaliser ce formulaire j'ai un peu bidouillé. :oops: J'ai pris un formulaire trouvé sur http://www.php-astux.info/script-formulaire-contact.php et j'y ajouté plus de parametres (nom, prenom, adresse, cp, ville etc) + j'ai ajouté dans mon html un code "case à cocher" :

<script>
function validateCheckBox(){
if (document.getElementById('acceptConditions').checked==false)
//la case n'est pas cochée !
{
alert("Merci de cocher la case si vous acceptez les conditions !" );
}
else
//la case est cochée
{
window.location.href = "lienVersLaPage d'inscription.html";
}
}
</script>
<body>
Je coche la case ci-dessous si je suis d'accord avec les trucs écrits ci-dessus :
<input type="checkbox" name="acceptConditions" id="acceptConditions" />
<input type="button" name="submit" id="submit" onclick="validateCheckBox();"
</body>

Voilà ce que j'ai fais, mais lorsque je valide mon formulaire ça ne marche pas.
Je voudrais vraiment que mon formulaire fonctionne. Peut être quelqu’un pourrait me conseiller :idea:
GRAND MERCI DANS TOUS LES CAS !!!

Re: Erreur dans mon formulaire PHP

par Mazarini » 28 avr. 2011, 09:34

Bonjour,

<input name="submit" type="submit" id="submit" name="envoi" value="Passer à l'Etape 2" onclick="validateCheckBox();"