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 :

Lister et INSERT [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut Lister et INSERT
    Salut à tous !

    J'ai récupéré un code qui me liste et affiche et tous les docoments WORD d'un répertoire.

    Le problème est que, à partir de script, j'aimerai insérer tous les documents dans ma base de données de facon à y mettre un commentaire. Je ferai alors une requête directement dans ma BDD qui m'affichera le nom du fichier ET les commentaires que j'ajouterai manuellement plus tard.
    .
    Mon probleme est que, pour le moment, je n'arrive pas à les insérer. J'en ai plus de 1000 et ca m'embete de les faire 1 par 1 !!

    Ma base s'appelle bulletin et ma base [b]totalfrance[b].

    Voici le code qui liste le répertoire :
    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
    <?php 
    function browse ($pDirectory, $pExtension) 
    { 
        if($handle = opendir($pDirectory)) 
        { 
             while(false !== ($file = readdir($handle))) 
            { 
                $getExt = explode(".", $file); 
                $countExt = count($getExt); 
                $fExt = $countExt - 1; 
                $myExt = $getExt[$fExt]; 
     
                if (($myExt == $pExtension) && ($file != ".") && ($file != "..")) 
                    {$files[] = $file;} 
            } 
         } 
     return $files; 
    closedir($handle); 
    } 
     
     
    // utilisation de la fonction avec des fichiers EXE 
    $getFile = browse("/mon_chemin", "doc");
     
    $countFile = count($getFile); 
    echo "<b> $countFile Quero trouvé(s)</b><br>"; 
     
     
    foreach ($getFile as $myFile) 
        {echo $myFile."<br>";} 
     
    ?>
    Dans le même fichier count.php, en haut, j'ai mis la requete qui essaie d'insérer le contenu. Voci ce que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?
    mysql_select_db( bulletin ); 
    $req = mysql_query('INSERT INTO totalfrance(id, titre) VALUES($myFile.);  
    
    mysql_close($db); 
    ?>
    Merci de votre coup de main.

  2. #2
    Membre éprouvé Avatar de ..:: Atchoum ::..
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 159
    Par défaut
    Bonsoir,

    la première chose est de mettre un or die() sur ta requête

    essaie cela
    $req = mysql_query('INSERT INTO totalfrance(titre) VALUES($myFile.) or die("Erreur de requête :".mysql_error());
    ++

  3. #3
    Expert confirmé Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Par défaut
    euh... la requête, tu l'a mise dans ton foreach ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Merci à tous les deux !

    En fait, je crois que je suis un peu perdu là !

    Que faudrait il que je fasse s'il vous plait ?

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Re !!

    J'ai un peu avancé mais ce code ne rajoute qu'un fichier! C'est le seul qui commence par un [. Pourquoi ? Où est mon erreur s'il vous plait ?

    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
    <?php 
    // connexion à la base
    $db = mysql_connect('****', '****', '****')  or die('Erreur de connexion '.mysql_error());
    // sélection de la base  
     
        mysql_select_db('ma_base',$db)  or die('Erreur de selection '.mysql_error()); 
        $postFile = browse("mon_chemin", "doc"); 
        $countFile = count($postFile); 
    	foreach ($postFile as $myFile) 
      {
        // on écrit la requête sql 
        $sql = "INSERT INTO ma_table(id, titre) VALUES('','$myFile')";} 
     
        // on insère les informations du formulaire dans la table 
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 
     
        // on affiche le résultat pour le visiteur 
        echo 'Vos infos on été ajoutées.'; 
    function browse ($pDirectory, $pExtension) 
    { 
        if($handle = opendir($pDirectory)) 
        { 
             while(false !== ($file = readdir($handle))) 
            { 
                $getExt = explode(".", $file); 
                $countExt = count($getExt); 
                $fExt = $countExt - 1; 
                $myExt = $getExt[$fExt]; 
     
                if (($myExt == $pExtension) && ($file != ".") && ($file != "..")) 
                    {$files[] = $file;} 
     
            }
         } 
     return $files;
    closedir($handle); 
    } 
     // utilisation de la fonction avec des fichiers EXE 
    $getFile = browse("mon_chemin", "doc"); 
     
     
    $countFile = count($getFile);
     
     
     
    echo "<b> $countFile Fichiers(s) trouvé(s)</b><br>"; 
     
     
    foreach ($getFile as $myFile) 
      {
        echo   "<a target='_blank' href='mon_url/$myFile'>".$myFile."<br>";} 
    mysql_close();  // on ferme la connexion 
     
    ?>
    Merci de votre aide

  6. #6
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Dans ton code, le mysql_query() ne se fera qu'une fois...
    Tu as fermé l'accolade du foreach au mauvais endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($postFile as $myFile)
      {
        // on écrit la requête sql
        $sql = "INSERT INTO ma_table(id, titre) VALUES('','$myFile')";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      }

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Citation Envoyé par Linaa
    Dans ton code, le mysql_query() ne se fera qu'une fois...
    Tu as fermé l'accolade du foreach au mauvais endroit

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($postFile as $myFile)
      {
        // on écrit la requête sql
        $sql = "INSERT INTO ma_table(id, titre) VALUES('','$myFile')";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      }
    Merci bien ! Tu m'as mis sur la bonne voie ! Cependant, tu as fait un petite erreur toi aussi !

    Je donne la solution au cas où qq'un rencontrerait le même problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($postFile as $myFile)
      {
        // on écrit la requête sql
        $sql = "INSERT INTO ma_table(id, titre) VALUES('','$postFile')";
     
        // on insère les informations du formulaire dans la table
        mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
      }

    Merci à tous !

  8. #8
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Citation Envoyé par mikedimoi
    Merci bien ! Tu m'as mis sur la bonne voie ! Cependant, tu as fait un petite erreur toi aussi !
    Quelle erreur ? J'peux pas deviner ce que tu comptes insérer dans ta base...
    Penses au

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Merc pour ton aide.

    J'ai finalement trouvé une manière plus simple de le faire :
    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
    <?
     
    if ($fichiers = glob($file.'*.doc' , GLOB_NOSORT))
     
    {     
          $sql = mysql_connect('*****', '****', '****');     
    	  mysql_select_db('download', $sql);      
    	  foreach ($fichiers as $fichier) 
     
    	  {          
    	  $query = "INSERT INTOmatable(id, titre) VALUES('','".$fichier."')";         
    	  mysql_query($query , $sql); 
    	  echo $fichier.'</br>';    
    	  }      
    	  mysql_close($sql);} 
     
    ?>
    Ce qui m'ennuie un peu c'est la facon dont est interprété le script :
    ../../new/bulletin1.doc
    ou
    new/bulletin1.doc
    selon où se trouve le fichier.

    N'y a t il pas moyen d'avoir seulement le fichier sans le chemin ?
    bulletin1.doc
    Merci d'avance

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Pas de solution ?!

  11. #11
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Là, c'est ta fonction browse() qu'il faudra modifier.
    Tu peux utiliser la fonction basename pour récupérer seulement le nom du fichier.

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    C'est justement ce que je n'arrive pas à ajouter !

    Comment faut il que je fasse ?

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $path = "/new/";
      $file = basename ($path);        
     
    if ($fichiers = glob('$file' , GLOB_NOSORT))
    Comme ceci ??

  14. #14
    Membre émérite
    Avatar de Linaa
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    987
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 987
    Par défaut
    Bah à l'insertion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $query = "INSERT INTO matable(id, titre) VALUES('','".basename($fichier)."')";
    C'est ce que tu veux ? Ne pas stocker le chemin dans la BD, mais juste le fichier ?

  15. #15
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut Re: Lister et INSERT
    Merci beaucoup ! J'ai finalement troouvé la soltion :
    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
    <?php 
    function browse ($pDirectory, $pExtension) 
    { 
        if($handle = opendir($pDirectory)) 
        { 
             while(false !== ($file = readdir($handle))) 
            {
                $fichier=substr($fichier, 5);
                $getExt = explode(".", $file); 
                $countExt = count($getExt); 
                $fExt = $countExt - 1; 
                $myExt = $getExt[$fExt]; 
     
                if (($myExt == $pExtension) && ($file != ".") && ($file != "..")) 
                    {$files[] = $file;} 
            } 
         } 
     return $files; 
    closedir($handle); 
    } 
     
     
    // utilisation de la fonction avec des fichiers EXE 
    $getFile = browse("/mon_chemin", "doc");
     
    $countFile = count($getFile); 
    echo "<b> $countFile Quero trouvé(s)</b><br>"; 
     
     
    foreach ($getFile as $myFile) 
        {echo $myFile."<br>";} 
     
    ?>
    Merci pour ton aide

  16. #16
    Membre Expert
    Avatar de ska_root
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    1 203
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Août 2005
    Messages : 1 203
    Par défaut

  17. #17
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    44
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 44
    Par défaut
    Oups, excusez moi !

    Encore merci à tous !

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

Discussions similaires

  1. Lister les softs installés sur un Pc
    Par Jflgb dans le forum C++Builder
    Réponses: 18
    Dernier message: 23/06/2004, 17h34
  2. [Postgresql] pb lors d'insertion de données
    Par bob20000 dans le forum Requêtes
    Réponses: 8
    Dernier message: 04/11/2002, 15h33
  3. Réponses: 8
    Dernier message: 17/10/2002, 12h52
  4. Réponses: 4
    Dernier message: 28/09/2002, 00h00
  5. [TP]Lister les fichiers d'un répertoire
    Par nvtitan dans le forum Turbo Pascal
    Réponses: 4
    Dernier message: 21/06/2002, 11h22

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