IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Vérifier si une donnée existe [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut Vérifier si une donnée existe
    Bonjour,

    Je cherche à faire un test si un internaute existe dans ma base (champs email) puis faire un insert si non ou un update si oui.

    Voici mon code (cette page est après la validation du formulaire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    //Vérification email
    $internaute = $bdd->prepare('SELECT email FROM profil WHERE email = ? ');
    $internaute->execute(array($_GET['email']));
    if (empty($internaute->fetch()) {
    	//Insertion profil
    	$req = $bdd->prepare('INSERT INTO profil(prenom, nom, email, tel, adresse, code_postal, ville, password, ip) VALUES(:prenom, :nom, :email, :tel, :adresse, :code_postal, :ville, :password, :ip)');
    	$req->execute(array(
    		'prenom' => $prenom,
    		'nom' => $nom,
    		'email' => $email,
    		'tel' => $tel,
    		'adresse' => $adresse,
    		'code_postal' => $code_postal,
    		'ville' => $ville,
    		'password' => $password,
    		'ip' => $ip
    	));
    }
    else {
    	//Update profil
    	$req = $bdd->prepare('UPDATE profil SET prenom = :prenom, nom = :nom, email = :email, tel = :tel, adresse = :adresse, code_postal = :code_postal, ville = :ville, password = :password, ip = :ip');
    	$req->execute(array(
    		'prenom' => $prenom,
    		'nom' => $nom,
    		'email' => $email,
    		'tel' => $tel,
    		'adresse' => $adresse,
    		'code_postal' => $code_postal,
    		'ville' => $ville,
    		'password' => $password,
    		'ip' => $ip
    	));
    }
    Je pense que mon "if" n'est pas correct. Quelqu'un pourrait-il m'aiguiller ?

    Merci de votre aide.

    Scots

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourquoi penses-tu que ton if n'est pas correct ?
    Tu as debugué un minimum ?

    Dans le cas ou il n'y a pas de résultat le fetch() sera FALSE, autant écrire precisement le bon résultat plutôt que de faire un test général.

    Tu as également la possibilité d'utiliser une requête "ON DUPLICATE KEY UPDATE" qui gérera donc à la fois un INSERT ou un UPDATE ; sauf bien sur si tu veux un traitement distinct supplémentaire pour chaque cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par sabotage
    Pourquoi penses-tu que ton if n'est pas correct ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (empty($internaute->fetch())
    empty() attend comme paramètre une variable, donc effectivement, la condition est mal écrite.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    @Bovino

    Depuis PHP 5.5, empty() supporte tous les styles de notations et pas uniquement les variables. Doc

  5. #5
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Donc pour le coup il n'y a pas d’ambiguïté : soit on est > 5.5 et ça fonctionne, soit il y a une erreur explicite.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  6. #6
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par rawsrc
    Depuis PHP 5.5, empty() supporte tous les styles de notations
    Citation Envoyé par sabotage
    soit on est > 5.5 et ça fonctionne, soit il y a une erreur explicite
    J'étais parti du principe que si Scots poste un problème, c'est que la probabilité pour que son code ne fonctionne pas était élevée, j'ai donc subodoré une version < 5.5 en me basant sur
    Citation Envoyé par Scots
    Je pense que mon "if" n'est pas correct.
    et ai donc considéré inutile d'évoquer le fait que que s'il avait une version plus récente, ça marcherait mieux.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Bonjour à tous et merci de l'aide que vous pourrez m'apporter.

    Après vérification, ma version de PHP est la 5.3.13

    Si cela peut vous aider ...

  8. #8
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Comme dis dans mon premier message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($internaute->fetch() == FALSE) {
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    228
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 228
    Points : 60
    Points
    60
    Par défaut
    Merci Sabotage, j'avais zappé ...

    Testé : Nada. Pas d'update ...

    En fait il me fait l'insert à chaque fois au lieu de faire l'update.

    Edit :

    Petite erreur de ma part. Ta solution fonctionne impec.

    sur l'email j'avais mis bêtement un $_GET['email'] au lieu d'un $_POST['email'] ...

    Merci à tous !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Vérifier si une image existe
    Par kevinf dans le forum Langage
    Réponses: 5
    Dernier message: 20/02/2007, 11h21
  2. Vérifier qu'une variable existe
    Par Phenomenium dans le forum ASP
    Réponses: 1
    Dernier message: 05/10/2006, 15h00
  3. vérifier si une ligne existe, et lister les champs
    Par AIexis dans le forum Débuter
    Réponses: 15
    Dernier message: 27/12/2005, 21h06
  4. Tester si une données existe deja
    Par mael94420 dans le forum ASP
    Réponses: 1
    Dernier message: 18/10/2005, 17h09
  5. Oracle 9i : Vérifier qu'une ligne existe
    Par Fatah93 dans le forum Oracle
    Réponses: 4
    Dernier message: 14/06/2005, 12h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo