Eviter l'insertion de plusieur entrée identique en bdd
Posté : 23 juin 2015, 15:04
Salut à tous.
J'ai un code fonctionnel et je souhaite juste améliorer un petit truc.
Je récupère dans mon XML mes infos mails il arrive que dans ce fichier XML il existe plusieurs fois la même entrée j'aimerais donc éviter de l'injection une deuxième fois si elle à était déjà injectée.
J'aimerais faire un truc du genre: Si le loisir posséde le même titre, même ville, même code postal, même date alors ne pas insérée en bdd.
Merci à vous
Mon code:
J'ai un code fonctionnel et je souhaite juste améliorer un petit truc.
Je récupère dans mon XML mes infos mails il arrive que dans ce fichier XML il existe plusieurs fois la même entrée j'aimerais donc éviter de l'injection une deuxième fois si elle à était déjà injectée.
J'aimerais faire un truc du genre: Si le loisir posséde le même titre, même ville, même code postal, même date alors ne pas insérée en bdd.
Merci à vous
Mon code:
<?php
//connection a la base de donnee
$dbhost = "localhost";
$dbuser = "root"; // mysql user
$dbpass = ""; // mysql password
$dbname = "mabase"; // mysql database
$conn=mysql_connect($dbhost,$dbuser,$dbpass) or die(erreurServeurMySQL());
mysql_select_db($dbname,$conn) or die('Erreur de selection '.mysql_error()); // problème sur la bdd
$flux = simplexml_load_file('http://localhost/csv/zxpd_201506220436_3467_31592008.xml'); // Source du flux.xml
foreach ($flux->product as $item) {
set_time_limit(0);
$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;
$description = 'blablabla !!!';
// $aLoisirs = array (1 => 'Restaurant', 2 => 'Discothèque', 3 => 'Bar/Pub', 4 => 'Videgrenier/Brocante', 5 => 'Marché', 6 => 'Sport', 7 => 'Loto', 13 => 'Exposition', 10 => 'Divers', 10 => 'Concert', 11 => 'Spectacle', 12 => 'Rencontre', 13 => 'Excursion/Visite', 14 => 'Bal/Festival', 15 => 'Théatre', 16 => 'Classique', 17 => 'Salons et foires', 18 => 'Cinéma', 20 => 'Coffrets cadeau' );
$type = array(
// Coffret cadeau
'CCA|Carte cadeau' => 20, 'COB|Coffrets Bien-être' => 20, 'COS|Coffrets Séjours' => 20, 'COG|Coffrets Gastronomie' => 20, 'COA|Coffrets Activités' => 20,
'COE|Coffrets Enfants' => 20, 'CHM|Coffrets Homme' => 20, 'COS|Coffrets Femme' => 20, ' CPS|Coffrets Sport/Pilotage' => 20, ' CAO|Coffrets Originaux/Atypiques' => 20,
'CMT|Coffrets Multithématiques' => 20, 'CLU|Coffrets luxe' => 20, 'CDI|Coffrets divers' => 20,
// 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, 18, '13CI|Cinéma' => 18, 'ROC|Retransmission Opéra/Concert ;' => 18,
);
// On fait un explode afin de récupérer ce qu'il nous interesse
$postcode = $item->extra2;
$pieces = explode(" ", $postcode);
// 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 = '1010';
// On valide la sortie par default
$valide = '1';
foreach (explode(' ; ', /*(string)*/ $item->merchantCategoryPath) as $subtype) {
$id_type_loisirs = $type[$subtype];
$sql = "INSERT INTO `matable` (id_simply_user,titre,price,photo,url_fnac,date_debut_sortie,date_fin_sortie,description,street,postcode,city,id_region,id_departements,id_type_loisirs,valide) VALUES ('$id_simply_user','$titre','$price','$photo','$url_fnac','$date_debut_sortie','$date_fin_sortie','$description','$street','$pieces[0]','$pieces[2]','$region','$departement','$id_type_loisirs','$valide')";
$req = mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
echo 'données inserées en base';
}
}
?>