Comment importer un fichier CSV dans MySQL avec PHP
Dans ce tutoriel, nous allons voir comment importer un fichier csv dans une base de données MySQL à l’aide de PHP. CSV signifie « Comma Separated Values » et contient toutes les données séparées par des virgules.
Nous allons utiliser trois fichiers:
- Le fichier index.php qui contiendra une partie de l’interface utilisateur.
- Le fichier import_csv.php pour connecter MySQL et analyser les données CSV et les stocker dans une table MySQL.
- Le fichier db_connect.php pour se connecter à la base de donnée.
Créez une base de données
Créez une base de données MySQL nommée ‘test’ par exemple. Si vous avez déjà une base de données de test, exécutez le code ci-dessous dans la fenêtre de requête SQL de la base de données. Comme illustré dans l’image ci-dessous :
CREATE TABLE IF NOT EXISTS `produit` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(256) NOT NULL, `description` text NOT NULL, `price` int(255) NOT NULL, primary key (id) ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
Connexion à la base de données MySQL avec PHP
Après avoir créé la table « produit », nous allons créer le fichier db_connect.php pour établir une connexion avec la base de données MySQL.
<?php $server = "localhost"; $username = "root"; $password = ""; $db = "test"; $conn = mysqli_connect($server, $username, $password, $db); ?>
Étapes pour importer un fichier CSV dans une base de données MySql à l’aide de PHP
Étape 1: Créez le fichier import_csv.php et ajoutez le code ci-dessous dans ce fichier.
<?php // Connect to database include("db_connect.php"); if (isset($_POST["import"])) { $fileName = $_FILES["file"]["tmp_name"]; if ($_FILES["file"]["size"] > 0) { $file = fopen($fileName, "r"); while (($column = fgetcsv($file, 10000, ",")) !== FALSE) { $sql = "INSERT into produit (id,name,description,price) values ('" . $column[0] . "','" . $column[1] . "','" . $column[2] . "','" . $column[3] . "')"; $result = mysqli_query($conn, $sql); if (! empty($result)) { $type = "success"; $message = "Les Données sont importées dans la base de données"; } else { $type = "error"; $message = "Problème lors de l'importation de données CSV"; } } } } //Retourner à la page index.php header('Location: index.php'); exit; ?>
Le code ci-dessous est utilisé pour créer une interface permettant de télécharger un fichier CSV.
Étape 2: Créez un nouveau fichier index.php pour afficher le formulaire de téléchargement du fichier CSV. Vous devez ajouter le code ci-dessous dans le fichier index.php.
<!DOCTYPE html> <html> <head> <title>Comment importer un fichier CSV dans MySQL avec PHP</title> </head> <body> <h3>Lire l'article sur : <a href="https://waytolearnx.com/2019/07/comment-importer-un-fichier-csv-dans-mysql-avec-php.html" target="_blank">Comment importer un fichier CSV dans MySQL avec PHP</a></h3> <form enctype="multipart/form-data" action="import_csv.php" method="post"> <div class="input-row"> <label class="col-md-4 control-label">Choisir un fichier CSV</label> <input type="file" name="file" id="file" accept=".csv"> <br /> <br /> <button type="submit" id="submit" name="import" class="btn-submit">Import</button> <br /> </div> </form> <?php // Connect to database include("db_connect.php"); $sql = "SELECT * FROM produit"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { ?> <table> <thead> <tr> <th>Product ID</th> <th>Product Name</th> <th>Description</th> <th>Price</th> </tr> </thead> <?php while ($row = mysqli_fetch_array($result)) { ?> <tbody> <tr> <td> <?php echo $row['id']; ?> </td> <td> <?php echo $row['name']; ?> </td> <td> <?php echo $row['description']; ?> </td> <td> <?php echo $row['price']; ?> </td> </tr> <?php } ?> </tbody> </table> <?php } ?> </body> </html>
Bonjour.
Et merci beaucoup pour la solution
Grâce à vous je réussi a importé le fichier csv dans la base des données.
Maintenant comment mettre à jour ma base de données toujours en important un fichier csv ???
Bonjour Moise,
Utiliser UPDATE à la place de INSERT si tu veux mettre à jour ta base de données.
bonjour
j’ai essaye ton code ( apres avoir corrige un ou deux bugs ) mais rien ne se passe
du coup j’ai mis quelques echos pour avoir des retours et la non plus rien du tout
quand je regarde la console tout le code phph apparait comme si il n’etait pas reconnu
je suis perdu
tu peux m’aider ?
C’est bizarre de mon coté, je n’ai aucun bug, quelle version PHP as tu?
salut
j’ai essaye ton code mais c marche pas rien ne se passe
j’ai essaye de mettre des echos pour avoir un retour mais meme la j’ai rien
tu px m’aider ?
php 5.4.6
j’ai up mon easyphp je suis en php 5.2.8 mais idem quand je lance le script rien ne se passe ( je reviens juste sur la page de depart , aucun messages d’erreur et aucun retour des echos
voila le code modifié sur ce lien :
http://pastebin.fr/95074
Bonjour
Votre code est parfait, juste il y a un problème lorsqu’on ajoute des mots en caractères spéciaux (exemple Agrégé le résultat s’inscrit sur la BBD : Agr?g?)
Lorsque vous créer la base de donnée, n’oublier pas d’ajouter
DEFAULT CHARSET=utf8;
à la fin comme montré dans le code ci-dessus.