Import fichier CSV to PhpMyadmin

Résolu
bonjour je viens d'essayer plusieurs essaie sur l'importation de mon fichier "CSV" dans ma Base PHPMYADMIN mais rien ne s'affiche sur la Base

je vous passe le code html :
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form enctype="multipart/form-data" method="post" action="import.php">
<table border="1">
<tr >
<td colspan="2" align="center"><strong>Import CSV file</strong></td>
</tr>
<tr>
<td align="center">CSV File:</td><td><input type="file" name="file" id="file"></td></tr>
<tr >
<td colspan="2" align="center"><input type="submit" value="submit"></td>
</tr>
</table>
</form>
</body>
</html>

et voici le code php :
<?php
extract(filter_input_array(INPUT_POST));
$fichier = $_FILES ["userfile"]["name"];
if ($fichier){ // ouverture du ficier temporaire
$fp = fopen($_FILES["userfile"]["tmp_name"], "r");
}
else {// fichier inconnu ?>
<p align="center" >- importation echouee -</p>
<p align="center" >- <B> désole mais vous n'avez pas spécifié de chemin valide .. </B> </p>
<?php exit ();}
// declaration de la variable "cpt" qui permettera de compter le nombre de d'enregistrement réalisé
$cpt = 0; ?>
<p align="center">- Importation réussie -</p>
<?php //importation
while (!feof($fp)) {
$ligne = fgets ($fp,4096);
// on crée un tableau des élements séparés par des points virgules
$liste = explode(";", $ligne);
$table = filter_input(INPUT_POST, 'userfile');
// premier élement
$liste[0] = (isset($liste[0]) ) ? $liste[0] : null;
$liste[1] = (isset($liste[1]) ) ? $liste[1] : null;

$liste[2] = (isset($liste[2]) ) ? $liste[2] : null;

$liste[3] = (isset($liste[3]) ) ? $liste[3] : null;
$champ1=$liste[0];
$champ2=$liste[1];
$champ3=$liste[2];
$champ4=$liste[3];
if ($champ1!='')
{
$cpt++;
$db = new mysqli('localhost','root','','projet');
mysql_select_db("projet",$db);
$sql =("INSERT INTO avancement (id , type , pourcentage ,commentaire, date) VALUES ('','$champ1','$champ2','$champ3','$champ4')");
$result = $db-> query($sql);

} }
// fermeture du fichier
fclose ($fp);
?>
<h2> nombre de valeurs nouvellement enregistrees : </h2> <b> <?php echo $cpt; ?> </b>

2 réponses

  1. Modérateur
    Bonjour,

    Je t'invite déjà à utiliser correctement mysqli.

    par exemple :
    //connexion à la bdd
    $mysqli = new mysqli("localhost", "root", "", "projet");
    
    /* Vérification de la connexion */
    if ($mysqli->connect_errno) {
        printf("Echec de la connexion: %s\n", $mysqli->connect_error);
        exit();
    }
    
    
    // Puis dans ta boucle qui parcours le fichier
    while (!feof($fp)) {
    
       // le reste de ton code...
    
       $sql =("INSERT INTO avancement (id , type , pourcentage ,commentaire, date) VALUES 
            ('','$champ1','$champ2','$champ3','$champ4')");
       if (!$mysqli->query($sql)) {
          printf("Message d'erreur : %s\n", $mysqli->error);
      }
    
       // le reste de ton code...
    
    } //fin de la boucle
    
    // fermeture du fichier 
    fclose ($fp);
    


    0
    1. Oui mais là tu m'a pas donner une solution excusez-moi
      0
    2. Modérateur
      ça va te permettre de voir si déjà ton souci se situe au niveau de la connexion ou au niveau de la requête d'insertion.
      Sans compter que je t'ai corrigé des erreurs dans ton code ( mélange de mysql_ et de mysqli_ ...)
      Et puis... mettre la connexion qu'au début de ton code. Nul besoin de la refaire à chaque ligne de ton fichier !!!!

      Pour la suite, reviens nous voir si tu obtiens, grace à ce code, d'éventuels messages d'erreurs.... sans ça il nous sera difficile de trouver ton erreur.
      Surtout qu'on a ni accès à ton fichier csv... ni à la structure de ta bdd........
      0
    3. d'après ton code PHP voilà le message qui m'affiche

      Parse error: syntax error, unexpected '"root"' (T_CONSTANT_ENCAPSED_STRING) in C:\EasyPHP-Devserver-17\eds-www\import.php on line 3

      je t'envoie une capture de ma Base car je arrive pas a te l'a envoyé mais tkt elle est simple
      0
    4. et avec mon code Php que j'ai mis voilà le message d'erreur :

      Notice: Undefined index: userfile in C:\EasyPHP-Devserver-17\eds-www\import.php on line 3
      0
    5. Modérateur
      Car ton fichier se nomme name="file" et non userfile
      0