[resolu] [PHP] Formulaire d'inscription récalcitrant

Alors voilà le soucis : je voudrai faire une page d’inscription avec un formulaire. Seulement je veux aussi que si la personne rentre un mail déja présent dans la base, un message s’affiche pour lui dire que le mail existe déja.
Le problème dans ce script, c’est que le message d’erreur est affiché à tout les coups (même quand aucune entrée de la base ne correspond au mail tapé dans le formulaire).

Ma base de donnée est ainsi :

[code]<?php require_once('Connections/groupe4.php'); ?>

<?php session_start(); //---------------------------------- if ($HTTP_POST_VARS['inscription']=="ok") { //début du if, teste si le mail existe mysql_select_db($database_groupe4, $groupe4); // vérifie si le mail existe déja dans la base $FORMemail=trim($FORMemail); //trim() pour supprimer les espaces $query_rsClient="SELECT email FROM client WHERE email='$FORMemail'"; $rsClient=mysql_query($query_rsClient, $groupe4); $totalRows_rsClient=mysql_num_rows($rsClient);[/code] if ($HTTP_POST_VARS['inscription']=="ok") ça c'est un champ masqué du formulaire avec comme valeur "ok" $FORMemail correspond à un "champ de texte" FORMemail du formulaire et qui transmet le mail. [code]//si le mail n'existe pas insertion dans la table client if ($totalRows_rsClient==0) { // début du if // enregistrment du nouveau client $insertSQL="INSERT INTO client (nom, prenom, adresseFacturation, VilleFacturation, CPFacturation, telephone, email, motdepasse) VALUES ('$nom', '$prenom', '$adresse', '$ville', '$cp', '$tel', '$FORMemail', '$FORMpass')"; $Result1=mysql_query($insertSQL, $groupe4); $clientID=mysql_insert_id();[/code] Cela vérifie qu'il y a bien 0 dans la variable totalRows_rsClient et insère les données dans la table. Les valeurs correspondent aux cases du formulaire. [code]//memorisation dans la session $statut="client"; session_register("clientID"); session_register("statut"); header("Location:commande.php"); } // fin du if ($totalRows_rsclient==0) // si le mail existe deja création du message d'erreur else { // debut du else $erreur_mail=1; } //fin du else } // fin du if ?>[/code]

Enfin, le script enregistre les valeurs utilent pour après (statut client) et emmene la personne sur la page commande.php.
Si le mail existe déja, il affiche le message d’erreur (ce qu’il fait à tout les coups malheureseusement).

Enfin, je précise que ce script est tiré du livre PHP/MySQL avec Dreamweaver MX de Jean-Marie deFrance.

D’avance merci beaucoup pour les débuts de réponse que vous pourrez m’apporter.

[quote=“LeRige, post:1, topic: 27922”]le message d’erreur est affiché à tout les coups[/quote]Et il dit quoi ce message d’erreur ?

ça ne fait pas avancer le chmilblick, mais $HTTP_POST_VARS c’est MAL.
on utilise $_POST[] maintenant :stuck_out_tongue:

Je me suis mal exprimé, c’est pas un message d’erreur, c’est le message que je veux afficher quand le mail est déja présent dans la base. C’est un message du genre : « ce mail existe deja ». Le problème là, s’est qu’affiche meme quand le mail n’existe pas.

Sinon oui fser, ça ne fait pas avancer le débat :stuck_out_tongue:

Je ne vois pas l’endroit où tu récupères la variable de ton formulaire, un truc du genre :
$FORMemail = $_POST[‘FORMemail’];

Sinon, fais un echo de ton $FORMemail pour être sûr de sa valeur. Parce que s’il est vide, ce qui se passe ne m’étonne pas.

[quote=« remouk, post:5, topic: 27922 »]Je ne vois pas l’endroit où tu récupères la variable de ton formulaire, un truc du genre :
$FORMemail = $_POST[‹ FORMemail ›];[/quote]

Lorsque je poste le formulaire (méthode POST), c’est là qu’est créé la variable (enfin je pense). Ou alors j’ai pas compris la question :stuck_out_tongue:

Selon la configuration de ton serveur web, les variables POST (venant d’un formulaire donc), ne sont pas forcément directement accessibles par $nomduchamp, question de sécurité. Par contre, $_POST[‘nomduchamp’] doit fonctionner. Ajoute donc cette ligne juste avant ton trim :
$FORMemail = $_POST[‘FORMemail’];

Si ça ne fonctionne pas, fais un echo de ton $FORMemail pour voir ce qu’il contient, et vérifie que le nom de ton champ est bien FORMemail dans ton formulaire.

Merci Remouk !

Effectivement le problème venait bien de là. Merci beaucoup : je moulinais dans le vide jusqu’ici. ça m’apprendra à utiliser un vieux bouquin pour travailler.

Vraiment merci, t’imagines pas comme je respire maintenant :stuck_out_tongue:

Ca fera 30€ (15€ par post, celui-ci étant offert). Je te file les coordonnées de mon compte Paypal par PM.
A bientôt.

:stuck_out_tongue: