Probleme de doublons

Résolu
Bonjour à tous j'ai un problème de doublons que je n'arrive pas avoir l'erreur pourriez vous me donner un coup de main svp et j'ai les photos qui ne s'affiche pas (juste des petits carrés) voici le code
<?php
  
if(!empty($_POST['ajouter'])) {
    $nom=$_POST['nom'];
    $prenom=$_POST['prenom'];
    $cont=$_POST['phone'];
    $contact2=$_POST['contact2'];
    $email=$_POST['email'];
    $sexe=$_POST['sexe'];
    $lieu_habita=$_POST['lieu_habita'];
    $numpiece=$_POST['numpiece'];
    $nomphoto=$_FILES['photo']['name'];
     $matricule=$_POST['matricule'];
      
    require_once('bdconnexion.php');
    //pour plus de lisibilité => attention à l'espace en fin de chaine
    $query="SELECT nom_auditeur,prenom_auditeur,telephone_1_auditeur,telephone_2_auditeur,email_auditeur,sexe_auditeur,lieu_habitation,numero_piece,photo_auditeur,Matricule_auditeur ";
    $query.="FROM auditeur ";
    $query.="WHERE nom_auditeur='".$nom."' ";
    $query.="AND prenom_auditeur='".$prenom."' ";
    $query.="AND telephone_1_auditeur='".$cont."' ";
    $query.="AND telephone_2_auditeur='".$contact2."' ";
    $query.="AND email_auditeur='".$email."' ";
    $query.="AND sexe_auditeur='".$sexe."' ";
    $query.="AND lieu_habitation='".$lieu_habita."' ";
    $query.="AND numero_piece='".$numpiece."' ";
    $query.="AND photo_auditeur='".$nomphoto."' ";
    $query.="AND Matricule_auditeur='".$matricule."'";
 
    $send=mysql_query($query) or die(mysql_error());
    $nbre=mysql_num_rows($send);
    if($nbre !== FALSE && $nbre == 0){
        $req="INSERT INTO auditeur (nom_auditeur,prenom_auditeur,telephone_1_auditeur,telephone_2_auditeur,email_auditeur,sexe_auditeur,lieu_habitation,numero_piece,photo_auditeur,Matricule_auditeur)";
        $req .= " value ";
        $req .= "('$nom','$prenom','$cont','$contact2','$email','$sexe','$lieu_habita','$numpiece','$nomphoto','$matricule')";
        $envoi=mysql_query($req) or die(mysql_error());
        //IF facultatif, car l'insertion s'est bien pass&ée
        if ($envoi !== FALSE) {
            //Deplacement fichier seulement si insertion OK
            echo "nouveau auditeur ajout&eacute";
            $file_tmp_name=$_FILES['photo']['tmp_name'];
            move_uploaded_file($file_tmp_name,"./images/$nomphoto");
        }
    } else {
        echo "cet auditeur s'est d&egravej&agrave inscrit";    
    }
}
?>

11 réponses

  1. en fait le code ne fait que des insertions même quand l’élément existe déjà et quand je fais afficher les infos dans une page tout apparaît sauf la photo juste un petit carré
    1. Modérateur
      Bonjour,

      Il te faudra être plus précis.....
      des doublons.... dans quoi ??? où ça ????
      les images ne s'affichent pas.... où ça ??? avec quel code ????

      Là tu ne nous a coller que le code d'insertion en BDD de ton formulaire...
      sans aucune autre explication ... impossible de te répondre.

      PS: tu utilises l'ancienne extension mysql .. je t'invite à lire ceci puis à en changer : https://www.commentcamarche.net/faq/43261-php-l-extension-mysql-est-obsolete#top

      1. Modérateur
        Est-ce que tu as essayé de faire un ECHO de ta variable $query pour voir si la requête, testée DIRECTEMENT dans ta BDD, te retourne quelque chose ??

        au passage... dans le WHERE... je ne vérifierai que l'email (et éventuellement nom / prénom ) .... Là ... tu vérifies trop de choses.... il suffirait qu'il change de numéro de téléphone ou le nom de la photo... et là ... tu referais une insertion en BDD....

        1. oui j'ai un résultat mais quand je remet les memes info il accepte
           <?php
            
          if(!empty($_POST['ajouter'])) {
              $nom=$_POST['nom'];
              $prenom=$_POST['prenom'];
              $cont=$_POST['phone'];
              $contact2=$_POST['contact2'];
              $email=$_POST['email'];
              $sexe=$_POST['sexe'];
              $lieu_habita=$_POST['lieu_habita'];
              $numpiece=$_POST['numpiece'];
              $nomphoto=$_FILES['photo']['name'];
               $matricule=$_POST['matricule']; 
              require_once('bdconnexion.php');
              //pour plus de lisibilité => attention à l'espace en fin de chaine
              $query="SELECT nom_auditeur,prenom_auditeur,email_auditeur,sexe_auditeur,Matricule_auditeur ";
              $query.="FROM auditeur ";
              $query.="WHERE nom_auditeur='".$nom."' ";
              $query.="AND prenom_auditeur='".$prenom."' ";
              $query.="AND email_auditeur='".$email."' ";
              $query.="AND sexe_auditeur='".$sexe."' ";
              $query.="AND Matricule_auditeur='".$matricule."'";
              $send=mysql_query($query) or die(mysql_error());
              $nbre=mysql_num_rows($send);
              if($nbre !== FALSE && $nbre == 0){
                  $req="INSERT INTO auditeur (nom_auditeur,prenom_auditeur,telephone_1_auditeur,telephone_2_auditeur,email_auditeur,sexe_auditeur,lieu_habitation,numero_piece,photo_auditeur,Matricule_auditeur)";
                  $req .= " value ";
                  $req .= "('$nom','$prenom','$cont','$contact2','$email','$sexe','$lieu_habita','$numpiece','$nomphoto','$matricule')";
                  $envoi=mysql_query($req) or die(mysql_error());
                  //IF facultatif, car l'insertion s'est bien passée
                  if ($envoi !== FALSE) {
                      //Deplacement fichier seulement si insertion OK
                      echo "nouveau auditeur ajouté";
                      $file_tmp_name=$_FILES['photo']['tmp_name'];
                      move_uploaded_file($file_tmp_name,"./images/$nomphoto");
                  }
              } else {
                  echo "cet auditeur s'est dèjà inscrit";    
              }
          }
          ?>
          1. Modérateur
            Et si tu fais un echo de ta variable $nbre ... qu'est-ce que ça donne ?
        2. cela me retourne 0
          1. Modérateur
            C'est que ta requête ne retourne AUCUN résultat ... donc.. c'est normal qu'il créé une nouvelle ligne dans ta table.

            Mais..... si toi tu penses que ça ne devrait pas retourner 0 ... c'est qu'il y a un souci au niveau de ta requête.

            Donc :
            1 - Fais un echo de ta variable $query et colles nous le résultat sur le forum

            2 - Utilises le résultat de ce echo pour tester ta requête DIRECTEMENT dans ta BDD et regardes si elle retourne réellement quelque-chose ( un imprime-écran serait le bienvenue.... )
        3. 1.resultat du echo $query
          SELECT nom_auditeur
                     ,prenom_auditeur
                     ,email_auditeur
                     ,sexe_auditeur
                     ,Matricule_auditeur 
          FROM auditeur 
          WHERE nom_auditeur='kouakou' 
            AND prenom_auditeur='franck' 
            AND email_auditeur='kouakou@yahoo.fr' 
            AND sexe_auditeur='Homme' 
            AND Matricule_auditeur='201602101647-M'
          

          nouveau auditeur ajouté
          2.

          EDIT : Ajout des balises de code (la coloration syntaxique).
          Explications disponibles ici :ICI

          Merci d'y penser dans tes prochains messages.
          1. je n'arrive pas coller l'imprime ecran
            1. Modérateur
              lorsque tu fais "répondre" surle fourm .... tu cliques sur l'icone image qui se trouve en haut ....
          2. voila
            1. Modérateur
              dis donc ...
              tu m'as répondu

              oui j'ai un résultat mais quand je remet les memes info il accepte

              dans un précédent message .....
              mais .... là .... ... et bien... on est d'accord .... ta requête NE RETOURNE AUCUN RESULTAT !
              Donc c'est normal qu'il fasse une insertion !!!!

              Non ???!!!!
            2. @jordane45lol j'avais pas bien compris dans ce cas je fais quoi
            3. Modérateur
              @delavega470Est-ce qu'il y a des informations dans ta BDD ??
              Si oui... commence par faire ce que je t'ai proposé dans un message précédent ..... NE METS PAS AUTANT DE CHOSES DANS TON WHERE !
              Limite ta requête sur l'adresse mail par exemple.
          3. ok j'essaye
            1. Modérateur
              Et surtout .... commence par tester tes requêtes DIRECTEMENT DANS TA BDD avant d'essayer de les mettre dans ton code php
          4. j'ai trouvé mes erreurs c’était ma BD qui ne correspondait pas !! merci encore
            1. Modérateur
              Si la question est résolue..
              Merci de ne pas oublier de clôturer le sujet
              (en cliquant sur le lien "Marquer comme résolu" qui se trouve sous le titre de la question)

              Cordialement,
              Jordane