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

Langage PHP Discussion :

Import d'un CSV en 2 étapes


Sujet :

Langage PHP

  1. #1
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut Import d'un CSV en 2 étapes
    Bonjour à tous,

    Comme le titre l'indique, j'aimerai permettre l'import d'un fichier CSV en 2 étapes, d'abord l'utilisateur spécifierait le lien du fichier via un input file classique, ensuite mon script lit les entêtes du fichier et demande à l'utilisateur de faire la correspondance entre les entêtes et les champs de la base (cela pour na pas être obligé d'avoir les colonnes dans le bon ordre et pour permettre d'ignorer certaines colonnes du fichier).

    Le problème est pour réimporter une deuxième fois le fichier, j'ai essayé de remettre un input de type file en display none mais je n'arrive pas à le récupérer dans la page suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <input type="file" value="<?php echo $_FILES['csvFile']['tmp_name']; ?>" style="display: none" />
    <input type="submit" value="Valider" />
    J'ai essayé avec tmp_name, name, j'ai aussi essayé de mettre le tableau $_FILES['csvFile'] au complet, mais à chaque fois lorsque j'essaye de le récupérer dans la page suivante la variable $_FILES est NULL.

    Quelqu'un aurait une idée ?

  2. #2
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2009
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2009
    Messages : 126
    Points : 183
    Points
    183
    Par défaut
    Que renvoie var_dump ($_FILES) sur la 2eme page ?

  3. #3
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par matlow Voir le message
    Que renvoie var_dump ($_FILES) sur la 2eme page ?
    Je viens de me rendre compte que j'avais oublié de donner un name à mon input file (le 2eme), maintenant quand je valide j'ai ca :

    array(1) { ["csvFile"]=> array(5) { ["name"]=> string(0) "" ["type"]=> string(0) "" ["tmp_name"]=> string(0) "" ["error"]=> int(4) ["size"]=> int(0) } }
    EDIT : L'erreur 4 correspond à "no file was uploaded"

  4. #4
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 266
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 266
    Points : 8 564
    Points
    8 564
    Billets dans le blog
    17
    Par défaut
    Tu ne peux pas forcer une valeur sur un input file, pour des raisons de sécurité.

  5. #5
    Membre éprouvé
    Avatar de amoiraud
    Homme Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Octobre 2006
    Messages : 606
    Points : 1 057
    Points
    1 057
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu ne peux pas forcer une valeur sur un input file, pour des raisons de sécurité.
    Salut Seb,
    Il me semble pourtant qu'un collègue avait déjà fait un import CSV en 2 étapes dans le même but de gérer la correspondance entre les entêtes et les champs de la base, le problème est qu'il ne bosse plus ici et que je ne retrouve pas ce fameux code.
    Tu sait comment je pourrait faire sans passer par un deuxième input file ?

    EDIT : Bon et bien en fait j'ai trouvé une solution toute simple, un move uploaded file pour enregistrer le CSV dans un dossier d'upload, et je lui passe le name dans un hidden, ensuite fopen sur dossier/$name et le tour est joué.
    Merci quand même pour vos réponses

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

Discussions similaires

  1. [10g] Outil import/export DB/CSV, XML => BPEL ?
    Par lex0072 dans le forum Oracle
    Réponses: 2
    Dernier message: 28/09/2005, 11h38
  2. Importer un fichier CSV dans un clientdataset ?
    Par mls dans le forum Bases de données
    Réponses: 7
    Dernier message: 15/04/2005, 13h35
  3. [Conseil] Import de fichier CSV vers MySQL
    Par ShinJava dans le forum JDBC
    Réponses: 6
    Dernier message: 15/03/2005, 20h14
  4. Importation de fichier CSV vers une base Interbase
    Par PrinceMaster77 dans le forum ASP
    Réponses: 3
    Dernier message: 15/03/2005, 16h18
  5. Comment importer un document CSV dans une table MySql ?
    Par magic8392 dans le forum Requêtes
    Réponses: 6
    Dernier message: 04/02/2005, 12h03

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