Page 1 sur 1

controle donnée en double

Posté : 01 oct. 2010, 13:43
par spidercrash
Dans mon formulaire j'ai mit en place un controle au niveau de l'email si celui ci est déja présent un message indique que l'email et déja utilisé, donc pas d'inscription dans la base de donnée.
Si l'émail existe pas alors l'inscrition doit se faire.

Cependant si l'email n'existe pas l'enregistrement se passe bien mais quand l'email existe cela me renvoie une erreur.
Voici mon code php
<?php 

$nom=$_POST['nom'];
$pseudo=$_POST['pseudo'];
$email=$_POST['email'];
    

include ('connect.php');        
$crypt=md5($password);    
        
        $sql = "SELECT * FROM utilisateurs where email = '$email'";
    $req = mysql_query($sql)or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
    $result = mysql_numrows($req); 

    if($result!=0) 
        { 
        Parse("resultat","email '$email' existe deja, desole");
        } 
    else  
        {    
       $sql2 = "INSERT INTO utilisateurs (nom, pseudo, email, password) VALUES ('$nom','$pseudo','$email','$crypt')";
       $req = mysql_query($sql2)or die(mysql_error());
        
        header('Location: http://127.0.0.1/inscription.php#finish');
        }
        
?>
l'erreur que j'obtient est :
Notice: Undefined variable: password in C:\Program Files\EasyPHP-5.3.3\www\php\inscription.php on line 9

Fatal error: Call to undefined function Parse() in C:\Program Files\EasyPHP-5.3.3\www\php\inscription.php on line 17

dans ma requete il analyse bien la base, compte le nombre de résultat présent mais cela ne passe pas pouvez vous m'ouvrir les yeux merci d'avance

Re: controle donnée en double

Posté : 01 oct. 2010, 13:58
par stealth35
c'est quoi que tu comprends pas dans :

Notice: Undefined variable: password in C:\Program Files\EasyPHP-5.3.3\www\php\inscription.php on line 9
Fatal error: Call to undefined function Parse() in C:\Program Files\EasyPHP-5.3.3\www\php\inscription.php on line 17

Re: controle donnée en double

Posté : 01 oct. 2010, 14:16
par spidercrash
ben fonction parse no défini :? et puis une erreur sur password

Re: controle donnée en double

Posté : 01 oct. 2010, 14:23
par spidercrash
faut que je rajoute
function Parse($variable,$valeur) { 
echo "&" . $variable . "=" . utf8_encode($valeur);
}
cela résoud mon problème
mais pas pour le password

Re: controle donnée en double

Posté : 01 oct. 2010, 14:27
par spidercrash
normal j'ai pas déclarer ma variable

Re: controle donnée en double

Posté : 01 oct. 2010, 14:30
par spidercrash
par contre je souhaiterai supprimé le PARSE et le remplacer par un autre message se trouvant dans mon finish soit ici

Code : Tout sélectionner

<p> <a class="submit" href="#finish" onclick="document.start.submit();">Créer mon compte</a> ou <a href="index.php">annuler</a> </p> <div id="finish"> <p> Inscription termin&eacute;e! </p> </div>
Je souhaiterai que si cela est bon sa renvoie inscription terminé et si c'est pas bon le message se remplace par email déja utilisé est ce possible ?

Re: controle donnée en double

Posté : 01 oct. 2010, 16:48
par damaskinos
Bah je vois pas elle est ou la difficulté.

au lieu de mettre
Parse("resultat","email '$email' existe deja, desole");
tu n'as qu'à mettre
 echo " L'email existe déjà, désolé";
Et si l'enregistrement s'effectue avec succès
echo 'Inscription terminée';
Si tu veux absolument que les messages s'affichent dans ta page ou il y a le formulaire bien, plusieurs solution s'offre à toi. Tu peux mettre ton message dans une session, faire une redirection et l'afficher. Ou te définit des codes d'erreur, du genre

0: Tout est ok
1: email existe déjà.

Ensuite tu passes le code dans l'url quand tu rediriges. Du coup dans ta page tu peux tester l’existence du code d'erreur et afficher le message correspondant. J'Espère que c'est assez clair.