controle donnée en double

Eléphant du PHP | 388 Messages

01 oct. 2010, 13:43

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

ViPHP
ViPHP | 5462 Messages

01 oct. 2010, 13:58

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

Eléphant du PHP | 388 Messages

01 oct. 2010, 14:16

ben fonction parse no défini :? et puis une erreur sur password

Eléphant du PHP | 388 Messages

01 oct. 2010, 14:23

faut que je rajoute
function Parse($variable,$valeur) { 
echo "&" . $variable . "=" . utf8_encode($valeur);
}
cela résoud mon problème
mais pas pour le password

Eléphant du PHP | 388 Messages

01 oct. 2010, 14:27

normal j'ai pas déclarer ma variable

Eléphant du PHP | 388 Messages

01 oct. 2010, 14:30

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 ?

Eléphant du PHP | 288 Messages

01 oct. 2010, 16:48

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.