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 :

signaler si un enregistrement existe dans la BD


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Par défaut signaler si un enregistrement existe dans la BD
    Bonjour,
    j'ai un script php que j'utilise pour insérer des données dans ma BD mysql à partir de mon application android.
    j'aimerais modifier ce script de telle sorte qu'il m'indique que l'enregistrement que je suis entrain d'effectuer existe déjà dans la table en question.
    Comment faire?
    ci-dessous mon code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $id_o = isset($_REQUEST['idoffre']) ? $_REQUEST['idoffre'] : '';
    $id_c = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
    mysql_connect("localhost","root","");
    mysql_select_db("mabase");
    $sql=mysql_query("INSERT INTO candidature (idoff,idc) VALUES(" . $id_o . "," . $id_c . ")") ;
    if(!$sql)echo "Error in query: ".mysql_error();
    mysql_close();
    ?>

  2. #2
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Bonjour.

    Ben t'as pas trop le choix, tu dois faire une requête SELECT au préalable sur les critères qui te permettent de définir si l'enregistrement existe déjà ou pas (idoff et idc dans ton cas).

    Si cette requête ne renvoie pas de résultat tu fait ton INSERT sinon, tu affiche un message d'erreur ce genre de chose ...

    Par exemple tu peux te servir d'un COUNT :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT COUNT(*)
    FROM candidateur
    WHERE idoff = '...' AND id_c = '...';

    Tu insert si ça te renvoie 0 sinon message d'erreur ... tu peux aussi te servir de la fonction mysql_num_rows() ce genre de choses (j'ai une préférence pour le COUNT dans ce genre de situation).

    Autre remarque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $id_o = isset($_REQUEST['idoffre']) ? $_REQUEST['idoffre'] : '';
    $id_c = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
    Ces contrôles ne sont pas suffisants, si jamais isset renvoie false, ta requête va tenter d'insérer les valeurs '', c'est pas top ...

    Il faut pas non plus hésiter à se servir de mysql_real_escap_string(), pour se protéger des injections même si elles sont peu probables c'est une bonne habitude à prendre.

    Cordialement,
    Idriss

  3. #3
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Par défaut
    J'ai essayé cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    $id_o = isset($_REQUEST['idoffre']) ? $_REQUEST['idoffre'] : '';
    $id_c = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
    mysql_connect("localhost","root","");
    mysql_select_db("tmjob");
    $sql=mysql_query("SELECT idoff,idc FROM candidature WHERE idoff=" . $id_o . " AND idc=" . $id_c . " ");
    if(!$sql)echo "Error in query: ".mysql_error();
    if(mysql_num_rows($result) > 0)
    $sql=mysql_query("INSERT INTO candidature (idoff,idc) VALUES(" . $id_o . "," . $id_c . ")") ;
    else
    echo 0; // for incorrect login response
    mysql_close();
    ?>
    mais cela n'a pas résolu le problème

  4. #4
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Re bonjour.

    Hum, là ton script ne fait l'insertion que si le tuple existe déjà dans ta table candidature...
    Donc s'il n'existe pas ça n'insert pas. Et pas oublier toutes les remarques

    Vérifie ta condition et ne pas oublier toutes les remarques au dessus

    Idriss

  5. #5
    Membre actif
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2011
    Messages
    77
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2011
    Messages : 77
    Par défaut
    Mysql me retourne cette erreur: Query was empty
    voilà mon script, merci de me le corriger
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php 
    $id_o = isset($_REQUEST['idoffre']) ? $_REQUEST['idoffre'] : '';
    $id_c = isset($_REQUEST['id']) ? $_REQUEST['id'] : '';
    mysql_connect("localhost","root","");
    mysql_select_db("tmjob");
    $sql=mysql_query("SELECT COUNT(*) FROM candidature
    WHERE idoff=" . $id_o . " AND idc=" . $id_c . " ");
    $result = mysql_query($query) or die("Error : " . mysql_error());
    if(mysql_num_rows($result) > 0)
    echo 0; 
    else
    $sql=mysql_query("INSERT INTO candidature (idoff,idc) VALUES(" . $id_o . "," . $id_c . ")");
    ?>

  6. #6
    Rédacteur

    Avatar de ok.Idriss
    Homme Profil pro
    IS Consultant
    Inscrit en
    Février 2009
    Messages
    5 220
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : IS Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2009
    Messages : 5 220
    Par défaut
    Comme dit précédemment ces contrôles ne sont pas suffisants et tu risque de faire des insert vides ... quand on a une erreur il faut investiguer un minimum :

    - utiliser un debugger et faire du pas à pas, ou à défaut de debugger, débugger à la main en affichant les valeurs des variables, etc
    - afficher les requêtes incriminés et les exécuter à la main dans un client MySQL si les erreurs ne t’apparaissent pas flagrantes ...

    Idriss

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/05/2011, 07h16
  2. Vérifier si un enregistrement existe dans une table
    Par developpeur_débutant dans le forum PL/SQL
    Réponses: 4
    Dernier message: 08/06/2010, 12h05
  3. Réponses: 3
    Dernier message: 22/01/2009, 09h07
  4. verifier si un enregistrement existe dans une table
    Par niceen dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 02/04/2008, 21h37
  5. [MySQL] connaitre si un enregistrement existe dans la table
    Par namstou3 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/03/2008, 17h14

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