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 :

Import CSV dans MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Par défaut Import CSV dans MySQL
    Bonjour,
    j'ai un petit code qui me plait beaucoup et me permet d'importer un fichier CSV dans mysql a partir d'un bouton "Parcourir"
    Le probleme est le code en lui-meme, la logique a l'air bonne mais il ne fonctionne pas

    Pouvez vous me donner quelques elements de reponses pour le modifier simplement ?

    page d'upload :
    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
      <? echo "<form name='form1' method='post' action=".$_SERVER['PHP_SELF']." enctype='multipart/form-data'>"; ?>
         Pour ajouter ton serveur il suffit de remplir ce formulaire 
         <table border="0" cellspacing="0" cellpadding="3">
          <tr>
           <td>Table :</td> 
           <td> <input type="text" name="table"> </td> 
          </tr>
          <tr>
           <td>Fichier :</td> 
           <td> <input type="file" name="fichier_u"> </td> 
          </tr>
          <tr>
           <td>Créer table ? :</td> 
           <td> <input type="checkbox" name="creertable" checked> </td> 
          </tr>
          <tr>
            <td></td>  
           <td> <input type="submit" name="submit" value="Et HoP !"> </td> 
          </tr>
         </table>
         <input type="hidden" name="action" value="ajouter">  
        </form>
       <? 
       break;
     
       }
     
      ?>

    Page d'appel (meme si elle n'est pas appelé. D'ailleurs j'voulais vos reactions quand a l'utilisation du $_SERVER['PHP_SELF'] pour ce type de tache)
    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
     
    <?
     switch($action)
     {
      /* LECTURE ET AJOUT DES DONNEES DANS LA TABLE */
       case "ajouter":
     
     /* Variables */
       $bdd = "newsletter"; /* Base de données */
       $host= "localhost"; /* Hote (localhost en principe) */
       $user= "root"; /* Utilisateur */
       $pass= ""; /* Mot de passe */ 
     
     /* Connexion bdd */
       mysql_connect($host,$user,$pass) or die("Impossible de se connecter à la base de données"); 
       mysql_select_db($bdd); 
     
     /* On cree la table */
     if ($creertable)
      {
      $query = "CREATE TABLE $table( val1 int(4), val2 varchar(4), val3(24), val4 varchar(4) )"; 
      $result= MYSQL_QUERY($query);
      }
     
      /* On ouvre le fichier à importer en lecture seulement */
     $fichier = $_FILES['fichier_u']['tmp_name'];
     if (file_exists($fichier))
         $fp = fopen("$fichier", "r"); 
     else
         { /* le fichier n'existe pas */
           echo "Fichier introuvable !<br>Importation stoppée.";
           exit();
         }
     
        while (!feof($fp)) /* Et Hop on importe */
        { /* Tant qu'on n'atteint pas la fin du fichier */ 
           $ligne = fgets($fp,9); /* On lit une ligne */  
     
           /* On récupère les champs séparés par ; dans liste*/
           $liste = explode( ";",$ligne);  
     
           /* On assigne les variables */ 
           $val1 = $liste[0];
           $val2 = $liste[1];
           $val3 = $liste[2];
           $val4 =  $liste[3]; 
     
           /* Ajouter un nouvel enregistrement dans la table */ 
           $query = "INSERT INTO $table VALUES('$val1','$val2','$val3','$val4')"; 
           $result= MYSQL_QUERY($query); 
     
           if(mysql_error())
            { /* Erreur dans la base de donnees, sûrement la table qu'il faut créer */
               print "Erreur dans la base de données : ".mysql_error();
               print "<br>Importation stoppée.";
               exit();
            } 
           else /* Tout va bien */
             print "$val1 $val2 $val 3 $val4 <br>";
         } 
     
         echo "<br>Importation terminée, avec succès."; 
     
         /* Fermeture */ 
         fclose($fp); 
         MYSQL_CLOSE(); 
     
       break;
     
     
       /* FORMULAIRE DE CHOIX D'IMPORTATION */  
     
       default: 
       ?>

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 138
    Par défaut
    Salut,

    Tu as quoi comme type d'erreur ?

    Amuse toi à mettre des echos un peu partout pour voir où ton script bloque, et fais nous part de tes résultats. Parce que la on sait pas vraiment quel est le problème.

    Cordialement,

    EDIT : regarde si ton if($creertable) c'est bon, car je ne vois pas à quoi cela sert... la variable n'est pas initialisé avant, donc elle ne doit pas exister. De plus quand on initialise pas la variable... le seul choix c'est un test d'égalité du style if($creertable = jensaisrien){ ... } .

    EDIT2 : Tu récupères pas tes variables avec $_POST[''], essai if($creertable=$_POST['creertable']){...} // Vu que j'EDIT je ne vois pas si mon creertable correspond au tien, mais bon adapte le code ^^.

  3. #3
    Membre confirmé Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Par défaut
    essai sa :
    formulaire.php
    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
     
    <form method="post" action="insert.php" enctype='multipart/form-data'>
         Pour ajouter ton serveur il suffit de remplir ce formulaire 
         <table width="357" border="0" cellpadding="3" cellspacing="0">
           <!--DWLayoutTable-->
          <tr>
           <td height="28">Fichier :</td> 
           <td colspan="2" valign="top"> <input type="file" name="fichier"> </td> 
           </tr>
          <tr>
            <td></td>  
           <td width="144"> <input type="submit" name="submit" value="Charger !"> </td> 
           <td width="109"></td>
          </tr>
         </table>
        </form>
    insert.php
    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
     
    <?php
    $base="database";
    $conn= mysql_connect("localhost","root","");
    mysql_select_db($base,$conn);
     
     $fichier=$_FILES['fichier']['name'];
     $fichier=$_FILES['fichier']['tmp_name']; 
     
        $fp = fopen("$fichier","r"); 
     
        while (!feof($fp)){
     
         $separateur=";";
         $ligne = fgets($fp,4096);
         $liste = explode("$separateur", "$ligne");    
     
         $responsable = $liste[0]; 
         $societe = $liste[1]; 
         $nom = $liste[2]; 
         $prenom = $liste[3]; 
         $fonction = $liste[4]; 
         $telephone = $liste[5]; 
         $fax = $liste[6];      
         $portable = $liste[7];            
         $email = $liste[8];              
         $date = date("d-m-Y");
     
    $responsable=str_replace("'","`","$responsable");
    $societe=str_replace("'","`","$societe");
    $nom=str_replace("'","`","$nom");
    $prenom=str_replace("'","`","$prenom");
    $fonction=str_replace("'","`","$fonction");
    $telephone=str_replace("'","`","$telephone");
    $fax=str_replace("'","`","$fax");
    $email=str_replace("'","`","$email");
     
     
    $query = "insert into t_suivi(responsable,societe,nom,prenom,fonction,telephone,fax,portable,email,date) values('$responsable','$societe','$nom','$prenom','$fonction','$telephone','$fax','$portable','$email','$date')"; 
    $result= mysql_query($query); 
     
           if(mysql_error()){ 
               print "Erreur dans la base de données : ".mysql_error();
               print "<br>Importation stoppée.";
               exit();
            } 
           else 
             print "Bien <br>"; 
         } 
         echo "<br>Importation terminée, avec succès.";
       fclose($fp);
    ?>

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Ceci : "<?" n'est pas bon car cela ne fonctionne pas sur tous les serveurs, et pose des problème en cas d'usage de XML. Utilise "<?php".
    La variable "$table" n'est pas affectée.
    Met chaque tâche de ton code dans une fonction. Le code est plus lisible, et cela facilite le débogage. Lorsque la fonction donne le résultat attendu, tu n'as plus à t'en préoccuper, uniquement à lui passer les paramètres qu'elle attend.

    Exemple, avec ton 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
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    <?php
      function connexion()
      {
        /* Variables */
        $bdd = 'newsletter'; /* Base de données */
        $host= 'localhost'; /* Hote (localhost en principe) */
        $user= 'root'; /* Utilisateur */
        $pass= ''; /* Mot de passe */
     
        /* Connexion bdd */
        $connexion = mysql_connect($host,$user,$pass)
          or die('Impossible de se connecter au serveur');
        mysql_select_db($bdd)
          or die('Impossible de se connecter à la base de données');
     
        return $connexion;
      }
     
      function creeTable($table, $connexion)
      {
        /* On crée la table si elle est inexistante */
        $query = 'CREATE TABLE IF NOT EXISTS ' . $table . '( val1 int(4), val2 varchar(4), val3(24), val4 varchar(4) )';
        return mysql_query($query, $connexion);
      }
     
      function import($fichier, $table, $connexion)
      {
        $fp = fopen('$fichier', 'r');
     
        while (($data = fgetcsv($fp, 1000, ',')) !== FALSE)
        {
          $value = '\'' . implode('\',', $data) . '\'';
          echo $value . '<br>';
          $query = 'INSERT INTO ' . $table . ' VALUES(' . $value . ')';
          $result = mysql_query($query, $connexion)
            or die('problème dans la requête : ' . $query . '<br>' . mysql_error()) . '<br>Importation abandonnée';
        }
        echo '<br>Importation terminée, avec succès.';
        fclose($fp);
      }
    //------------------------------------------------------------------------------
    //------------------------------------------------------------------------------
      if(isset($_POST['action']))
      {
        $action = $_POST['action'];
     
        if(empty($_FILES['fichier_u']))
        {
          echo 'Rien à faire';
          exit;
        }
        else if(!file_exists($_FILES['fichier_u']['tmp_name']))
        {
          echo 'Fichier introuvable !<br>Importation stoppée.';
          exit();
        }
        else
        {
          $fichier = $_FILES['fichier_u']['tmp_name'];
        }
     
        $connexion = connexion();
     
        if(! creeTable($table, $connexion))
        {
          echo 'Echec de création de la table ' . $table;
          exit;
        }
        import($fichier, $table, $connexion);
        exit;
      }
    ?>
    <html>
      <head>
      </head>
      <body>
        <form name="form1" method="post" action="" enctype="multipart/form-data">
          Pour ajouter ton serveur il suffit de remplir ce formulaire
          <table border="0" cellspacing="0" cellpadding="3">
            <tr>
              <td>Table :</td>
              <td> <input type="text" name="table"> </td>
            </tr>
            <tr>
              <td>Fichier :</td>
              <td> <input type="file" name="fichier_u"> </td>
            </tr>
            <tr>
              <td>Créer table ? :</td>
              <td> <input type="checkbox" name="creertable" checked> </td>
            </tr>
            <tr>
              <td></td>
              <td> <input type="submit" name="submit" value="Et HoP !"> </td>
            </tr>
          </table>
          <input type="hidden" name="action" value="ajouter">
        </form>
      </body>
    </html>
    C'est du vite fait, pas testé. C'est donc sans garantie.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Par défaut
    Merci beaucoup pour vos reponses

    Finalement j'ai "épuré" mon code j'me retrouve donc avec :
    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
     
     
    <?php
     $fichier=$_FILES['fichier']['name'];
     $fichier=$_FILES['fichier']['tmp_name']; 
     
        $fp = fopen("$fichier","r"); 
     
        while (!feof($fp)){
     
         $separateur=";";
         $ligne = fgets($fp,4096);
         $liste = explode("$separateur", "$ligne");    
     
         $mail = $liste[0]; 
         $nom = $liste[1];       // ligne 21
         $prenom = $liste[2];   // ligne 22
     
    $mail=str_replace("'","`","$mail");
    $nom=str_replace("'","`","$nom");
    $prenom=str_replace("'","`","$prenom");
     
     
     
    $query = "insert into vdef(id,mail,nom,prenom) values('','$mail','$nom','$prenom')"; 
    $result= mysql_query($query); 
     
           if(mysql_error()){ 
               print "Erreur dans la base de données : ".mysql_error();
               print "<br>Importation stoppée.";
               exit();
            } 
           else 
             print "Bien <br>"; 
         } 
         echo "<br>Importation terminée, avec succès.";
       fclose($fp);
    ?>
    et ca me fait un peu cabler, j'me retrouve avec cette erreur quand je reinjecte les fichiers (deja injecté auparavant) :

    Erreur dans la base de données : Duplicata du champ 'xxxxx@gmail.com' pour la clef 2
    Importation stoppée.
    et quand j'injecte pour la 1er fois, j'ai l'erreur :
    Bien
    Bien
    Bien

    Notice: Undefined offset: 1 in C:\Program Files\EasyPHP 2.0b1\www\newsletter\vdef\gupload.php on line 21

    Notice: Undefined offset: 2 in C:\Program Files\EasyPHP 2.0b1\www\newsletter\vdef\gupload.php on line 22
    Bien

    Importation terminée, avec succès.
    il n'y a que 3 entrées dans le fichier, et dans mysql il m'en affiche 4 (la derniere etant vide partout sauf en ID auto_inc)


    J'aimerai que les entrées s'ajoutent a la liste et si une entrée existe deja qu'elle soit ignorée (pour ne pas faire de doublons)
    Avez vous une idée ?

    Merci d'avance !

  6. #6
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 138
    Par défaut
    Salut,

    Pourquoi tu utilises ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $prenom=str_replace("'","`","$prenom");
    Tu peux montrer l'utilité dans un exemple concret ?

    Cordialement,

  7. #7
    Membre confirmé Avatar de Akramweb
    Homme Profil pro
    Webmaster
    Inscrit en
    Avril 2005
    Messages
    227
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2005
    Messages : 227
    Par défaut
    la fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $prenom=str_replace("'","`","$prenom");
    sert à remplacer " ' " par un " ` " dans la variable $prenom, vu que " ' " crée un probleme au moment de l'ajout à la base de données.

  8. #8
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Citation Envoyé par ekzouille Voir le message
    Finalement j'ai "épuré" mon code
    Bien, mais peut mieux faire. La même chose en plus épuré :
    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
    <?php
      if (empty($_FILES['fichier']))
      {
        echo 'Le nom du fichier à uploader n\'est pas renseigné';
        exit;
      }
     
      $fichier = $_FILES['fichier']['tmp_name']; 
     
      $fp = fopen($fichier, 'r'); 
     
      $separateur = ';';
      while (($liste = fgetcsv($fp, 1000, $separateur)) !== FALSE)
      {
        $query = 'INSERT IGNORE INTO vdef(mail, nom, prenom) 
                  VALUES(\'%s\', \'%s\', \'%s\')'; 
        $result = mysql_query(sprintf($query, mysql_real_escape_string($liste[0]), mysql_real_escape_string($liste[1]), mysql_real_escape_string($liste[2])))
          or die('Erreur dans la base de données : ' . mysql_error() . '<br>Importation stoppée.');
     
        echo 'Bien <br>'; 
      }
     
      fclose($fp);
     
      echo '<br>Importation terminée, avec succès.';
    ?>
    Ce qui n'exclut pas les erreurs en cas d'information erronée dans le CSV.

  9. #9
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 20
    Par défaut Même pbroblème
    Bonjour
    j'ai crée un code pour l'upload d'un fichier csv mais une erreur qui me gène

    Notice: Undefined offset: 20 in F:\wamp\www\projet\trait-lot.php on line 67

    Notice: Undefined offset: 21 in F:\wamp\www\
    projet\trait-lot.php on line 67

    Notice: Undefined offset: 22 in F:\wamp\www\
    projet\trait-lot.php on line 67
    Mon 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
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
     
    <?php require_once('Connections/base_payment.php'); ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>traitement par fichier csv</title>
    </head>
     
    <body>
    <?php
    //$opdate= uniqid(mt_rand());
     
    //pas de pb donc en commance
        echo "<br />";
    mysql_select_db($database_base_payment, $base_payment);    
    if(isset($_FILES['filecsv']))   $filecsv=$_FILES['filecsv']['tmp_name'];
    else      $filecsv="";
    echo $filecsv;
     
    if ($filecsv !="") 
    {
     
     
     
     
        echo"connexion etablie";
         echo "<br />";
    //verification extention
    $extensions_valides = array( 'csv' );
     
    $extension_upload = strtolower(  substr(  strrchr($_FILES['filecsv']['name'], '.')  ,1)  );
    if ( in_array($extension_upload,$extensions_valides) )
                {
     echo "<br/>Extension correcte<br/>";
    //Le chemin d'acces a ton fichier sur le serveur
    $fichier = fopen($filecsv, "r");
     
    //tant qu'on est pas a la fin du fichier :
            while (!feof($fichier))
            {
                    // On recupere toute la ligne
                    $uneLigne = fgetcsv($fichier,1000,";");    echo "<br />";    echo "<br />";
                    echo $uneLigne[18];
                     $test= $uneLigne[18];
                     echo "<br />";    echo "<br />";
                     echo $test;
    //                 $crd= $uneLigne[5];
                     if ($test != "00000000000000000" && $test!="")
                            {
                    $sql = "SELECT mat FROM user_info WHERE mat='$test'";
                    $req = mysql_query($sql) or die("Erreur le fichier contien des erreur".mysql_error()); 
                    // on compte le nombre de résultats
                    $res = mysql_num_rows($req);
     
                    if($res!=0)  // le cin existe déjà, on affiche un message d'erreur
                    {
                        echo '<font color="red">Désolé, mais cette CIN existe déjà dans notre base.</font>';
                        echo $uneLigne[18];
                        $res=0;
                    }
                    else
                    {
     
                        //$opdat= Now();
                        //echo $opdate;
                        $mdp=md5(microtime());
    $sqlinser = "INSERT INTO user_info VALUES ('','".$uneLigne[0]."', '".$uneLigne[1]."', '".$uneLigne[2]."', '".$uneLigne[3]."', '".$uneLigne[4]."', '".$uneLigne[5]."', '".$uneLigne[6]."', '".$uneLigne[7]."', '".$uneLigne[8]."', '".$uneLigne[9]."', '".$uneLigne[10]."', '".$uneLigne[11]."', '".$uneLigne[12]."', '".$uneLigne[13]."', '".$uneLigne[14]."', '".$uneLigne[15]."', '".$uneLigne[16]."', 'avatar.jpg', '".$uneLigne[17]."', '".$uneLigne[18]."', '".$uneLigne[0]."', '".$mdp."',now(), '".$uneLigne[19]."', '".$uneLigne[20]."', '".$uneLigne[21]."', '".$uneLigne[22]."')";
     
                        $reqinser = mysql_query($sqlinser)or die ("Erreur dans insertion".mysql_error());
                        sleep(1);
                        // la ligne est finie donc on passe a la ligne suivante (boucle)
                            if ($reqinser)
                        {
                            echo 'Ajout dans la base de données effectué avec succès<br />';
                            echo 'Redirection vers la liste des étudiants dans quelques instant ...';
     
                        }
                        else
                        {
                            echo "Echec dans l'ajout dans la base de données SVP vérifier le fichier CSV Merci" ;
                            //echo "Redirection vers la page d'ajout dans quelques instant ...  ";
                            //redirect ("ajout-liste.php", "5");
                        }
                    }
                            }
            }
            //vérification et envoi d'une réponse à l'utilisateur
     
                }
                else
                    {
                    echo "erreur dans l'extention du fichier";
                    }
     
    }
    else
    {
                    echo "fichier introuvabel";
                    }
     
    ?>
    </body>
    </html>
    Merci de m'indiquer où j'ai commis ma faute

  10. #10
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    pourquoi tu fais pas un LOAD DATA ?

    mysql gère direct l'import de CSV, pas besion de boucle et compagnie, en 1 requête c'est fais

  11. #11
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 20
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    pourquoi tu fais pas un LOAD DATA ?

    mysql gère direct l'import de CSV, pas besion de boucle et compagnie, en 1 requête c'est fais
    je n'ai pas bien compris tu peut m'expliquer de plus
    merci

  12. #12
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par funpro Voir le message
    je n'ai pas bien compris tu peut m'expliquer de plus
    merci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = $_FILES['fichier']['tmp_name'];
    $sql = "LOAD DATA LOCAL INFILE '$fichier' INTO TABLE vdef";
    apres tu peux regler les options comme les champs que tu veux et tes separateurs CSV

  13. #13
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 20
    Par défaut
    Citation Envoyé par stealth35 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $fichier = $_FILES['fichier']['tmp_name'];
    $sql = "LOAD DATA LOCAL INFILE '$fichier' INTO TABLE vdef";
    apres tu peux regler les options comme les champs que tu veux et tes separateurs CSV
    oki mais j'ai des champ supplémentaire qui sont ajouter avec les info dans le fichier
    donc comment je peut préciser ces champ ??

  14. #14
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par funpro Voir le message
    oki mais j'ai des champ supplémentaire qui sont ajouter avec les info dans le fichier
    donc comment je peut préciser ces champ ??
    les infos du CSV + d'autre d'info ?

  15. #15
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 20
    Par défaut
    une autre chose avant que 'utilise cette fonction est ce que possible de corriger ce code avec en considération que cette erreur s'élimine quand j'enlève les trois dernier 20 21 et 22
    Merci

  16. #16
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par funpro Voir le message
    une autre chose avant que 'utilise cette fonction est ce que possible de corriger ce code avec en considération que cette erreur s'élimine quand j'enlève les trois dernier 20 21 et 22
    Merci
    faut adapter ta requête suivant tes champs

  17. #17
    Membre averti
    Développeur informatique
    Inscrit en
    Mars 2010
    Messages
    20
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2010
    Messages : 20
    Par défaut
    Bonjour
    Merci stealth35 pour vos réponse mais je vient de trouver la source de mon problème :
    ce n'est pas le code qui est erroné mais le fichier csv que j'ai crée comme test j'ai commis une erreur d'un novice je n'est pas bien mis en ordre les variable et même oublier l'un d'eux
    donc prié de m'excuser et 10000 merci pour tes réponse que je vais l'utilisé si j'ai un projet similaire
    @+

Discussions similaires

  1. importer.csv dans mysql
    Par artichaudd dans le forum Débuter
    Réponses: 1
    Dernier message: 07/12/2011, 23h00
  2. [MySQL] Importation .csv dans mysql
    Par Chipss dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 17/09/2011, 00h11
  3. [MySQL] import csv dans mysql
    Par caro_tpl dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 27/10/2007, 14h37
  4. Import CSV dans Mysql
    Par wylls dans le forum Langage SQL
    Réponses: 5
    Dernier message: 17/01/2007, 13h47
  5. Importer CSV dans MySQL
    Par The_freeman dans le forum Administration
    Réponses: 6
    Dernier message: 14/02/2006, 22h18

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