Aller au contenu

crindor

Membre
  • Compteur de contenus

    2
  • Inscrit(e) le

  • Dernière visite

Messages postés par crindor

  1. si tu veux je te donnes la ligne de commande à mettre dans cron pour lancer le script

    et il y a quand meme une amelioration à apporter si tu utilises truncate: tester l'accessibilité de ton fichier xml sinon tu vas vider la base sans rien remettre dedans

  2. salut Americas

    voici un parseur que tu peux adapter avec les champs que tu veux une fois la structure de ta base créée

    tu l'appelles en tache cron et çà marche tout seul

    tu peux remplacer truncate par update ou autre chose

    çà marche puisque je m'en sert

    <?php
    mysql_connect("tonroot","tabase","tonpass") or die("Impossible de se connecter");
    mysql_select_db("tabase") or die("pas possible de trouver la base");
    mysql_query("TRUNCATE TABLE `sejour`");

    $file = "http://www.tonsite.com/tonxml.xml";

    if(isset($file)) {
    $title = "";
    $url = "";
    $curtag = "";

    /** fonction startElement, déclenchée lorsque le parseur rencontre une balise XML du type **/
    function startElement($parser, $name, $attrs) {
    global $curtag, $id, $rubrique, $pays, $titre, $form, $arrive, $duree, $img, $resume, $prix, $url ;
    $curtag = $name;
    if ($name == "ID") $id = "";
    if ($name == "RUBRIQUE") $rubrique = "";
    if ($name == "PAYS") $pays = "";
    if ($name == "TITRE") $titre = "";
    if ($name == "FORM") $form = "";
    if ($name == "ARRIVE") $arrive = "";
    if ($name == "DUREE") $duree = "";
    if ($name == "IMG") $img = "";
    if ($name == "RESUME") $resume = "";
    if ($name == "PRIX") $prix = "";
    if ($name == "URL") $url = "";
    }


    /** fonction endElement, déclenchée lorsque le parseur rencontre une balise XML du type **/
    function endElement($parser, $name) {
    global $curtag, $id, $rubrique, $pays, $titre, $form, $arrive, $duree, $img, $resume, $prix, $url ;


    $curtag = "";
    if ($name == "URL") {
    $rubrique = addslashes ($rubrique);
    $pays = addslashes ($pays);
    $titre = addslashes($titre);
    $form = addslashes ($form);
    $arrive = addslashes ($arrive);
    $resume = addslashes($resume);

    $query = "INSERT INTO sejour(id,rubrique,pays,titre,form,arrive,duree,img,resume,prix,url) VALUES('".$id."','".$rubrique."','".$pays."','".$titre."','".$form."','".$arrive."','".$duree."','".$img."','".$resume."','".$prix."','".$url."')";
    $result = mysql_query($query);
    }
    }

    /** fonction characterData, déclenchée lorsque le parseur rencontre des caractères, à l'intérieur d'un noeud XML **/
    function characterData($parser, $data) {
    global $curtag, $id, $rubrique, $pays, $titre, $form, $arrive, $duree, $img, $resume, $prix, $url ;
    if ($curtag == "ID")
    $id .= $data;
    if ($curtag == "RUBRIQUE")
    $rubrique .= $data;
    if ($curtag == "PAYS")
    $pays .= $data;
    if ($curtag == "TITRE")
    $titre .= $data;
    if ($curtag == "FORM")
    $form .= $data;
    if ($curtag == "ARRIVE")
    $arrive .= $data;
    if ($curtag == "DUREE")
    $duree .= $data;
    if ($curtag == "IMG")
    $img .= $data;
    if ($curtag == "RESUME")
    $resume .= $data;
    if ($curtag == "PRIX")
    $prix .= $data;
    if ($curtag == "URL")
    $url .= $data;
    }

    /** crée un nouveau parseur **/
    $xml_parser = xml_parser_create();

    xml_parser_set_option($xml_parser, XML_OPTION_CASE_FOLDING, true);

    /** enregistre les trois fonctions ci dessus **/
    xml_set_element_handler($xml_parser, "startElement", "endElement");
    xml_set_character_data_handler($xml_parser, "characterData");
    if (!($fp = fopen($file, "r"))) {
    die("Impossible d'ouvrir l'URL...");
    }

    while ($data = fread($fp, 4096)) {
    if (!xml_parse($xml_parser, $data, feof($fp))) {
    die(sprintf("erreur XML: %s à la ligne %d", xml_error_string(xml_get_error_code($xml_parser)), xml_get_current_line_number($xml_parser)));
    }
    }
    xml_parser_free($xml_parser);
    mysql_close();

    }
    ?>

    [Edit captain_torche]Merci d'utiliser la balise CODEBOX pour les codes longs

×
×
  • Créer...