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érification de la présence d'enregistrement avant insertion [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut Vérification de la présence d'enregistrement avant insertion
    Voici mon problème, j'ai créé un formulaire (nommé inscriptiondmdeur.php) qui permet d'enregistrer des renseignements sur des demandeurs d'emploi, ensuite après click sur le bouton d'envoi il ya une page stockdonnees.php qui se charge d'envoyer par requete sql les données ds la base de données. Dans mon code, j'ai mis des lignes qui vérifient la présence du nouvel enregistrement ds la base et s'il n'existe pas on l'envoie ds la base, dans le cas échéant un msg doit avertir que le nom/prénom existe déjà.

    Voici le code du fichier stockdonnees.php
    Je vois pas où se situe le problème, j'arrive tjrs à enregistrer 2 fois le mm demandeur

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    <html>
    <head>
    </head>
    <body>
     
    <?php
    $NomDem=strtoupper&#40;$_POST&#91;'NomDem'&#93;&#41;;
    $PrenomDem=ucwords&#40;$_POST&#91;'PrenomDem'&#93;&#41;;
    $AdresseDem=$_POST&#91;'AdresseDem'&#93;;
    $TelephoneDem=$_POST&#91;'TelephoneDem'&#93;;
    $SexeDem=$_POST&#91;'SexeDem'&#93;;
    $DateNaissDem=$_POST&#91;'DateNaissDem'&#93;;
    $CodePays=$_POST&#91;'CodePays'&#93;;
    $CodePoste=$_POST&#91;'CodePoste'&#93;;
     
     
    //Récupération des variables reçues par la méthode post du formulaire
    if &#40; isset&#40;$_POST&#91;"NomDem"&#93;&#41; && isset&#40;$_POST&#91;"PrenomDem"&#93;&#41; && isset &#40;$_POST&#91;"AdresseDem"&#93;&#41; && isset &#40;$_POST&#91;"TelephoneDem"&#93;&#41; && isset &#40;$_POST&#91;"SexeDem"&#93;&#41; && isset &#40;$_POST&#91;"DateNaissDem"&#93;&#41; && isset &#40;$_POST&#91;"CodePays"&#93;&#41; && isset &#40;$_POST&#91;"CodePoste"&#93;&#41;&#41;
    &#123;
    if &#40;empty&#40;$NomDem&#41; || empty&#40;$PrenomDem&#41;  || empty&#40;$AdresseDem&#41; || empty&#40;$TelephoneDem&#41; && empty&#40;$SexeDem&#41; && empty&#40;$DateNaissDem&#41; && empty&#40;$CodePays&#41; && empty&#40;$CodePoste&#41; &#41; 
     
       &#123;
       echo "<font color='#FF0000'>";
       echo " Il y a au moins un champs qui est vide . Cliquer sur Précédent pour modifier..\n Merci !!"; 
       echo "</font>";
       &#125; 
       else 
      &#123;
     
     
    //Connection à la base de données gestdemand
    $serveur="localhost";
    $login="root";
    $pass="";
    $bdd="gestdemand";
     
    //Connection à MySQL
    mysql_connect&#40;$serveur,$login,$pass&#41; or die&#40;mysql_error&#40;&#41;&#41;; 
     
    //Sélectionne la base de donnée gestdemand
    mysql_selectdb&#40;$bdd&#41; or die&#40;mysql_error&#40;&#41;&#41;;
     
    // INSERTION DES DONNEES DANS LA TABLE PROVENANT DU FORMULAIRE INSCRIPTIONDMDEUR
    // Requête SQL d'insertion des champs du formulaire précédent dans la table demandeur 
    $reqinsert = "INSERT INTO demandeur VALUES &#40;'','$NomDem', '$PrenomDem', '$AdresseDem', '$TelephoneDem', '$SexeDem', '$CodePoste', '$CodePays', '$DateNaissDem'&#41;;"; 
     
    // Création de la requête pour savoir s'il y a déjà quelqu'un du même nom dans la table &#58;
    $Resultat = mysql_query&#40;"SELECT * FROM `demandeur` WHERE &#40;`NomDem` LIKE '$NomDem' && 'PrenomDem' LIKE '$PrenomDem'&#41;"&#41;;
     
    // Si le résultat est 0, on passe à la suite...
    if &#40;mysql_numrows&#40;$Resultat&#41; == 0&#41;
    &#123;
    // Exécution de la requête, si une erreur survient, affiche un message 
    $result = mysql_query&#40;$reqinsert&#41; or die &#40;"Exécution de la requête impossible"&#41;;
     
    // L'insertion s'est bien passé, affiche un message 
    echo "Les données ont bien été insérées.";
    &#125; 
    else
    &#123;
    ?>
          <h2>
            <font color="#FF0000">
              Désolé ! Ce demandeur existe déjà dans notre base de données.
              <a href="inscriptiondmdeur.php">
                Retourner à la page precendente
              </a> 
              s'il vous plait
            </font>
          </h2>
      <?
          &#125;
     
    //Fermeture de la base
    mysql_close&#40;&#41;;
     
     
    &#125;
    &#125;
    ?>
    <br><br>
    <u>MENU</u><br><br>
    1-<a href="inscriptiondmdeur.php"> Insérer un nouvel enregistrement...</a><br><br>
    2- <!--DEBUT CODE PAGE PRECEDENTE -->
    <A HREF="Javascript&#58;history.go&#40;-1&#41;">Aller à la page précédente</A>
    <!--FIN CODE PAGE PRECEDENTE-->
    </body>
    </html>
    Toute aide serait bienvenue, j'dois rendre mon application dans 2 semaines maxi

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    214
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 214
    Points : 208
    Points
    208
    Par défaut
    salut,
    dans ton WHERE (blabla && blabla), pourquoi tu mets pas AND au lieu de && ?
    Peut être que le WHERE plante la dessus ?
    Est-ce que tu as un phpMyAdmin pour tester ta requête en remplaçant tes $NomDem et $Renomdem par des valeurs ?

  3. #3
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par jibouze
    salut,
    dans ton WHERE (blabla && blabla), pourquoi tu mets pas AND au lieu de && ?
    Peut être que le WHERE plante la dessus ?
    Est-ce que tu as un phpMyAdmin pour tester ta requête en remplaçant tes $NomDem et $Renomdem par des valeurs ?
    J'ai remplacé les && par le AND comme tu l'as suggéré mais rien n'a changé, j'arrive tjrs à enregistrer des doublons

  4. #4
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Tu as vérifié que mysql_numrows te renvoie autre chose que zéro si la personne existe déjà ?

    // Création de la requête pour savoir s'il y a déjà quelqu'un du même nom dans la table :
    $Resultat = mysql_query("SELECT * FROM `demandeur` WHERE (NomDem LIKE '$NomDem' AND PrenomDem LIKE '$PrenomDem')");
    echo "nb d'enregistrements : ".mysql_numrows($Resultat) ;
    // Si le résultat est 0, on passe à la suite...
    if (mysql_numrows($Resultat) == 0)
    {
    ...

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par - Manuella Leray -
    Tu as vérifié que mysql_numrows te renvoie autre chose que zéro si la personne existe déjà ?

    // Création de la requête pour savoir s'il y a déjà quelqu'un du même nom dans la table :
    $Resultat = mysql_query("SELECT * FROM `demandeur` WHERE (NomDem LIKE '$NomDem' AND PrenomDem LIKE '$PrenomDem')");
    echo "nb d'enregistrements : ".mysql_numrows($Resultat) ;
    // Si le résultat est 0, on passe à la suite...
    if (mysql_numrows($Resultat) == 0)
    {
    ...
    Je viens de vérifier en saississant un enregistrement déjà présent ds la base, et il enregistre qd mm ce nom/prénom ds la base.. le mysql_numrows m'affiche 0 .. bizarre

  6. #6
    Membre à l'essai
    Inscrit en
    Juillet 2004
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 17
    Points : 16
    Points
    16
    Par défaut
    Peux-tu nous mettre le résultat de cet echo là :
    // Création de la requête pour savoir s'il y a déjà quelqu'un du même nom dans la table :
    $select = "SELECT * FROM `demandeur` WHERE (NomDem LIKE '$NomDem' AND PrenomDem LIKE '$PrenomDem')";
    $Resultat = mysql_query($select);
    echo "requête : ".$select;
    // Si le résultat est 0, on passe à la suite...
    if (mysql_numrows($Resultat) == 0)
    {
    ...

  7. #7
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Merci manuella, je viens de porter les modifications et now ca marche !

    Next
    Voici ce qui me reste à faire pour parfaire mon application : je voudrais qu'après avoir vérifié que l'enregistrement n'existait pas préalablement dans la base et après l'avoir donc sauvegardé, pouvoir (par un formulaire p-e) entrer les infos du CV du demandeur, je veux parler de ses expériences professionnelles, ses diplomes, la date de dépot de la demande d'emploi et la date de saisie dans notre base.
    Voici qq tables que j'ai dans ma base de données :
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    ----DEMANDEUR-----
    CREATE TABLE `demandeur` &#40;
      `NumDem` int&#40;6&#41; NOT NULL auto_increment,
      `NomDem` varchar&#40;25&#41; NOT NULL default '',
      `PrenomDem` varchar&#40;40&#41; NOT NULL default '',
      `AdresseDem` varchar&#40;50&#41; NOT NULL default '',
      `TelephoneDem` int&#40;18&#41; NOT NULL default '0',
      `SexeDem` varchar&#40;10&#41; NOT NULL default '',
      `CodePoste` int&#40;6&#41; NOT NULL default '0',
      `CodePays` char&#40;2&#41; NOT NULL default 'BJ',
      `DateNaissDem` date NOT NULL default '0000-00-00',
      PRIMARY KEY  &#40;`NumDem`&#41;
    &#41; ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=19 ;
     
    -----DEMANDE-----
    CREATE TABLE `demande` &#40;
      `NumDmd` int&#40;6&#41; NOT NULL default '0',
      `DateDepDmd` date NOT NULL default '0000-00-00',
      `DateSaisieDmd` date NOT NULL default '0000-00-00',
      `NumDem` int&#40;6&#41; NOT NULL default '0',
      PRIMARY KEY  &#40;`NumDmd`&#41;
    &#41; ENGINE=InnoDB DEFAULT CHARSET=latin1;
     
    ----EMPLOIS PASSES----
    CREATE TABLE `emploief` &#40;
      `NumDem` int&#40;6&#41; NOT NULL default '0',
      `CodeEnt` int&#40;6&#41; NOT NULL default '0',
      `DateDebEmp` date NOT NULL default '0000-00-00',
      `DateFinEmp` date NOT NULL default '0000-00-00',
      `Details` varchar&#40;30&#41; NOT NULL default '',
      PRIMARY KEY  &#40;`NumDem`,`CodeEnt`&#41;
    &#41; ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Table servant de lien entre le demandeur et les emplois qu''i';
     
    ----OBTENIR----
    CREATE TABLE `obtenir` &#40;
      `NumDem` int&#40;6&#41; NOT NULL default '0',
      `CodeDip` int&#40;6&#41; NOT NULL default '0',
      `AnneeDip` date NOT NULL default '0000-00-00',
      `CodeCF` int&#40;6&#41; NOT NULL default '0',
      `NumFotoAtt` int&#40;6&#41; NOT NULL default '0',
      PRIMARY KEY  &#40;`NumDem`,`CodeDip`&#41;
    &#41; ENGINE=InnoDB DEFAULT CHARSET=latin1 COMMENT='Permet d''avoir une relation entre le demandeur et les diplom';
    Ci-dessus des exemples de tables que j'ai eu à créer...(la liste n'est pas exhaustive)
    Des idées de code pour pouvoir insérer les expériences professionelles/diplomes/dates/ ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2004
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    pas de propositions ?

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

Discussions similaires

  1. Vérifier l'existence d'un enregistrement avant insertion
    Par patnership dans le forum Général Java
    Réponses: 5
    Dernier message: 19/02/2015, 13h05
  2. Vérifier la présence d'un enregistrement avant insertion
    Par Avatar36 dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/01/2015, 22h38
  3. [MySQL] vérifier l'existance d'un enregistrement avant insertion
    Par patheoson dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 22/01/2010, 12h47
  4. [MySQL] vérification existance avant insertion
    Par LaGazelle dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 05/05/2008, 18h13
  5. [MySQL] Vérification de doublons avant insertion
    Par Nicos77 dans le forum PHP & Base de données
    Réponses: 15
    Dernier message: 09/12/2005, 13h37

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