par
yoann38 » 05 juil. 2018, 19:00
Alors en fait il ne prend que la deniere date lut de la ligne du csv en modifiant mon code au lieu d'inserer autant de fois le code qu'il ya de date:
Il y a du mieux, plus de cohérance, le but ultime quasi atteint.
J'ai fait un var dump de $date_event et je vois ce message quand j'ai plusieurs date:
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'date_event
Tout s'insere parfaitement sauf que si j'ai plusieurs date pour le même "code" alors il n'insere que la dernière date lut du csv.
Exemple pour le code 20180307_123 : j'ai les dates : 16/07/2018 | 23/07/2018 | 30/07/2018 | 06/08/2018 mais en bdd je n'ai que:
code : 20180307_123 et pour date_event 2018-08-06.
Alors que je devrais avoir en bdd :
20180307_123 2018-08-06 puis
20180307_123 2018-07-30
20180307_123 2018-07-23
Ainsi de suite:
My code:
// Table Loisirs
$req = $bdd->prepare("INSERT INTO loisirs (`id_simply_user`, `titre`, `code`,`phone`,`email`,`city`,`rue`,`postcode`,`descriptif`) VALUES (:id_simply_user, :titre, :code, :phone, :email, :city, :rue, :postcode, :descriptif)");
$req->bindParam(':id_simply_user', $id_simply_user);
$req->bindParam(':titre', $titre);
$req->bindParam(':code', $code);
$req->bindParam(':phone', $phone);
$req->bindParam(':email', $email);
$req->bindParam(':city', $city);
$req->bindParam(':rue', $rue);
$req->bindParam(':postcode', $postcode);
$req->bindParam(':descriptif', $descriptif);
// Table Date evenement
$req2 = $bdd->prepare("INSERT INTO evenement_date (`code`, `date_event`) VALUES (:code, :date_event)");
$req2->bindParam(':code', $code);
$req2->bindParam(':date_event', $date_event);
$fichier = 'bretagne.csv';
$csv = new SplFileObject($fichier);
$csv->setFlags(SplFileObject::READ_CSV);
$csv->setCsvControl(';');
$num_ligne = 0; // Valeur de ligne par defaut
// Parcourt du fichier CSV + stockage variables
foreach($csv as $ligne){
$num_ligne ++; // Incrémentation
if ($num_ligne >1 ) { // On ignore la premiere ligne du CSV qui correspond au colonne
$id_simply_user = '1000';
$code = $ligne[0];
$titre = $ligne[1];
$phone = $ligne[2];
$website = $ligne[5];
$email = $ligne[6];
$postcode = $ligne[11];
$city = $ligne[13];
$descriptif = $ligne[16];
// Adresse Postal
if(empty($ligne[9])) {
$rue = $ligne[8];
}else{
$rue = $ligne[9];
}
$req->execute();
$exp_date = (explode('| ', $ligne[19])); // DU COUP **** le fameux explode
// Date(s) de l'évènement Transformation PMA
foreach($exp_date AS $date)
{
$dateF = date_create_from_format('d/m/Y',$date); // Date format lut 28/06/2018
$dateSQL = date_format($dateF, 'Y-m-d'); // Date format transformé 2018-06-28
$date_event=$dateSQL;
$req2->execute();
}
}
}
Alors en fait il ne prend que la deniere date lut de la ligne du csv en modifiant mon code au lieu d'inserer autant de fois le code qu'il ya de date:
Il y a du mieux, plus de cohérance, le but ultime quasi atteint.
[b]J'ai fait un var dump de $date_event et je vois ce message quand j'ai plusieurs date:
SQLSTATE[22007]: Invalid datetime format: 1292 Incorrect datetime value: '' for column 'date_event[/b]
Tout s'insere parfaitement sauf que si j'ai plusieurs date pour le même "code" alors il n'insere que la dernière date lut du csv.
Exemple pour le code 20180307_123 : j'ai les dates : 16/07/2018 | 23/07/2018 | 30/07/2018 | 06/08/2018 mais en bdd je n'ai que:
code : 20180307_123 et pour date_event 2018-08-06.
Alors que je devrais avoir en bdd :
20180307_123 2018-08-06 puis
20180307_123 2018-07-30
20180307_123 2018-07-23
Ainsi de suite:
My code:
[PHP]
// Table Loisirs
$req = $bdd->prepare("INSERT INTO loisirs (`id_simply_user`, `titre`, `code`,`phone`,`email`,`city`,`rue`,`postcode`,`descriptif`) VALUES (:id_simply_user, :titre, :code, :phone, :email, :city, :rue, :postcode, :descriptif)");
$req->bindParam(':id_simply_user', $id_simply_user);
$req->bindParam(':titre', $titre);
$req->bindParam(':code', $code);
$req->bindParam(':phone', $phone);
$req->bindParam(':email', $email);
$req->bindParam(':city', $city);
$req->bindParam(':rue', $rue);
$req->bindParam(':postcode', $postcode);
$req->bindParam(':descriptif', $descriptif);
// Table Date evenement
$req2 = $bdd->prepare("INSERT INTO evenement_date (`code`, `date_event`) VALUES (:code, :date_event)");
$req2->bindParam(':code', $code);
$req2->bindParam(':date_event', $date_event);
$fichier = 'bretagne.csv';
$csv = new SplFileObject($fichier);
$csv->setFlags(SplFileObject::READ_CSV);
$csv->setCsvControl(';');
$num_ligne = 0; // Valeur de ligne par defaut
// Parcourt du fichier CSV + stockage variables
foreach($csv as $ligne){
$num_ligne ++; // Incrémentation
if ($num_ligne >1 ) { // On ignore la premiere ligne du CSV qui correspond au colonne
$id_simply_user = '1000';
$code = $ligne[0];
$titre = $ligne[1];
$phone = $ligne[2];
$website = $ligne[5];
$email = $ligne[6];
$postcode = $ligne[11];
$city = $ligne[13];
$descriptif = $ligne[16];
// Adresse Postal
if(empty($ligne[9])) {
$rue = $ligne[8];
}else{
$rue = $ligne[9];
}
$req->execute();
$exp_date = (explode('| ', $ligne[19])); // DU COUP **** le fameux explode
// Date(s) de l'évènement Transformation PMA
foreach($exp_date AS $date)
{
$dateF = date_create_from_format('d/m/Y',$date); // Date format lut 28/06/2018
$dateSQL = date_format($dateF, 'Y-m-d'); // Date format transformé 2018-06-28
$date_event=$dateSQL;
$req2->execute();
}
}
}
[/PHP]