Voilà j'ai décidé de tester la lecture d'un fichier CSV.
Ca l'air pas mal cependant je me retrouve avec un message d'erreur et seul la première ligne s'insère sur certaines entrées.
Message d'erreur:
Invalid parameter number: number of bound variables does not match number of tokens
$fichier = 'datafeed_325105.csv';
$csv = new SplFileObject($fichier);
$csv->setFlags(SplFileObject::READ_CSV);
$csv->setCsvControl(',');
// Parcourt du fichier CSV + stockage variables
foreach($csv as $ligne){
// Attribution de la valeur pour Ticketmaster
$id_simply_user = '1000';
$tracker = $ligne[0]; // Tracker
$titre = $ligne[1]; // Nom de l'évènement
$number = $ligne[3]; // Id de l'évènement
$price = $ligne[30]; // Prix
$photo = $ligne[4]; // Miniature de l'image de l'annonce
$description = $ligne[5]; // Texte de l'annonce
$nom_categorie = $ligne[10]; // Exemple : Tennis
$mise_a_jour = $ligne[18];
$artiste_1 = $ligne[22];
$date_debut_sortie = $ligne[23];
$horaire = substr($date_debut_sortie, 10);
$manufacturer = $ligne[25];
$street = $ligne[26];
$catégorie = $ligne[28];
$longitude = $ligne[32];
$latitude = $ligne[33];
$city = $ligne[35];
$postcode = $ligne[36];
$departement = substr($postcode, 0, 2); // Exemple : 38
$pays = $ligne[37];
// On valide la sortie par default
$valide = '1';
// Région
$region = regionIdByDepartement($departement);
$date_debut_sortie = substr($date_debut_sortie, 0,-10); // retourne "abcde"
// Si il n y a pas de date de fin de renseignée on attribut la date de début
if(empty($ligne[39])) {
$date_fin_sortie = $date_debut_sortie;
}else{
$ligne[39];
}
// Requete pour calculer le nombre d'annonces en cours de validité
$sql = "SELECT id_loisirs FROM loisirs WHERE number ='".$number."'";
$req = $bdd->query($sql);
$nbResult = $req->rowCount();
//Entrée déjà existante
if ($nbResult > 0) {
echo '"'.$number.'" existe déjà en '.$nbResult.' exemplaire(s)';
} else { // libre
// Insertion
$req = $bdd->prepare("INSERT INTO `loisirs` (id_simply_user,titre,price,photo,tracker,id_region,id_departements,postcode,longitude,latitude,city,manufacturer,street,horaire,description,number,date_debut_sortie,valide) VALUES ('$id_simply_user','$titre','$price','$photo','$tracker','$region','$departement','$postcode','$longitude','$latitude','$city','$manufacturer','$street','$horaire','$description','$number','$date_debut_sortie','$valide')");
$req->execute(array(
'id_simply_user'=>$id_simply_user,
'titre'=>$titre,
'price'=>$price,
'photo'=>$photo,
'tracker'=>$tracker,
'id_region'=>$region,
'postcode'=>$postcode,
'longitude'=>$longitude,
'latitude'=>$latitude,
'city'=>$city,
'manufacturer'=>$manufacturer,
'street'=>$street,
'horaire'=>$horaire,
'id_departements'=>$departement,
'description'=>$description,
'number'=>$number,
'date_debut_sortie'=>$date_debut_sortie,
'valide'=>$valide
)) or die('Problème lors de l\'insertion');
}
}
?>
Merci à vous