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 :

pourquoi mes fichiers s'insèrent en double? [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Par défaut pourquoi mes fichiers s'insèrent en double?
    Bonjour,
    Je travaille sur la réalisation d'un forum, et je me trouve confrontée à quelques problèmes (2) que je n'arrive pas à résoudre. Peut-être que votre savoir pourra m'aider...

    Voici mon code pour insérer un nouveau message dans le forum:
    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
     
    //connexion au serveur 
    include("connexion.php"); 
     
     
    //Connection à mysql et sélection de la base de données 
    $select = mysql_select_db($nomdelabase); 
     
     
     
      //récupération des valeurs des champs: 
     
      //Sujet: 
      $Sujet = $_POST['Sujet'] ; 
      //Contenu: 
      $Contenu = $_POST['Contenu']; 
      //Type de message: 
      $LibelleTypeMessage = $_POST['LibelleTypeMessage']; 
      //Qualifiant: 
      $LibelleQualifiant = $_POST['LibelleQualifiant']; 
      //Fichier Joint: 
      $FichierAttache = $_POST['FichierAttache']; 
      //Date de création du message: 
      $DateCreation=date("d/m/Y");  
      //Fichier Attaché: 
      $FichierAttache = $_FILES["file"]["name"]; 
      // Login: 
      $Utilisateur_Login = $_SESSION['Login']; ; 
     
     
     
    //création de la requête SQL- insertion des champs dans la BDD 
     
      $requete = "INSERT INTO message (idMessage,Message_idMessage, Utilisateur_Login, Sujet, Contenu, FichierAttache, DateCreation) VALUES ('','$Message_idMessage','$Utilisateur_Login','$Sujet','$Contenu','$FichierAttache', now())" ;
     
     
    // exécution de la requête : on envoie la requête au serveur qui nous retourne le résultat 
    $result = mysql_query($requete); 
    if ($result = mysql_query ($requete)) 
    echo "Votre message est enregistré"; 
    else 
    echo mysql_error(); 
     
    //***Upload du fichier***// 
    if(isset($_FILES['FichierAttache'])) 
    { 
      // parametres 
      unset($erreur); 
      $extensions_ok = array('png', 'gif', 'jpg', 'jpeg','pdf','doc'); 
      $taille_max = 100000; 
      $dest_dossier = 'FichierAttache/'; 
     
      // vérifications 
      if( !in_array( substr(strrchr($_FILES['FichierAttache']['name'], '.'), 1), $extensions_ok ) ) 
      { 
        $erreur = 'Veuillez sélectionner un fichier de type png, gif, jpg, pfd, ou doc !';   
      } 
      elseif( file_exists($_FILES['FichierAttache']['tmp_name'])  
              and filesize($_FILES['FichierAttache']['tmp_name']) > $taille_max) 
      { 
        $erreur = 'Votre fichier doit faire moins de 500Ko !'; 
      } 
      // copie du fichier 
      if(!isset($erreur)) 
      { 
        $dest_fichier = basename($_FILES['FichierAttache']['name']); 
        // formatage nom fichier 
        // enlever les accents 
        $dest_fichier = strtr($dest_fichier,  
        'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ',  
        'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); 
        // remplacer les caracteres autres que lettres, chiffres et point par _ 
        $dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier); 
        // copie du fichier 
        move_uploaded_file($_FILES['FichierAttache']['tmp_name'], $dest_dossier . $dest_fichier); 
      } 
    } 
     
     
        mysql_close();  // on ferme la connexion  
        }
    Mes 2 problèmes sont les suivants:
    1. Les données s'insèrent en double dans la base ( je ne comprends vraiment pas pourquoi)
    2. Le nom du fichier joint ne s'insère pas dans la base.

    Je sais que mon code est long, si c'est génant dites le moi et je vous donnerai la partie du code qui vous intéresse.

    J'espère que vous pourrez m'aider, car je bloque là dessus depuis un moment.

    Merci par avance!

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Par défaut
    Pour ce qui de l'exécution de la requête deux fois, c'est ce que vous faites ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $result = mysql_query($requete); 
    if ($result = mysql_query ($requete))
    Pour le problème au niveau du fichier :
    Ne serait-ce pas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $FichierAttache = $_FILES["FichierAttache"]["name"];
    Au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $FichierAttache = $_FILES["file"]["name"];
    Par ailleurs et si j'ai bien compris le fonctionnement de votre script, n'est-il pas plus cohérent de faire l'insertion dans la base de données à la fin : vos tests peuvent échouer (extension par exemple) et le chemin vers ce fichier est par la suite probablement faux (manipulé par strtr et preg_replace : l'une de ces deux fonctions est certainement de trop d'ailleurs) ?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Avril 2007
    Messages : 29
    Par défaut reponse
    Si c'est exactement ça!
    Vous venez de me donner en 2 secondes la réponse que je cherchais depuis un long moment.

    Vive les forums!

    Merci!

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/11/2006, 11h42
  2. Réponses: 1
    Dernier message: 17/10/2005, 22h47
  3. [VB.NET] Ouvrir fichier dans appli par double-clic dessus
    Par vynce dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/03/2005, 16h43
  4. Problème sur le format de mes fichiers shell
    Par Dupont Lionel dans le forum Linux
    Réponses: 6
    Dernier message: 03/02/2005, 15h20
  5. [JLabel][HTML]pourquoi mes images s'affiche pas?!
    Par La Truffe dans le forum Composants
    Réponses: 8
    Dernier message: 29/04/2004, 11h23

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