Je travaille sur un fichier XML tout marche très bien.
J'essaie juste de modifier mon script poutr faire en sorte que si l'entrée du xml est déjà existante en bdd alors ne pas l'inserée.
En gros: Si tous les champs si identique alors ne pas insérer l'entrée.
je vous met que l'essentiel du code
// bla bla
// Cinéma
'FIL|Film' => 18, 'ACI|Abonnement/Pass cinéma' => 18, 'ACT|Action' => 18, 'ANI|Animation' => 18, 'ARM|Arts martiaux' => 18, 'AVE|Aventure' => 18, 'AVP|Avant-première' => 18, 'BIO|Biopic' => 18, 'BOL|Bollywood' => 18, 'CIC|Ciné-concert' => 18,
'CIE|Cinéma jeune public' => 18, 'CLA|Classique' => 18, 'COD|Comédie dramatique' => 18, 'COM|Comédie' => 18, 'DEA|Dessin animé' => 18, 'DIV|Divers' => 18, 'DOC|Documentaire' => 18, 'DRA|Drame' => 18, 'EPO|Epouvante-horreur' => 18, 'ERO|Erotique' => 18,
'ESP|Espionnage' => 18, 'FAN|Fantastique ' => 18, 'FCE|Comédie érotique' => 18, 'FFA|Famille' => 18, 'GUE|Guerre' => 18, 'HIS|Historique' => 18, 'JUD|Judiciaire' => 18, 'MED|Médical' => 18, 'MOB|Mobisode' => 18, 'MUS|Musical' => 18,
'NUI|Nuit à thème (cinéma)' => 18, 'PEP|Péplum' => 18, 'POL|Policier' => 18, 'ROM|Romance' => 18, 'SCF|Science fiction' => 18, 'SOA|Soap' => 18, 'THR|Thriller' => 18,
'WEB|Web série' => 18, 'WES|Western' => 18, '131F|Cinéma' => 18, '13CI|Cinéma' => 18, 'ROC|Retransmission Opéra/Concert ;' => 18, 'ROC|Retransmission Opéra/Concert;' => 18, '81F|Cinéma' => 18, '8CI|Cinéma' => 18,
);
// On entre les entrees en bdd
function multiexplode ($delimiters,$string) {
$ready = str_replace($delimiters, $delimiters[0], $string);
$launch = explode($delimiters[0], $ready);
return $launch;
}
foreach ($flux->product as $item) {
// Récupération des données en fonction du tagname du XML
$titre = addslashes($item->name);
$price = $item->price;
$url_fnac = $item->deepLink;
$date_debut_sortie = $item->validFrom;
$date_fin_sortie = $item->validTo;
$street = addslashes($item->terms);
$photo = $item->largeImage;
$genre = $item->merchantCategoryPath;
// Code postal
$postcode = addslashes($item->extra2);
$pieces = explode(" | ", $postcode);
// on parcourt le tag longDescription du XML
$longDescription = addslashes($item->longDescription);
$decoupe = multiexplode(array("|"," ","|"," "),$longDescription);
// Début événement
$dateDebut = $decoupe[0];
$heureDebut = $decoupe[1];
$dateFin = $decoupe[2];
$heurefin = $decoupe[3];
//conversion de la date debut du format fr(jj:mm:aaaa hh:mm:ss) en format us(aaaa-mm-jj hh:mm:ss)
$dateDebut = date_create_from_format('d/m/Y',$dateDebut);
$dateDebut = date_format($dateDebut, 'Y-m-d');
// si il n y a pas de date de fin alors je lui attribue la date de début
if (empty($date_debut_sortie)) {
$date_debut_sortie = $dateDebut;
} else {
$decoupe[1] = $dateDebut;
}
// si il n y a pas d'heure de fin alors je lui attribue la date de début
if (!isset($decoupe[1])) {
$heureDebut = NULL;
} else {
$decoupe[1] = $heureDebut;
}
if (empty($date_fin_sortie)) {
$date_fin_sortie = $date_debut_sortie;
} else {
$decoupe[2] = $dateFin;
}
// si il n y a pas de date de fin alors je lui attribue la date de début
if (!isset($decoupe[2])) {
$dateFin = $dateDebut;
} else {
$decoupe[2] = $dateFin;
}
if (empty($date_fin_sortie)) {
$date_fin_sortie = $date_debut_sortie;
} else {
$decoupe[2] = $dateDebut;
}
// si il n y a pas d'heure de fin alors je lui attribue l'heure de début
if (!isset($decoupe[3])) {
$heurefin = $heureDebut;
} else {
$decoupe[3] = $heurefin;
}
// On attribut le département en fonction des 2 premiers chiffre du code postal
$departement = substr($postcode, 0, 2);
$region = regionIdByDepartement($departement);
// Attribution de la valeur id 1010 pour la fnac
$id_simply_user = '999';
// On valide la sortie par default
$valide = '1';
foreach (explode(' ; ', /*(string)*/ $item->merchantCategoryPath) as $subtype) {
$id_type_table = $type[$subtype];
}
// bla bla
// description
$description = addslashes($desc_genre);
$result = mysql_query("SELECT id_table FROM table WHERE titre = ".$titre.", city = ".$pieces[2].", postcode = ".$pieces[1].", date_debut_sortie = ".$dateDebut.", date_fin_sortie = ".$dateFin."");
if(mysql_num_rows($result) == 1){
//Entrée déjà existante
echo 'Cette entrée existe déjà';
}else{
// Pseudo libre
$sql = "INSERT INTO `table` (id_simply_user,titre,price,photo,url_fnac,date_debut_sortie,horaire_debut,date_fin_sortie,horaire_fin,description,street,postcode,city,id_region,id_departements,id_type_table,valide) VALUES ('$id_simply_user','$titre','$price','$photo','$url_fnac','$date_debut_sortie', '$heureDebut', '$date_fin_sortie', '$heurefin', '$description','$street','$pieces[0]','$pieces[1]','$region','$departement','$id_type_table','$valide')";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
echo 'Insertion en bdd';
}
}
?>
Ps: Je suis obligé de passé par l'ancienne syntaxe