INSERT dans 2 tables différentes en 2 étapes
Utilisateur anonyme
-
Utilisateur anonyme -
Utilisateur anonyme -
Bonjour,
J'ai un fichier XML sur lequel je récupère des infos mensuellement.
Ce fichier contient des noms de films auxquels sont associés des horaires de séances.
J'ai 2 tables MySQL.
Une 'films' sur laquelle j'ai ces champs : 'id', 'titre_film', 'semaine'.
Une 'seances' sur laquelle j'ai ces champs : 'id_titre_film', 'dateTime', 'benevole'.
Ce que j'essaie de faire, c'est d'envoyer dans un premier temps les films dans la table 'films'.
Je récupère ensuite les 'id' et 'titre_film'
Enfin, j'essai d'insérer les horaires et mon 'id_titre_film' dans la table 'seances'
Seuls mes films s'ajoutent.
D'après vous ma logique de code est-elle correcte ?
Quelqu'un a-t-il une idée quant à la méthode à utiliser ?
Merci de votre aide
Romain
J'ai un fichier XML sur lequel je récupère des infos mensuellement.
Ce fichier contient des noms de films auxquels sont associés des horaires de séances.
J'ai 2 tables MySQL.
Une 'films' sur laquelle j'ai ces champs : 'id', 'titre_film', 'semaine'.
Une 'seances' sur laquelle j'ai ces champs : 'id_titre_film', 'dateTime', 'benevole'.
Ce que j'essaie de faire, c'est d'envoyer dans un premier temps les films dans la table 'films'.
$req = $db->prepare("INSERT INTO films(titre_film, semaine, lien_affiche) VALUES(:titre_film, :semaine, :lien_affiche) ON DUPLICATE KEY UPDATE titre_film= :titre_film"); $req->execute(array( 'titre_film' => $titre_film, 'semaine' => $semaine1, 'lien_affiche' => $lien_affiche));
Je récupère ensuite les 'id' et 'titre_film'
$req3 = $db->prepare("SELECT id, titre_film FROM films"); while ($donnees = $req3->fetch()) { $id4 = $donnees['id']; $titre_film4 = $donnees['titre_film']; } $req3->closeCursor();
Enfin, j'essai d'insérer les horaires et mon 'id_titre_film' dans la table 'seances'
$req2 = $db->prepare("INSERT INTO seances(titre_film2, date) VALUES(:titre_film4, :dates) WHERE '$id'= films.id "); foreach ($dates as $element) { if (!empty($element)){ $req2->execute(array( 'titre_film' => $titre_film_recup, 'dates' => $element )); } }
Seuls mes films s'ajoutent.
D'après vous ma logique de code est-elle correcte ?
Quelqu'un a-t-il une idée quant à la méthode à utiliser ?
Merci de votre aide
Romain
A voir également:
- INSERT dans 2 tables différentes en 2 étapes
- Supercopier 2 - Télécharger - Gestion de fichiers
- 2 ecran pc - Guide
- Touche insert - Guide
- Faire 2 colonnes sur word - Guide
- Whatsapp 2 - Guide
8 réponses
Bonjour,
Il serait bien que l'on sache à quoi ressemble les fichiers que tu essaies d'importer.
Et puis.. dans attention à ce que tu écris..
par exemple tu as fais la requete :
1 - Que vient faire un WHERE dans une requete INSERT ?
2 - Tu as mis la variable :titre_film4 ... alors que dans le execute tu as mis :
Et enfin... tu marques :
En faisant un code alambiqué ... alors que dans ta question précédente (voir ici : https://forums.commentcamarche.net/forum/affich-33142313-inclusion-d-un-id-dans-une-table ) je t'ai indiqué d'utilisé :
Il serait bien que l'on sache à quoi ressemble les fichiers que tu essaies d'importer.
Et puis.. dans attention à ce que tu écris..
par exemple tu as fais la requete :
"INSERT INTO seances(titre_film2, date) VALUES(:titre_film4, :dates) WHERE '$id'= films.id "
1 - Que vient faire un WHERE dans une requete INSERT ?
2 - Tu as mis la variable :titre_film4 ... alors que dans le execute tu as mis :
'titre_film' => $titre_film_recup,
Et enfin... tu marques :
Je récupère ensuite les 'id' et 'titre_film'
En faisant un code alambiqué ... alors que dans ta question précédente (voir ici : https://forums.commentcamarche.net/forum/affich-33142313-inclusion-d-un-id-dans-une-table ) je t'ai indiqué d'utilisé :
$id = $bdd->lastInsertId();
Alors en fait, c'est pour l'asso ou je suis bénévole. Un cinéma associatif.
Je met en place un planning en ligne pour les permanences.
Les permanences sont mises en ligne pour tous les 6 mois.
Chaque mois, le fichier XML est alimenté par les films qui vont prochainement passer.
Ce que tu dis est correct :
"
Si le film n'existe pas déjà... tu inserts le film en BDD plus ses séances ( avec le lastinsertID )
Si le film existe déjà ... tu ajoutes uniquement les séances après avoir récupéré l'id via un SELECT WHERE
"
J'ai donc remis en place mes 2 requêtes
Tout marche bien lorsque j'ajoute un film suivi des séances pour la première fois.
Seulement, quand je réactualise cette page, tous les id passent à 0 et des séances sont ajoutées avec l'id '0'.
Comment vois-tu la chose pour gérer ce cas ?
"
Si le film existe déjà ... tu ajoutes uniquement les séances après avoir récupéré l'id via un SELECT WHERE
"
C'est la que je bloque. Tu ferais un SELECT WHERE directement dans l'INSERT ou en 2 requête (1 SELECT + un INSERT comme j'ai fais précédemment) ?
Je met en place un planning en ligne pour les permanences.
Les permanences sont mises en ligne pour tous les 6 mois.
Chaque mois, le fichier XML est alimenté par les films qui vont prochainement passer.
Ce que tu dis est correct :
"
Si le film n'existe pas déjà... tu inserts le film en BDD plus ses séances ( avec le lastinsertID )
Si le film existe déjà ... tu ajoutes uniquement les séances après avoir récupéré l'id via un SELECT WHERE
"
J'ai donc remis en place mes 2 requêtes
$req = $db->prepare("INSERT INTO films(titre_film, semaine, lien_affiche) VALUES(:titre_film, :semaine, :lien_affiche) ON DUPLICATE KEY UPDATE titre_film= :titre_film"); $req->execute(array( 'titre_film' => $titre_film, 'semaine' => $semaine1, 'lien_affiche' => $lien_affiche)); $last_id = $db->lastInsertId(); echo $last_id;
$req2 = $db->prepare("INSERT INTO seances(titre_film2, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req2->execute(array( 'titre_film' => $last_id, 'dates' => $element )); } }
Tout marche bien lorsque j'ajoute un film suivi des séances pour la première fois.
Seulement, quand je réactualise cette page, tous les id passent à 0 et des séances sont ajoutées avec l'id '0'.
Comment vois-tu la chose pour gérer ce cas ?
"
Si le film existe déjà ... tu ajoutes uniquement les séances après avoir récupéré l'id via un SELECT WHERE
"
C'est la que je bloque. Tu ferais un SELECT WHERE directement dans l'INSERT ou en 2 requête (1 SELECT + un INSERT comme j'ai fais précédemment) ?
Si tu te sers du fichier xml que tu nous as montré je peux dire que :
Chaque film a déjà un ID dans le fichier xml : film idAlloCine="138725"
A partir de là ..
Tu regardes si le film existe déjà ou non dans ta BDD ( pour cela tu fais un SELECT / WHERE id_allocine = $idAlloCine
$idAlloCine provenant du fichier XML bien entendu
A ce moment deux cas de figures se présentent :
1 - Le film n'existe pas :
Dans ce cas, tu AJOUTES le film à ta BDD
Tu vérifies ensuite pour chaque séance si elle est déjà dans la BDD ou non.
Si elle n'y ai pas.. tu l'ajoutes ... sinon.. ben tu ne fais rien.
2 - Le Film existe déjà dans ta BDD
Là .. tu ne touches à rien au niveau du film ...
par contre...comme pour le 1 .. Tu vérifies ensuite pour chaque séance si elle est déjà dans la BDD ou non.
Si elle n'y ai pas.. tu l'ajoutes ... sinon.. ben tu ne fais rien.
Et donc tes tables dans la bdd :
Table films : id_allocine , titre_film, datesortie, realisateurs, duree, genre, synopsis
Table seances : idseance,id_film , semaine, date, heure, salle, vo
et vu qu'il peut y avoir plusieurs affichent (images) pour un même film... tu te fais une tables pour les stocker :
table affiches: id_film,lien_image
et bien entendu.. tu peux faire pareil pour les Bandes annonces ...
Cordialement,
Jordane
Chaque film a déjà un ID dans le fichier xml : film idAlloCine="138725"
A partir de là ..
Tu regardes si le film existe déjà ou non dans ta BDD ( pour cela tu fais un SELECT / WHERE id_allocine = $idAlloCine
$idAlloCine provenant du fichier XML bien entendu
A ce moment deux cas de figures se présentent :
1 - Le film n'existe pas :
Dans ce cas, tu AJOUTES le film à ta BDD
Tu vérifies ensuite pour chaque séance si elle est déjà dans la BDD ou non.
Si elle n'y ai pas.. tu l'ajoutes ... sinon.. ben tu ne fais rien.
2 - Le Film existe déjà dans ta BDD
Là .. tu ne touches à rien au niveau du film ...
par contre...comme pour le 1 .. Tu vérifies ensuite pour chaque séance si elle est déjà dans la BDD ou non.
Si elle n'y ai pas.. tu l'ajoutes ... sinon.. ben tu ne fais rien.
Et donc tes tables dans la bdd :
Table films : id_allocine , titre_film, datesortie, realisateurs, duree, genre, synopsis
- id_allocine = idallocine du fichier xml
Table seances : idseance,id_film , semaine, date, heure, salle, vo
- idseance : Id auto-incrementé
- id_film : = id_allocine de la table films
et vu qu'il peut y avoir plusieurs affichent (images) pour un même film... tu te fais une tables pour les stocker :
table affiches: id_film,lien_image
- id_film : = id_allocine de la table films
et bien entendu.. tu peux faire pareil pour les Bandes annonces ...
Cordialement,
Jordane
Alors j'y ai bien pensé seulement chaque film doit avoir un id par semaine.
En fait ma table films a d'autres champs ou l'on vient checker si le film est chargé sur tel ou tel serveur.
Si un film se joue en semaine 1 (on indiquera que le film est chargé sur tels serveurs)
Entre temps, le film sera supprimé.
Si le même film est rejoué en semaine 4 : La si j'utilise l'id Allociné, le film sera considéré comme chargé alors que ce n'est pas le cas.
D'ou l'intérêt de générer un id qui associe un film à une semaine de projection.
En fait ma table films a d'autres champs ou l'on vient checker si le film est chargé sur tel ou tel serveur.
Si un film se joue en semaine 1 (on indiquera que le film est chargé sur tels serveurs)
Entre temps, le film sera supprimé.
Si le même film est rejoué en semaine 4 : La si j'utilise l'id Allociné, le film sera considéré comme chargé alors que ce n'est pas le cas.
D'ou l'intérêt de générer un id qui associe un film à une semaine de projection.
Impec !
Bon j'ai avancé ! :-)
Si le film n'existe pas, on le créé, et les séances aussi. Ca marche !
En revanche, pour ajouter seulement les séances, je reviens à mon point de départ.
C'est 'req3' dans mon code.
Je ne vois toujours pas ce que je peux récupérer comme variables avant...
Bon j'ai avancé ! :-)
//On check si l'id AlloCine et la semaine existent dejà en BDD $req1 = $db->query("SELECT id, idAlloCine, titre_film, semaine FROM films WHERE idAlloCine = '$idAlloCine'"); $donnees = $req1->fetch(); //Si le film n'existe pas, on l'ajoute dans la BDD if (empty($donnees['idAlloCine'])) { $req = $db->prepare("INSERT INTO films(idAlloCine, titre_film, semaine, lien_affiche) VALUES(:idAlloCine, :titre_film, :semaine, :lien_affiche) ON DUPLICATE KEY UPDATE titre_film= :titre_film"); $req->execute(array( 'idAlloCine' => $idAlloCine, 'titre_film' => $titre_film, 'semaine' => $semaine1, 'lien_affiche' => $lien_affiche)); $last_id = $db->lastInsertId(); echo $last_id; $req2 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req2->execute(array( 'titre_film' => $last_id, 'dates' => $element )); } } } //Si une des séances n'existent pas, on l'ajoute else { $req3 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req3->execute(array( 'titre_film' => $last_id, 'dates' => $element )); } } }
Si le film n'existe pas, on le créé, et les séances aussi. Ca marche !
En revanche, pour ajouter seulement les séances, je reviens à mon point de départ.
C'est 'req3' dans mon code.
Je ne vois toujours pas ce que je peux récupérer comme variables avant...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
J'ai parlé un peu trop vite !
Ca a l'air de marcher. :-)
Aussi bizarre que ça puisse paraitre, pas besoin de faire de requête dans ma table 'seances'..!
Ca a l'air de marcher. :-)
//On check si l'id AlloCine et la semaine existent dejà en BDD $req1 = $db->query("SELECT id, idAlloCine, titre_film, semaine FROM films WHERE idAlloCine = '$idAlloCine'"); $donnees = $req1->fetch(); //Si le film n'existe pas, on l'ajoute dans la BDD if (empty($donnees['idAlloCine'])) { $req = $db->prepare("INSERT INTO films(idAlloCine, titre_film, semaine, lien_affiche) VALUES(:idAlloCine, :titre_film, :semaine, :lien_affiche) ON DUPLICATE KEY UPDATE titre_film= :titre_film"); $req->execute(array( 'idAlloCine' => $idAlloCine, 'titre_film' => $titre_film, 'semaine' => $semaine1, 'lien_affiche' => $lien_affiche)); $last_id = $db->lastInsertId(); echo $last_id; $req2 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req2->execute(array( 'titre_film' => $last_id, 'dates' => $element )); } } } //Si une des séances n'existent pas, on l'ajoute elseif (empty($donnees['date'])){ $req4 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req4->execute(array( 'titre_film' => $idrecup, 'dates' => $element )); } } }
Aussi bizarre que ça puisse paraitre, pas besoin de faire de requête dans ma table 'seances'..!
Bonsoir,
Dis voir ... ton <code php elseif (empty($donnees['date'])){ </code> ... ne peut pas fonctionner ....
Dans ta requête tu tapes sur la table films ... qui ne contient pas de champ DATE !!!
Il faut juste faire un ELSE ( et non un elseif )
et dans ce ELSE .. faire
1 - Un select sur la table seance pour voir si la séance existe
2- Si elle n'existe pas.. l'ajouter.
Dis voir ... ton <code php elseif (empty($donnees['date'])){ </code> ... ne peut pas fonctionner ....
Dans ta requête tu tapes sur la table films ... qui ne contient pas de champ DATE !!!
Il faut juste faire un ELSE ( et non un elseif )
et dans ce ELSE .. faire
1 - Un select sur la table seance pour voir si la séance existe
2- Si elle n'existe pas.. l'ajouter.
J'y suis presque !
En fait, comme depuis longtemps, lorsque je réactualise la page, chaque séance prend 0 comme id_titre_film.
De plus, je n'arrive toujours pas à récupérer l'id du film associé à l'horaire que l'on traite.
Grrrr... J'y suis presque !!
else { $req3 = $db->query("SELECT id_titre_film, date FROM seances"); $donnees2 = $req3->fetch(); $req4 = $db->query("SELECT id, idAlloCine, titre_film, semaine FROM films"); $donnees = $req4->fetch(); $idrecup2 = $donnees['id']; if ((empty($donnees2['date'])) AND $titre_film > '0') { $req4 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req4->execute(array( 'titre_film' => $idrecup2, 'dates' => $element )); } } } }
En fait, comme depuis longtemps, lorsque je réactualise la page, chaque séance prend 0 comme id_titre_film.
De plus, je n'arrive toujours pas à récupérer l'id du film associé à l'horaire que l'on traite.
Grrrr... J'y suis presque !!
essayes ça :
Cordialement,
Jordane
<?php //---------------------------------------------------------------------------------------------------------------// //Affichage des erreurs PHP // A mettre en début de script PHP pendant la phase de dev ! //---------------------------------------------------------------------------------------------------------------// error_reporting(E_ALL); //---------------------------------------------------------------------------------------------------------------// // le reste de ton code // comme par exemple la lecture du fichier XML //---------------------------------------------------------------------------------------------------------------// //... //---------------------------------------------------------------------------------------------------------------// // le traitement avec les requêtes //---------------------------------------------------------------------------------------------------------------// //On check si l'id AlloCine et la semaine existent dejà en BDD $req1 = $db->query("SELECT id, idAlloCine, titre_film, semaine FROM films WHERE idAlloCine = '$idAlloCine'"); $donnees = $req1->fetch(); $id_film = $donnees['id']; $idAlloCine = !empty($donnees['idAlloCine']) ? $donnees['idAlloCine'] : NULL; //Si le film n'existe pas, on l'ajoute dans la BDD if($idAlloCine){ //Ajout du film $sql = "INSERT INTO films(idAlloCine, titre_film, semaine, lien_affiche) VALUES(:idAlloCine, :titre_film, :semaine, :lien_affiche) ON DUPLICATE KEY UPDATE titre_film= :titre_film"; $a_datas = array( 'idAlloCine' => $idAlloCine, 'titre_film' => $titre_film, 'semaine' => $semaine1, 'lien_affiche' => $lien_affiche ); $req = $db->prepare($sql); $req->execute($a_datas); $last_id = $db->lastInsertId(); echo $last_id; //Ajout des seances : $sql = "INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"; $req2 = $db->prepare($sql); foreach ($dates as $element) { if (!empty($element)){ $a_datas = array( ':titre_film' => $last_id, ':dates' => $element ;) $req2->execute($a_datas); } } }else { // Si le film existe déjà (tu connais déjà son id vu que tu as fais une requete select au début !!) $req3 = $db->query("SELECT id_titre_film, date FROM seances"); $donnees2 = $req3->fetch(); $date = !empty($donnees2['date']) ? $donnees2['date'] : NULL; if ( $date && $idAlloCine ) { $req4 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req4->execute(array( 'titre_film' => $id_film, 'dates' => $element )); } } } }
Cordialement,
Jordane
Le print_r est correct.
J'ai bien toutes les infos pour chaque film :
Je penche plus pour un problème de variables vers la fin de ma requête.
Je parle de l'id du film dans la table 'seances'.
Comme il ne trouve pas d'id, il met 0 par défaut. Peut-être du à ma contrainte ou je n'autorise pas deux fois la même date et le même id..?
J'ai bien toutes les infos pour chaque film :
Array ( [id] => 1 [idAlloCine] => 138725 [titre_film] => CHAIR DE POULE - LE FILM [semaine] => 24/02/2016 )
Je penche plus pour un problème de variables vers la fin de ma requête.
Je parle de l'id du film dans la table 'seances'.
Comme il ne trouve pas d'id, il met 0 par défaut. Peut-être du à ma contrainte ou je n'autorise pas deux fois la même date et le même id..?
id_titre_film ... doit correspondre à l' ID du film (ici 1 ) ou à l'id allociné (138725) ?
Ben ça .. sans connaitre la structure de tes tables ... impossible de te répondre !
Remplaces le ELSE par celui la :
J'ai retiré la requete
Je n'en voyais pas l’intérêt (surtout sans WHERE....)
Dis moi ce que ça donne. .
Peut-être du à ma contrainte ou je n'autorise pas deux fois la même date et le même id..
Ben ça .. sans connaitre la structure de tes tables ... impossible de te répondre !
Remplaces le ELSE par celui la :
}else { // Si le film existe déjà (tu connais déjà son id vu que tu as fais une requete select au début !!) $result = array(); // pour les tests if ($idAlloCine) { $req4 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $r_datas = array(';titre_film' => $id_film,'dates' => $element); //le temps des tests: $result['ajout_seances'][$idAlloCine] = $r_datas $req4->execute($r_datas); } } //Le temps des tests print_r($result); }
J'ai retiré la requete
$req3 = $db->query("SELECT id_titre_film, date FROM seances");
Je n'en voyais pas l’intérêt (surtout sans WHERE....)
Dis moi ce que ça donne. .
Bon alors en fait, avec cette première requête, les films s'ajoutent tous y compris dans chaque semaine. Le problème est que 'id_titre_film' est "NULL".
Maintenant si je vire le
MAIS il met aussi l'id aux séances qui dépendent d'un même joué plusieurs semaines.
J'ai essayé tout l'aprem différentes combinaisons mais là je t'avoue que je ne vois pas..!
La partie qui nous intéresse :
$req1 = $db->query("SELECT id, idAlloCine, titre_film, semaine FROM films WHERE idAlloCine = '$idAlloCine' AND semaine LIKE '$semaine'"); $donnees = $req1->fetch(); $id_titre_film = $donnees['id'];
Maintenant si je vire le
AND semaine LIKE '$semaine', il ajoute seulement les films sans gérer les semaines.
MAIS il met aussi l'id aux séances qui dépendent d'un même joué plusieurs semaines.
J'ai essayé tout l'aprem différentes combinaisons mais là je t'avoue que je ne vois pas..!
La partie qui nous intéresse :
//On check si l'id AlloCine et la semaine existent dejà en BDD //print_r($donnees); $req1 = $db->query("SELECT id, idAlloCine, titre_film, semaine FROM films WHERE idAlloCine = '$idAlloCine' AND semaine LIKE '$semaine'"); $donnees = $req1->fetch(); $id_titre_film = $donnees['id']; print_r($donnees); //$idAlloCine = !empty($donnees['idAlloCine']) ? $donnees['idAlloCine'] : NULL; //Si le film n'existe pas, on l'ajoute dans la BDD if(empty($donnees['idAlloCine'])){ //Ajout du film $sql = "INSERT INTO films(idAlloCine, titre_film, semaine, lien_affiche) VALUES(:idAlloCine, :titre_film, :semaine, :lien_affiche) ON DUPLICATE KEY UPDATE titre_film= :titre_film"; $a_datas = array( 'idAlloCine' => $idAlloCine, 'titre_film' => $titre_film, 'semaine' => $semaine1, 'lien_affiche' => $lien_affiche ); $req = $db->prepare($sql); $req->execute($a_datas); $last_id = $db->lastInsertId(); echo $last_id; //Ajout des seances : $sql = "INSERT INTO seances(id_titre_film, date) VALUES(:id_titre_film, :dates)"; $req2 = $db->prepare($sql); foreach ($dates as $element) { if (!empty($element)){ $a_datas = array( ':id_titre_film' => $id_titre_film, ':dates' => $element ); $req2->execute($a_datas); } } }else { // Si le film existe déjà (tu connais déjà son id vu que tu as fais une requete select au début !!) $req3 = $db->query("SELECT id_titre_film, date FROM seances"); $donnees2 = $req3->fetch(); $date = !empty($donnees2['date']) ? $donnees2['date'] : NULL; if ( $date && $idAlloCine ) { $req4 = $db->prepare("INSERT INTO seances(id_titre_film, date) VALUES(:titre_film2, :dates)"); foreach ($dates as $element) { if (!empty($element)){ $req4->execute(array( 'id_titre_film' => $id_titre_film, 'dates' => $element )); } } } }
Un aperçu ici du fichier XML : https://www.stella-janze.fr/interface_stella.xml
En français, mon WHERE dans mon INSERT est là pour :
"Tu inserts telles données à l'endroit où X vaut tant"
Pour le lastInsertId, ça marche bien... sauf quand un horaire est ajouté à un film déjà existant.
En français... peut être .... en SQL ... ça ne veut rien dire !
Si ton but est de remplacer une ligne existante dans ta BDD ... c'est un UPDATE qu'il te faut utiliser .... pas un INSERT.
INSERT ne sert qu'à une seule chose;.. AJOUTER un nouvel enregistrement dans la BDD (une nouvelle ligne)
Reprenons depuis le début ....
Les fichiers XML .. comment fonctionnent ils ? Tu en a un par jour c'est ça ?
Et dans ce cas, Si le film n'existe pas déjà... tu inserts le film en BDD plus ses séances ( avec le lastinsertID )
Si le film existe déjà ... tu ajoutes uniquement les séances après avoir récupéré l'id via un SELECT WHERE