INSERT et UPDATE d'un flux xml en BDD

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : INSERT et UPDATE d'un flux xml en BDD

par zeus » 24 juin 2009, 12:01

pourtant, ça résoudrait ton soucis de INSERT/UPDATE.

Concernant le DELETE, la solution est de charger l'ensemble des id avant modification, puis, à chaque modification, de marquer l'id comme étant traité.
A la fin, il te reste donc la liste des id non modifiés, donc à supprimer.

par Toons43 » 24 juin 2009, 10:17

Non je crois que ça ne marchera pas

par micetf » 23 juin 2009, 20:53

Bonjour,
La clause ON DUPLICATE KEY UPDATE ne pourrait-elle pas faire l'affaire ?
Fred

INSERT et UPDATE d'un flux xml en BDD

par Toons43 » 23 juin 2009, 18:36

Bonjour,

Je suis bloqué sur un problème qui doit être tout bête mais que je n'arrive pas à résoudre.
Je récupère un flux xml d'un marchand que j'insère en bdd, j'arrive à l'insérer mais je voudrais que lorsque je telecharge mon flux tous les jours, je puisse vérifier si il y a des ajouts et les rajouter, si il y a des modifications faire un UPDATE des données, et si des données sont supprimées faire un DELETE des données en base.

Voici mon code
<?php
mysql_connect("serveur", "username", "mdp"); // Connexion à MySQL
mysql_select_db("bdd"); // Sélection de la base


$file = @fopen("http://www.adresseduflux.com/flux.xml", "r");
if (!$file) { echo "Impossible de lire la page.\n";
exit;
}

// On ouvre le fichier
$xml = simplexml_load_file('http://www.adresseduflux.com/flux.xml'); 

foreach ($xml->noeud1 as $noeud1) {
$champ1 = mysql_real_escape_string(htmlspecialchars(addslashes($noeud1['nom'])));
  foreach ($noeud2->noeud3 as $noeud3) { 
  $champ2 = mysql_real_escape_string(htmlspecialchars(addslashes($noeud3['lib'])));
  $champ3 = mysql_real_escape_string(htmlspecialchars(addslashes($noeud3['date'])));
  $champ4 = mysql_real_escape_string(htmlspecialchars(addslashes($noeud3['type'])));
    foreach ($noeud3->noeud4 as $noeud4) {
    $champ5= mysql_real_escape_string(htmlspecialchars(addslashes($noeud4['prod'])));		
$requete = "INSERT INTO matable SET Champ1='".$champ1."', Champ2='".$champ2."', Champ3='".$champ3."', Champ4='".$champ4."', Champ5='".$champ5."'";
$resultat = mysql_query ($requete) or die(mysql_error());

    }
  }
}
fclose($file);
mysql_close();
?>
Comment dois-je faire pour faire les vérifs
D'avance merci