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 ?

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();
    } 
 
?>
Avec mes remerciements anticipés...