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 Excel vers DBB


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Import Excel vers DBB
    Bonjour à toutes et tous,

    je rencontre un souci avec un formulaire PHP qui me permet d'uploader un fichier CSV via un formulaire et vers une base de données.

    Je tiens à préciser que ce script fonctionnait il y a 2 ou 3 ans. J'en ai à nouveau besoin mais il semble que le code soit obsolète... Je viens d'y passer la journée et là je flanche et requiert votre aide

    Tout se passe dans une seule page. Mais à chaque validation du formulaire, il n'arrive pas à trouver le fichier et me met que le fichier est introuvable (c'est déjà mieux qu'un message d'erreur mais je n'arrive pas à mettre à jour la fonction fopen())

    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
    <?php
     
     switch($_REQUEST['action'])
     {
      /* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
       case "ajouter": 
     
     /* On ouvre le fichier à importer en lecture seulement */
     if (isset($_POST['fichier']))
         $fp = fopen("$fichier", "r"); 
     else
         { /* le fichier n'existe pas */
           echo "Fichier introuvable ! Importation stoppée.";
           exit();
         }
     
        while (!feof($fp)) /* Et Hop on importe */
        { /* Tant qu'on n'atteint pas la fin du fichier */ 
           $get = fgets($fp,4096); /* On lit une ligne */  
     
           $slashed=addslashes($get);
     
           $str=trim($slashed);
     
           /* On récupère les champs séparés par ; dans liste*/
           $ligne = explode(";",$str);  
     
           /* On assigne les variables */ 
     
           $id = $ligne[0]; 
       	   $email = $ligne[1]; 
     
           /* Ajouter un nouvel enregistrement dans la table */ 
    		$query = "INSERT INTO contact VALUES('$id','$email')";
            MYSQL_QUERY($query);
    		if(mysql_error())
            { /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
               print "<br />Erreur dans la base de donn&eacute;es : ".mysql_error();
               print "<br /><br />Importation stoppée";
               exit();
            } 
           else /* Tout va bien */
             print "<table cellpadding='0' cellspacing='0' border='0'><tr><td width='30'>$id</td><td width='450'>$email</td></tr></table>";
         }
     
         echo "Importation terminée, avec succès."; 
     
         /* Fermeture */ 
         fclose($fp); 
         MYSQL_CLOSE(); 
     
       break;
     
       default: 
       ?> 
     
    <form method="post" enctype="multipart/form-data">
    <INPUT TYPE=HIDDEN NAME=MAX_FILE_SIZE VALUE=10240000 />
    <br />
    <b>Fichier au format CSV (séparateur : point virgule) : </b><br />
    <input type="file" name="fichier" id="fichier" class="input-doc" /><br /><br />
    <input type="submit" name="submit" value="Charger !">
    <input type="hidden" name="action" value="ajouter">
    </form> <br />
    <br />
       <? 
       break;
       }
      ?>

    Merci d'avance pour votre aide et votre temps !

    Gregg

  2. #2
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 204
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

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

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 204
    Points : 4 677
    Points
    4 677
    Par défaut
    ce code n'a jamais marché !

    on récupère un fichier avec $_FILES
    $_POST['fichier'] n'est pas bon
    $fichier n'est pas bon

    FAQ : http://php.developpez.com/faq/?page=formulaires#concepts-formulaire-file

  3. #3
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Pour commencer :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if (isset($_FILES['fichier']))
         $fp = fopen($_FILES['fichier']['tmp_name'], "r");
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="hidden" name="MAX_FILE_SIZE" value="10240000" />
    (je ne chercherais pas d'ou vient ce 10240000 )

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci Papajoker !

    Je te promets, à l'époque ce script a fonctionné. Je viens de retrouver dans mes archives le site où je l'avais trouvé : http://www.infres.enst.fr/~danzart/m...sqlimporte.php

    Donc grâce à toi ça avance J'ai modifié le début de mon code ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     if (isset($_FILES['fichier'])) {
    	 $fichier = $_FILES['fichier'];
         $fp = fopen("$fichier", "r");
     }
     else
    Et maintenant je n'ai plus le message d'erreur...

    Par contre le script semble tourner en boucle car la page ne se recharge pas et c'est la débandade dans ma table (18 000 insertions en 15 secondes !!!)

    Une idée de pourquoi le WHILE ne s'arrête pas ? Concernant le fichier il s'agit d'un fichier CSV classique de 3 lignes...

    Ah, je viens de voir que j'avais une réponse de Sabotage, je regarde mais j'ai l'impression que mon code équivaut à la même chose.

    PS : Ce 10240000 vient du fait que je ne veux pas que les internautes envoient un fichier de plus de 10 Mo... c'est pas comme ça qu'on fait ? mais là n'est pas du tout mon premier souci

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2013
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2013
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Ah non, je reviens sur ce que j'ai dit, ca marche beaucoup mieux avec ton code Sabotage !!!

    Un grand merci !!!

    Bon j'ai tout de même 15 insertions dans ma table alors que je n'ai que 3 lignes dans mon CSV... mais au moins là y a insertion !

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

Discussions similaires

  1. Import Excel vers Access MAJ et nouveaux enregistrements
    Par sl1980 dans le forum VBA Access
    Réponses: 8
    Dernier message: 23/01/2008, 09h02
  2. Import Excel vers une base SQL Server / Framework 1.x
    Par myNonSpace dans le forum Windows Forms
    Réponses: 6
    Dernier message: 08/06/2007, 11h27
  3. import excel vers access avec bouton "parcourir"
    Par zeloutre dans le forum Access
    Réponses: 3
    Dernier message: 04/04/2007, 19h06
  4. échec importation excel vers access
    Par emmablue dans le forum Access
    Réponses: 2
    Dernier message: 31/07/2006, 11h34
  5. Import Excel vers Access +hypertexte
    Par liop49 dans le forum Access
    Réponses: 2
    Dernier message: 24/07/2006, 14h40

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