Bonsoir à tous et à toutes,
Je débute en PHP et je rencontre le problème suivant : j'ai un fichier CSV (séparateur ';') d'environ 600 lignes.
Je désire importer ces lignes dans une table MySQL.
Ca le fait, mais pas comme je le souhaite ! Non seulement mon code n'importe que 35 lignes, mais en plus, il ne semble pas tenir compte du séparateur...
Qu'est-ce que je fais mal ?
Avec mes remerciements anticipés...
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 //Attention, pas d'étiquettes sur la première ligne et uniquement les colonnes code, description et prix. require '../database.php'; //UPLOAD DU FICHIER CSV, vérification qu'il s'agit bien d'un CSV et insertion en BASE if (isset($_FILES["file"]["type"]) != "application/vnd.ms-excel") { die("Ce n'est pas un fichier de type .csv"); } elseif (is_uploaded_file($_FILES['file']['tmp_name'])) { $db = Database::connect(); try{ $statementPrix = $db->prepare("INSERT INTO tmp_import_prix (code, description, prix) values(?,?,?)"); } catch(Exception $e) { echo "Une erreur est survenue dans la connexion (table tmp_import_prix). Message d'erreur : ".$e->getMessage(); } $file = new SplFileObject($_FILES['file']['tmp_name']); $file->setFlags(SplFileObject::READ_CSV); $file->setFlags(SplFileObject::SKIP_EMPTY); // $file->setFlags(SplFileObject::setCsvControl(';')) ; foreach ($file as $row) { $statementPrix->execute([$row[0], $row[1], $row[2]]); } Database::disconnect(); } ?>![]()
Partager