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 :
et voici le code php :
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
-
ModérateurJe fais une dernière tentative...
<?php //affichage des erreurs PHP error_reporting(E_ALL); ini_set('display_errors', TRUE); ini_set('display_startup_errors', TRUE); //connexion à la bdd $mysqli = mysqli_connect("localhost", "root", "", "csv_db"); // Vérification de la connexion if ($mysqli->connect_errno) { printf("Echec de la connexion: %s\n", $mysqli->connect_error); exit(); } // bien entendu... le fichier dont tu auras fais un move_upload_file avant... $csvFilePath = "Chemin_vers_ton_fichier.csv"; if(!file_exists($csvFilePath)){ $result['error'] = "Le Fichier ". $csvFilePath . " n'existe pas ou est introuvable "; } $output = ''; $allowed_ext = array("csv"); $extension = end(explode(".", $csvFilePath)); if(in_array($extension, $allowed_ext))[ if (($handle = fopen($csvFilePath, "r")) !== FALSE) { $row = 0; while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { $row++; //ligne parcourue $nbCol = count($data); // nombre de données trouvées dans la ligne "row" if($nbCol >=5 ){ $name = mysqli_real_escape_string($connect, $row[0]); $address = mysqli_real_escape_string($connect, $row[1]); $gender = mysqli_real_escape_string($connect, $row[2]); $designation = mysqli_real_escape_string($connect, $row[3]); $age = mysqli_real_escape_string($connect, $row[4]); $sql = "INSERT INTO tbl_employee (name, address, gender, designation, age) VALUES ('$name', '$address', '$gender', '$designation', '$age');"; if (!$mysqli->query($sql)) { $result['error'] = "Erreur Ligne ". $row ." => ".$mysqli->error ; }else{ $result['success'] = array("Ligne"=>$row, "datas"=>array($name, $address, $gender, $designation, $age)); } }else{ $result['error'] = " Nombre de colonnes incorectes à la ligne ".$row; } } }else{ $result['error'] = " Erreur lors de la lecture du fichier ". $csvFilePath ." !"; } }else{ $result['error'] = " Format de fichier incorect !"; } if(!empty($result['error'])){ foreach($result['error'] as $err){ echo "<div class='error'>".$err."</div>"; } }
comme tu peux le voir...j'ai géré au niveau de la connexion et de l'exécution des requêtes... les éventuelles erreurs....
J'ai également remis le code que tu n'avais pas pris en compte concernant le nombre de "colonnes" de ton fichier pour éviter tes erreurs undefined index...
J'espère que tu tiendras compte de ces modifications et que tu appliqueras ce même genre d'ecriture "propre" du code à l'avenir.
Bonne continuation.
-
-
-
je l'ai remplacer automatiquement sa passe pas aussi
regarde jordane :
Strict Standards: Only variables should be passed by reference in C:\EasyPHP-Devserver-17\eds-www\importation.php on line 24
Warning: fopen(C:\EasyPHP-Devserver-17ds-www.csv): failed to open stream: Invalid argument in C:\EasyPHP-Devserver-17\eds-www\importation.php on line 26
Warning: Invalid argument supplied for foreach() in C:\EasyPHP-Devserver-17\eds-www\importation.php on line 59 -
-
-
