Problème enregistrement Base de donnée

Résolu/Fermé
godLike Messages postés 259 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 juillet 2011 - 4 mars 2009 à 14:35
godLike Messages postés 259 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 juillet 2011 - 5 mars 2009 à 10:43
Bonjour,
Voilà je suis en train de creer un formulaire avec des champs qui doivent remplir une base de donnée.

Pour la vérification de doublon j'ai prit un script fait par mindslight (désolé si j'écorche), que j'ai remanier. Ce qui a donné ça :

<?php
function user_exists($email)
{
mysql_connect("localhost", "root");
mysql_select_db("demande");

$sql = 'SELECT `id_dem`
FROM `demandeur`
WHERE `mail_dem` = \'' . addslashes($email) . '\'
LIMIT 1';

$res = mysql_query($sql) or die (mysql_error());
return (mysql_num_rows($res) == 1);
}
?>


Après je veux faire des enregistrement dans la base de donnée que si j'ai le "nom" et "prénom" remplis dans le formulaire, mais si il y a doublon avec adresse mail, ca n'enregistre pas.. Le problème qui se pose c'est que j'ai ce bout de code (fait par mes soins) :


<?php
//include(co_base.php);

function user_exists($email) // fonction empeche doublon de mail
{
mysql_connect("localhost", "root");
mysql_select_db("demande");

$sql = 'SELECT `id_dem`
FROM `demandeur`
WHERE `mail_dem` = \'' . addslashes($email) . '\'
LIMIT 1';

$res = mysql_query($sql) or die (mysql_error());
return (mysql_num_rows($res) == 1);
}


if (isset($_POST['nom']) AND isset($_POST['prenom'])) // si variables existent
{
if ($_POST['nom'] != NULL AND $_POST['prenom'] != NULL AND user_exists($email)) // si on doit enregistrer
{
$nom = $_POST['nom'];
$prenom = $_POST['prenom'];
$civilité = $_POST['civilité'];
$email = $_POST['email'];
$statut = $_POST['statut'];
$formation = $_POST['formation'];
$nbpers = $_POST['nbpers'];

mysql_connect("localhost", "root");
mysql_select_db("demande");

mysql_query("INSERT INTO demandeur
VALUES('', '$nom', '$prenom', '$civilité', '$email', '$statut', '$formation', '$nbpers')"
);

mysql_close();

}

}
?>
<?php
mysql_connect("localhost", "root");
mysql_select_db("demande");

$reponse = mysql_query("SELECT *
FROM demandeur
ORDER BY id_dem
DESC LIMIT 0,1"
);
mysql_close();


while ($donnees = mysql_fetch_array($reponse))
{
?>

<p><strong>Nom :<?php if($_POST['nom'] == NULL)
{
echo "Veuillez indiquer votre nom.";
}
else
{
echo $_POST['nom'];
}
?></strong><br>
<strong>Prénom : <?php if($_POST['prenom'] == NULL)
{
echo "Veuillez indiquer votre prénom.";
}
else
{
echo $_POST['prenom'];
}
?></strong><br>
<strong>Civilité : <?php if($_POST['civilité'] == NULL)
{
echo "Veuillez indiquer votre civilité.";
}
else
{
echo $_POST['civilité'];
}
?></strong><br>
<strong>Statut : <?php if($_POST['statut'] == NULL)
{
echo "Veuillez indiquer votre statut.";
}
else
{
echo $_POST['statut'];
}
?></strong><br>
<strong>Adresse mail : <?php function VerifierAdresseMail($adresse)
{
$Syntaxe='#^[\w.-]+@[\w.-]+\.[a-zA-Z]{2,5}$#';
if(preg_match($Syntaxe,$adresse))
{
return true;
}
else
{
return false;
}
}
$adresse=htmlentities($_POST['email']);
if(VerifierAdresseMail($adresse))
{
echo $_POST['email'];
}
else
{
echo "Votre adresse e-mail n'est pas valide.";
}
?></strong><br>
<strong>Formation : <?php echo $_POST['formation']; ?></strong><br>
<strong>Nombre de Personne : <?php echo $_POST['nbpers']; ?></strong></p>

<?php
}

?>

Donc voilà , si on enregistre quelqu'un avec une adresse qui existe ou pas dans la base de donnée, ça ne marche pas. en revanche si dans on "if" j'enlève le "AND user_exists($email)" ça marche. Mais dans ce cas là, il peut y avoir des doublons.
Merci par avance pour vos réponses fructueuses.
Amicalement.

3 réponses

Christounet Messages postés 1264 Date d'inscription mercredi 26 septembre 2007 Statut Membre Dernière intervention 29 juillet 2010 1 388
4 mars 2009 à 14:51
Bonjour,

En fait tu testes la variable $email avant de l'avoir rempli, tu dois déplacer la ligne
$email = $_POST['email']; 
avant d'appeler la fonction user_exists.

A plus
1
godLike Messages postés 259 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 juillet 2011 26
5 mars 2009 à 09:08
Petit up du matin.
0
godLike Messages postés 259 Date d'inscription mercredi 4 mars 2009 Statut Membre Dernière intervention 26 juillet 2011 26
5 mars 2009 à 10:43
En fait c'est bon. Merci beaucoup ça marche.

Amicalement.
0