Accueil > Forum > > > > Mise d'une BDD par un fichier XML
Mise d'une BDD par un fichier XML
mercredi 22 septembre 2010 à 12:38:19 |
Mise d'une BDD par un fichier XML

gnut
|
Bonjour,
J'ai réalisé (avec l'aide de "neige" d'ailleurs) un fichier .php permettant d'insérer ou de modifier une table de ma BDD selon un fichier XML régulièrement modifié.
Le souci est que je n'ai toujours pas trouvé le moyen de supprimer les lignes obsolètes de ma table.
Code PHP : <?php
//-------------------------------------------------------------------
//désactiver magic_quotes
if (get_magic_quotes_gpc()) {
$input = array(&$_GET, &$_POST, &$_COOKIE, &$_ENV, &$_SERVER);while (list($k,$v) = each($input)) {
foreach ($v as $key => $val) {
if (!is_array($val)) {$input[$k][$key] = stripslashes($val);continue;}
$input[] =& $input[$k][$key];}
}
unset($input);}
//-------------------------------------------------------------------
//start--------------------------------------------------------------
session_start();require_once('classes/all_adm_fns.php');//changement du level du raport d'erreur a E_ALL
//pour detecter la plupart des variables non initialisées
error_reporting(E_ALL);//-------------------------------------------------------------------
//--------------------------------------------------------------------
//Verifier si le super admin est connécté
if( !empty($_SESSION['valid_admin']) )
{
$valid_admin = $_SESSION['valid_admin'];}
if( !check_valid_all() )
{
redirect( "index.php" );exit;}
//--------------------------------------------------------------------
//-------------------------------------------------------------------
error_reporting(E_ALL);
mysql_connect('...) or die('Erreur de connexion '.mysql_error());mysql_select_db('...');
//////////////////////Wizzimmo
function prepare_string(SimpleXMLElement $sxe) {
return mysql_real_escape_string(utf8_decode((string) $sxe));
}
if (file_exists('exemple_wizzimmo.xml'))
{
$Agences_xml = simplexml_load_file('exemple_wizzimmo.xml');
foreach ($Agences_xml->Agence as $Agence){print "Nom d'agence : ";
////////////////// Vérification///////////////
var_dump($Agence->CodeAgenceInterne);
print " <br />\n";
print "N° téléphone: {$Agence->Telephone1_Agence} <br />\n";
print "email: {$Agence->EMAIL_Agence} <br />\n";
print "Référence annonce client : {$Agence->Annonce->Reference} <br />\n";
print "Type d'annonce : {$Agence->Annonce->TypeAnnonce} <br />\n";
print "Date Modification : {$Agence->Annonce->DateModification} <br />\n";
print "Code postal : {$Agence->Annonce->CodePostal} <br />\n";
print "Ville : {$Agence->Annonce->Ville} <br />\n";
print "titre : {$Agence->Annonce->Titre} <br />\n";
print "Ann : {$Agence->Annonce->Texte} <br />\n";
print "Prix : {$Agence->Annonce->Prix} <br />\n";
print "Surf habitable: {$Agence->Annonce->Surf_Hab} <br />\n";
print "Nb Pieces : {$Agence->Annonce->NbPieces} <br />\n";
print "Département : {$Agence->Annonce->CodePostal} <br />\n";
print "Les photos : <br />\n";
var_dump($Agence->Annonce->URL_Photo);
print " <br />\n";
var_dump($Agence->Annonce->URL_Photo[1]);
print " <br />\n";
var_dump($Agence->Annonce->URL_Photo[2]);
print " <br />\n";
var_dump($Agence->Annonce->URL_Photo[3]);
print " <br />\n";
var_dump($Agence->Annonce->URL_Photo[4]);
print " <br />\n";
////////////////// Vérification///////////////
///////////////////Spécificité catégories ////////////////////////////////
if((string)$Agence->Annonce->TypeAnnonce == "VENTE" )
{$Typeann= "72";
}
else
{
$Typeann = "71";}
///////////////////////Spécificités constantes///////////////////////////
$password = 'imoconseil201025';
$sta = '2';
$conf = '1';
$val = '1';
$ra ='0';
$re ='1'; ///// à voir plus tard
$time = time();
$ipadresse = '79.91.192.30'; ///// à voir plus tard
$rand = '';
///////////////////////Spécificité tag agence////////////////////////////
$nom = prepare_string($Agence->CodeAgenceInterne);
$telag = (string)$Agence->Telephone1_Agence;
$mail = prepare_string($Agence->EMAIL_Agence);
///////////////////////Spécificité tag agence->annonce///////////////////
$ref = (string)$Agence->Annonce->Reference;
$vil = prepare_string($Agence->Annonce->Ville);
$cod = (string)$Agence->Annonce->CodePostal;
$de = (string)$Agence->Annonce->CodePostal;
$titre = prepare_string($Agence->Annonce->Titre);
$desc = prepare_string($Agence->Annonce->Texte);
$pri = (string)$Agence->Annonce->Prix;
$surf = (string)$Agence->Annonce->Surf_Hab;
$nbpiece = (string)$Agence->Annonce->NbPieces;
$pho1 = (string)$Agence->Annonce->URL_Photo;
$pho2 = (string)$Agence->Annonce->URL_Photo[1];
$pho3 = (string)$Agence->Annonce->URL_Photo[2];
$pho4 = (string)$Agence->Annonce->URL_Photo[3];
$pho5 = (string)$Agence->Annonce->URL_Photo[4];
/////////////////////// Mysql annonces ////////////////////////////
$sql1 = "SELECT ref_annonce_client, soc_nom FROM annonces WHERE ref_annonce_client ='$ref'";
$query1 = @mysql_query($sql1);
$result1 = result_to_array($query1,2);
////////////////////vérification
print " <br />\n";
echo "Ref : ".$result1[0][0];
print " <br />\n";
echo "Nom : ".$result1[0][1];
print " <br />\n";
print " <br /><hr />\n";
////////////////////Fin vérification
if( ($result1[0][0] == $ref) && ($result1[0][1] == $nom) )
{
mysql_query("UPDATE annonces SET id_reg='$re', id_dep=LEFT('$de',2), id_cat='$Typeann', email='$mail', ville='$vil', code_pos='$cod', status='$sta', soc_nom='$nom', nom='$nom', tel='$telag', titre='$titre', radio='$ra', ann='$desc', prix='$pri', Surface='$surf', Piéces='$nbpiece', random_code='$rand', confirm='$conf', valid='$val', url_pho1='$pho1', url_pho2='$pho2' ,url_pho3='$pho3' , url_pho4='$pho4', url_pho5='$pho5' WHERE ref_annonce_client='$ref' AND nom='$nom'");
}
else
{
mysql_query("INSERT INTO annonces (ref_annonce_client, id_reg, id_dep, id_cat, email, password, ville, code_pos, status, soc_nom, soc_siren, type, nom, tel, titre, radio, ann, prix, Kilométrage, Année_Modéle, Cylindrée, Surface, Piéces, Capacité, random_code, confirm, valid, date, tel_cache, ip, url_pho1, url_pho2 ,url_pho3 , url_pho4, url_pho5 )VALUES('$ref', '$re', LEFT('$de',2), '$Typeann', '$mail ', '$password', '$vil', '$cod', '$sta', '$nom', '', '1', '$nom', '$telag', '$titre', '$ra', '$desc', '$pri', '', '', '', '$surf', '$nbpiece', '', '$rand', '$conf', '$val', '$time', 'N', '$ipadresse', '$pho1', '$pho2', '$pho3', '$pho4', '$pho5')")
or die("Erreur MySQL : ".mysql_error());
}
/////////////////////// FIN Mysql annonces ////////////////////////////
} //////////////fin foreach
} //////////////fin file_exist
else
{
exit('Echec lors de l\'ouverture du fichier XML.');
}
?>
|
|
mercredi 22 septembre 2010 à 14:44:37 |
Re : Mise d'une BDD par un fichier XML

gnut
|
Est-ce que quelqu'un aurait une petite idée pour que les lignes obsolètes de la Table soient suppriméee à l'exécution du script?
Merci.
|
|
mercredi 22 septembre 2010 à 14:46:46 |
Mise à jour d'une table avec les données d'un fichier XML.

gnut
|
Est-ce que quelqu'un aurait une petite idée pour que les lignes obsolètes de la Table soient suppriméee à l'exécution du script?
Merci.
|
|
mercredi 22 septembre 2010 à 15:27:43 |
Re : Mise d'une BDD par un fichier XML

Lyle56
|
Bonjour,
Une solution consisterai à avoir un champ de "controle" ( genre isInXml )
que tu met à false au début de ton script ( un simple update )
Tu ajoute à tes requéte Insert et Update se qu'il faut pour que isInXml passe à True.
En fin de script; tu efface tout les enregistrement qui ont isInXml à false.
c'est une solution, il peut y en avoir d'autre.
|
|
mercredi 22 septembre 2010 à 16:22:10 |
Re : Mise d'une BDD par un fichier XML

gnut
|
Merci pour ta réponse, effectivement ce serait pas mal.
Y aurait-il une solutions qui permette de ne pas changer ma ma Table?
|
|
mercredi 22 septembre 2010 à 17:43:18 |
Re : Mise d'une BDD par un fichier XML

Lyle56
|
Il pourrais y en avoir une mais comme je n'est pas la structure de ta table;
Je vois les champs 'status' 'valid' 'date'
à quoi cela correspond t'il ??
|
|
mercredi 22 septembre 2010 à 18:01:09 |
Re : Mise d'une BDD par un fichier XML

gnut
|
Voila :
'status' >> particulier ou prof. valeurs 1 ou 2
'valid' >> affichage ou non de l'annonce valeurs 1 ou 0
'date' >> date la mise en ligne (format time())
|
|
jeudi 23 septembre 2010 à 09:41:15 |
Re : Mise d'une BDD par un fichier XML

Lyle56
|
Une autre question :
dans ton fichier XML, tu as toutes les annonces à afficher avec la date de mise en ligne ??
Si c'est le cas, tu peut utiliser ce champs pour ton contrôle.
|
|
jeudi 23 septembre 2010 à 10:06:59 |
Re : Mise d'une BDD par un fichier XML

gnut
|
je vais essayer ça.
Merci Lyle56.
|
|
jeudi 23 septembre 2010 à 11:18:31 |
Re : Mise d'une BDD par un fichier XML

neigedhiver
|
Ou alors stocker le champ de contrôle dans une table temporaire dont les deux champs seraient : le champ de contrôle et l'ID de la table en question.
La procédure est la même mais ne nécessite pas de modifier la table.
Seul bémol : les performances qui s'en trouvent dégradées ; mais ça ne doit pas être important, puisqu'il s'agit d'une action d'administration, pas d'une action effectuée à chaque chargement de page.
--
Neige
Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
|
|
Cette discussion est classée dans : string, url, print, annonce, agence
Répondre à ce message
Sujets en rapport avec ce message
Correspondances XML mysql [ par gnut ]
Salut, j'ai un souci d'enregistrement dans ma BDD. Les Print sont bons mais dans la BDD tous les $Agence->Annonce->... n'enregistrent que des 0 ou ri
site de petite annonce [ par marochi ]
bjr; j'ai un problème je veux realiser un site de petite annonce comme ce si [url=http://www.leboncoin.fr/bureaux_commerces/79374802.htm?ca=4_s]comme
afficher un champ d'un base de donnée sous forme d'url [ par xzonz ]
Bonjour a toutes et tousbon bin voila je cherche à afficher le champ "url" d'une base de donnée sous forme de liens hypertexte.j'ai essayé pas mal de
champs formulaire <option> avec MySQL [ par pyranhaz ]
Est-il possible de faire intervenir la sélection d'un champs dans une table MySQL de manière à retourner une redirection URL selon le champs choisi
formulaire [ par Tomcube ]
SalutJ'ai un problème complètement bizarre.J'ai un formulaire avec des champs "titre", "section", "titre0" et "astuce0". Lorsque je rempli les 4, et q
registers globals & sessions [ par eax ]
salutjuste une petite question, depuis que j'ai passé register_globals à off, je n'arrive plus à retrouver ma variable anciennement appelée $PHPSESSID
Question print et echo. [ par zzzzzz ]
salut !!voila mon code:include('connection_mysql.php');$date = "date('d/m/y') date('H:i')";$sql = "INSERT INTO `article_valid` (`section` , `rituel` ,
piti pb d'url [ par Morgul ]
j'ai un formulaire avec un bouton et une zone de texte (ki sapelle valeure), j'ai utilisé la méthode get et comme action j'ai: page1.php?tmp=table, ma
Récuperer des infos sur un site [ par Looping2605 ]
Dans le cadre du developpement de mon site web, j'aimerais savoir si c'est possible d'aller rechercher des infos sur un autre site (juste 3 mots qui s
HELP ! URL simplifiée [ par xphilx ]
je fais un système de profils, genre page perso. les visiteurs sont connus dans la BDD par $username et leur page s'appelle fiche.php?$username.Commen
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|