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 :

R�cup�rer un fichier CSV sur un serveur et le repasser dans une base donn�es


Sujet :

PHP & Base de donn�es

  1. #1
    Membre confirm�
    Homme Profil pro
    noobies
    Inscrit en
    D�cembre 2014
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : noobies

    Informations forums :
    Inscription : D�cembre 2014
    Messages : 103
    Par d�faut R�cup�rer un fichier CSV sur un serveur et le repasser dans une base donn�es
    Bonjour,

    je m'explique, j'upload un fichier csv pour creer un tableau via ma base de donn�es, ce fichier est aussi sauvegard� dans un dossier sur mon serveur.

    il se trouve dans csv/csv1/nom du fichier.csv

    vu que je ne les stocks pas dans ma base de donn�es je souhaiterais r�-ouvrir ma sauvegarde et de nouveau afficher mon tableau.

    ma question est comment modifier mon fichier afin de refaire l'upload mais ce coup ci depuis le dossier sur le serveur et non celui de mon ordinateur.

    mon formulaire upload (depuis un fichier sur ordinateur)

    Code html : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     <div class="imp">
     
        <form enctype="multipart/form-data" action="import_csv.php?id=<?php echo $id ;?>" method="post">
            <div class="input-row">
                <label class="col-md-4 control-label">Importer fichier CSV Optimus</label>
                <input type="file" name="file" id="file" accept=".csv">
                <br />
                <br />
                <button type="submit" id="submit" name="import" class="btn-submit">Import</button>
                <br />
            </div>
        </form>
     
    </div>

    mon fichier qui me rempli ma table :

    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
    // Creation table
     
     
        if (isset($_POST["import"])) {
     
        $fileName = $_FILES["file"]["tmp_name"];
     
     
        if ($_FILES["file"]["size"] > 0) {
     
          $file = fopen($fileName, "r");
     
          while (($column = fgetcsv($file, 10000, ";")) !== FALSE) {
            $sql = "INSERT  INTO `".$csv."`( `COL 14`, `COL 24`)  
    		values ('" . $column[14] . "','" . $column[24] . "')";
            $result = mysqli_query($conn, $sql);
     
            if (! empty($result)) {
              move_uploaded_file($uploaded_file, $destination_path);
            } else {
              $type = "error";
              $message = "Problème lors de l'importation de données CSV";
            }
          }
        }
      }
     
      //Retourner à la page index.php
      header('Location: index3.php?id='.$id);
      exit;
    merci

  2. #2
    Expert confirm�
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 669
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 669
    Par d�faut
    vous pouvez faire le t�l�chargement d'un fichier avec ce code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    		$contenuFichier = ... // ici lecture du fichier
    		$nomFichier = "test1.csv";
     
    		$tailleFichier = strlen($contenuFichier);
     
    		$nomFichier = str_replace('"', '\\"', $nomFichier);
     
    		header('Content-Type: application/octet-stream');
    		header("Content-Length: $tailleFichier");
    		header("Content-Disposition: attachment; filename=\"$nomFichier\"");
     
    		echo $contenuFichier;
     
    		exit();

  3. #3
    Mod�rateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activit� : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par d�faut
    Plut�t que d'utiliser une boucle d'insertions unitaires, utilisez le chargement par LOAD en pr�cisant les colonnes � alimenter dans la table.

    Voir la documentation ICI

  4. #4
    Membre confirm�
    Homme Profil pro
    noobies
    Inscrit en
    D�cembre 2014
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : noobies

    Informations forums :
    Inscription : D�cembre 2014
    Messages : 103
    Par d�faut
    bonjour,

    @mathieu ca c'est pour telecharger le fichier sur ordinateur, je cherche a le lire sur mon site pour le transferer dans ma table.

    @escartefigue j'ai regard� ton lien, je ne suis pas un pro en requ�te et php.

    j'ai essaye ce code mais ca ne fonctionne pas.

    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
    <?php
     
    $id = $_GET['id'];
    $fichier = $_GET['fichier'];
    $csv = 'csv'.$id;
     
    include("db_connect.php");
     
    $contents = file_get_contents('csv/csv1/'.$fichier);
     
      // Creation table
     
            $sql = "LOAD DATA INFILE `".$contents."`INSERT  INTO `".$csv."`( `COL 14`, `COL 24`)  
    		values ([VIN],[GLOBAL RESULT])";
            $result = mysqli_query($conn, $sql);
     
    //Retourner à la page index3.php pour lecture
     
    header('Location: index3.php?id='.$id);
    exit;
     
     
    ?>
    je doit mal faire

    a l'origine je r�cup�re le fichier upload� dans la variable $POST["import"]

    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
    // Creation table
     
     
        if (isset($_POST["import"])) {
     
        $fileName = $_FILES["file"]["tmp_name"];
     
     
        if ($_FILES["file"]["size"] > 0) {
     
          $file = fopen($fileName, "r");
     
          while (($column = fgetcsv($file, 10000, ";")) !== FALSE) {
            $sql = "INSERT  INTO `".$csv."`( `COL 14`, `COL 24`)  
    		values ('" . $column[14] . "','" . $column[24] . "')";
            $result = mysqli_query($conn, $sql);
     
            if (! empty($result)) {
              move_uploaded_file($uploaded_file, $destination_path);
            } else {
              $type = "error";
              $message = "Problème lors de l'importation de données CSV";
            }
          }
        }
      }
    j'ai essay� comme ceci, pas d'erreurs mais rien ne s'�crit dans la table :

    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
    <?php
     
    $id = $_GET['id'];
    $fichier = $_GET['fichier'];
    $csv = 'csv'.$id;
     
    include("db_connect.php");
     
    $contents = 'csv/csv1/'.$fichier ;
     
    echo $contents;   // resultat : csv/csv1/2024-02-07_14:07:30-csv2.csv
     
     
     
      // Creation table
     
            $sql = "LOAD DATA  INFILE `".$contents."` INSERT  INTO `".$csv."` IGNORE 1 LINES ";
     
    //Retourner à la page index3.php pour lecture
     
    header('Location: index3.php?id='.$id);
    exit;
     
     
    ?>
    merci

  5. #5
    Membre confirm�
    Homme Profil pro
    noobies
    Inscrit en
    D�cembre 2014
    Messages
    103
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : noobies

    Informations forums :
    Inscription : D�cembre 2014
    Messages : 103
    Par d�faut
    je pense que mon hebergement ne prend pas LOAD INFILE.

    Du coup j'ai fais comme ca et ca fonctionne.

    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
    //Le chemin d'acces a ton fichier sur le serveur
    $fichier = fopen("csv/csv1/".$fichiers , "r"); 
     
    //tant qu'on est pas a la fin du fichier :
    while (!feof($fichier)) 
    { 
     while (($column = fgetcsv($fichier, 10000, ";")) !== FALSE) {
            $sql = "INSERT  INTO `".$csv."`( `COL 14`, `COL 24`)  
    		values ('" . $column[14] . "','" . $column[24] . "')";
            $result = mysqli_query($conn, $sql);
     
            if (! empty($result)) {
              move_uploaded_file($uploaded_file, $destination_path);
            } else {
              $type = "error";
              $message = "Problème lors de l'importation de données CSV";
            }
          }
    }

  6. #6
    Mod�rateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 599
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activit� : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 599
    Billets dans le blog
    10
    Par d�faut
    Dans cet extrait de code :

    Citation Envoy� par olivxii Voir le message
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
      // Creation table
     
            $sql = "LOAD DATA  INFILE `".$contents."` INSERT  INTO `".$csv."` IGNORE 1 LINES ";
    La syntaxe du LOAD DATA est incorrecte, la bonne syntaxe est LOAD DATA INFILE 'chemin et nom du fichier' INTO TABLE nom de la table [param�tres...].
    Il ne doit donc pas y avoir d'ordre INSERT INTO

    De plus, le commentaire //Cr�ation table est erron�, la cr�ation d'une table correspond � l'ordre CREATE TABLE, ici ce n'est pas une cr�ation, mais un chargement par LOAD d'une table existante.

Discussions similaires

  1. R�ponses: 1
    Dernier message: 11/12/2014, 10h38
  2. R�ponses: 2
    Dernier message: 20/02/2012, 09h29
  3. R�ponses: 2
    Dernier message: 24/05/2011, 03h18
  4. [OpenOffice][Base de donn�es] R�cup�rer les donn�es d'un fichier .txt et les ins�rer dans une base de donn�es
    Par frack dans le forum OpenOffice & LibreOffice
    R�ponses: 9
    Dernier message: 05/08/2009, 10h52
  5. R�ponses: 1
    Dernier message: 18/02/2008, 17h17

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