Recherche une occurence contenue dans une variable au sein d'une base de données

oleiade Messages postés 8 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 26 mars 2009 - 1 mars 2009 à 12:57
oleiade Messages postés 8 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 26 mars 2009 - 2 mars 2009 à 08:04
Bonjour à tous. Je suis en train de travailler à un petit système de newsletter pour mon site http://pomme-poire.fr. Or, comme il faut un commencement à tout, je suis en train de créer un formulaire qui récupère l'adresse email lors de l'inscription et la transmet à la BDD. Tout semble fonctionner correctement à l'exception d'une fonction précieuse mais que je n'arrive pas à mettre en place: je voudrais que le script aille vérifier à chaque saisie d'email si celui-ci n'est pas déjà présent dans la base, pour que les gens ne s'inscrivent pas x fois.  Le problème est que pour l'instant, le script me répond que je suis déjà inscrit à la newsletter, quelle que soit l'adresse fournit. Aussi, je pense que le probleme vient du fait que je transmet dans la requêt SQL une variable php pour la recherche... Voici mon bout de code, auriez-vous une idée? Merci d'avance :)

<?php   
    //Connexion à la BDD
    mysql_connect('localhost','root','');
    mysql_select_db("pomme-poire");
   
    // On vérifie qu'il y a un champs
    if ( isset($_POST['email']) )
    {
        if ( $_POST['email'] != NULL) // On vérifie que le champs est remplit
        {
        $email = $_POST['email']; // On transmet la valeur du champs dans une variable
        $verif_email = mysql_query ("SELECT count(mail) FROM newsletter WHERE mail LIKE '$email'")or die ("erreur dans la requête"); //On compte le nombre de fois où apparait cette valeur dans la BDD
                    if ($verif_email == NULL) //Si la valeur n'est pas présente, on inscrit la personne
                    {   
                        mysql_query ("INSERT INTO newsletter VALUES('','$email')") or die ("impossible de transmettre ces valeurs");
                        echo "vous voilà inscrit, vous recevrez donc les derniers articles de pomme poire abricot chaque semaine sous la forme d'un journal pdf";
                    }
                    elseif ($verif_email != NULL) //Si la valeur est déjà présente, on indique que la personne est déjà inscrite
                    {   
                        echo "vous êtes déjà inscrit à le newsletter";
                    }           
                    else
                    {   
                        echo "veuillez entrez une adresse email valide";
                    }
                   
           
        }
       
    }
    else
    {
        echo "il y a eu un problème lors de la transmission de votre mail, veuillez réessayer";
    }
   
?>

Oléiade

3 réponses

oleiade Messages postés 8 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 26 mars 2009
1 mars 2009 à 15:40
Finalement j'ai réussi à trouver la solution seul, je la donne ici pour ceux qui en auraient besoin un jour ou l'autre:

<?php
    //Connexion à la BDD
    mysql_connect('localhost','root','');
    mysql_select_db("pomme-poire");
   
    // On vérifie qu'il y a un champs
    if ( isset($_POST['email']) )
    {
        if ( $_POST['email'] != NULL) // On vérifie que le champs est remplit
        {
        $email = $_POST['email']; // On transmet la valeur du champs dans une variable        $verif_presence mysql_query ("SELECT mail FROM newsletter WHERE mail '$email'");
        $verif_presence1 = mysql_fetch_array ($verif_presence);
            if ($verif_presence1 != NULL)
            {
                echo "vous etes deja enregistre";
            }
            elseif ($verif_presence1 == NULL)
            {
                mysql_query ("INSERT INTO newsletter VALUES('','$email')") or die ("impossible de transmettre ces valeurs");
                echo "vous voilà inscrit, vous recevrez donc les derniers articles de pomme poire abricot chaque semaine sous la forme d'un journal pdf";
            }
        }
    }
            mysql_close();
?>

Si vous voyez néanmoins quelques améliroations à apporter n'hésitez pas ^^
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
2 mars 2009 à 01:27
Salut,

Tu devrais utiliser mysql_num_rows() au lieux de faire de la bidouille avec mysql_fetch_array()
0
oleiade Messages postés 8 Date d'inscription dimanche 1 mars 2009 Statut Membre Dernière intervention 26 mars 2009
2 mars 2009 à 08:04
Je teste ca de suite et j avise, on peut editer ses messages? je suis nouveau ici ^^
Merci en tout cas ^^
0
Rejoignez-nous