Problème enregistrement Base de donnée

Résolu
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   -  
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   -
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.
A voir également:

3 réponses

Christounet Messages postés 1264 Date d'inscription   Statut Membre Dernière intervention   1 392
 
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   Statut Membre Dernière intervention   26
 
Petit up du matin.
0
godLike Messages postés 259 Date d'inscription   Statut Membre Dernière intervention   26
 
En fait c'est bon. Merci beaucoup ça marche.

Amicalement.
0