KioskeaKioskeaCommentCaMarcheInscrivez-vous, c'est gratuit !
Samedi 17 mai 2008 - 09:41:07

Insertion flux xml

Rechercher : dans
Insertion flux xml
par richardjul
 Fil de Discussions
Statut : Non résolu
mercredi 23 janvier 2008 à 13:57:16
Bonjour,
j'ai réalisé un script qui doit récupérer des annonces de job sur un flux xml, et me les injecter dans ma BDD Mysql pour ensuite les afficher sur notre site. Je fais des tests sur un serveurs de dev. et la tout se passe pour le mieux, les infos sont bien récupérées, et insérée dans la base comme il se doit.
Problème! dès que je met en prod. mon script sur l'hébergeur (Nexenservices), il se passe qqe chose d'étonnant, qqs uns des contenus des variables que je dois stocker se trouve couper, par exemple je dois stocker Luxembourg sur une annonce, et sur 10 au total dans le flux il va me couper la première lettre pour un "uxembourg" et les 2 premières pour une autre "embourg", alors que les 8 autres sont traitées normalement! le plus étonnant c que sur le dev. ça fonctionne très bien! Il me fait la même sur des ref que 'ai hyper besoin pour faire des tries et des tests.

J'ai fait des echo des valeurs que je veux insérer et ça donne ça :

En local :

369211
Ingénieurs Support Application Server H/F
Luxembourg
CSC Computer Sciences
http://clk.atdmt.com/...
efinancialcareers

369215
Ingénieurs Système Solarix et AIX H/F
Luxembourg
CSC Computer Sciences
http://clk.atdmt.com/...
efinancialcareers

369222
Database Specialists H/F
Luxembourg
CSC Computer Sciences
http://clk.atdmt.com/...
efinancialcareers

etc.......

et celui en ligne :
Le premier nickel :
369079
Database Specialists H/F
Luxembourg
CSC Computer Sciences
http://clk.atdmt.com/...
efinancialcareers

le second c ma ref qui est incomplète (elles font toujours 6caractères)

2008-01-05
9079
Responsable de gestion des applications H/F
Luxembourg
CSC Computer Sciences
http://clk.atdmt.com/...
efinancialcareers

et ça c deans les derniers, et tous ceux entre sont bien!!!
2007-11-05
351254
Chargé(e) de Missions Organisation (BPL)
embourg
N.C.
http://clk.atdmt.com/...
efinancialcareers

Comment puis-je faire pour régler ce problème ou je me prend la tête depuis plusieurs jours?

Mon script php :

<?php
mysql_connect("monhebergeur.com", "monlogin, "MDP") or die("Impossible de se connecter");
//mysql_connect("localhost", "root", "") or die("Impossible de se connecter");
mysql_select_db("farvest") or die("pas possible de trouver la base");

$file = "http://www.efinancialcareers.lu/syndication/Itone/eFCjobs.xml";
//$file = "eFCjobs.xml";
global $fournisseur;
$find_fournisseur = explode ("/", $file);
$fournisseur2 = $find_fournisseur[2];
$fournisseur1 = explode (".", $fournisseur2);
$fournisseur = $fournisseur1[1];

if(isset($file)) {
$titre = "";
$date = "";
$ref = "";
$lieu = "";
$entreprise = "";
$curtag = "";

/** fonction startElement, déclenchée lorsque le parseur rencontre une balise XML du type **/
function startElement($parser, $name, $attrs) {
global $curtag, $date, $titre, $lieu, $url, $entreprise, $ref ;
$curtag = $name;

if ($name == "DATE") $date = "";
if ($name == "TITRE") $titre = "";
if ($name == "URL") $url = "";
if ($name == "ENTREPRISE") $entreprise = "";
if ($name == "ref") $ref = "";
if ($name == "Lieu") $lieu = "";
}

/** fonction endElement, déclenchée lorsque le parseur rencontre une balise XML du type **/
function endElement($parser, $name) {
global $curtag, $date, $titre, $lieu, $url, $entreprise, $ref, $fournisseur ;

$curtag = "";

if ($name == "LIEU") {

//Formatage des entrées pour la BDD
$date = addslashes($date);
$date2 = explode("/",$date);
$date_finale = $date2[2]."-".$date2[1]."-".$date2[0];

$titre1 = addslashes($titre);
//$titre1=utf8_decode($titre);

$url1 = addslashes ($url);
//$url1=utf8_decode($url);

$entreprise1 = addslashes ($entreprise);
//$entreprise1=utf8_decode($entreprise);

$lieu1 = addslashes ($lieu);

//Affichage des entrées titre et entreprise enregistré dans la base
echo $date_finale;
echo "<br>";
echo "<strong style=\"color:blue\">".$ref."</strong>";
echo "<br>";
echo $titre1;
echo "<br>";
echo $lieu1;
echo "<br>";
echo $entreprise1;
echo "<br>";
echo $url1;
echo "<br>";
echo $fournisseur;
echo "<br><br>";

// on regarde si la ref existe déjà
$req_ref = "SELECT ref_xml FROM itone_jl_jobposting WHERE ref_xml='$ref'";
$rech_ref = mysql_query($req_ref) or die('Erreur SQL !'.$req_ref.'<br>'.mysql_error());

//on selectionne la ref la plus petite
$req_ref_min = "SELECT Min(ref_xml) AS RefMin FROM itone_jl_jobposting";
$rech_ref_min = mysql_query($req_ref_min) or die('Erreur SQL !'.$req_ref_min.'<br>'.mysql_error());
$res_ref_min = mysql_fetch_array($rech_ref_min);
$ref_min = $res_ref_min["RefMin"];

//Mise à jour des fournisseurs existants
$itone = ITOne;
$req_ref_maj = "UPDATE itone_jl_jobposting SET fournisseur_flux='$itone' WHERE fournisseur_flux=''";
$req_maj_query = mysql_query($req_ref_maj) or die('Erreur SQL ! '.$req_ref_maj.'<br>'.mysql_error());


//echo "<strong style=\"color:blue\">".$fournisseur."</strong>";

//Si la nouvelle ref est plus grande que les dernières on l'insere
if($ref > $ref_min && (strlen($ref))>=6)
{
echo "<strong style=\"color:red\">Plus grand que la plus petite, et ref supérieur à 6</strong>";
// on compte le nombre de résultats
$nb_ref = mysql_num_rows($rech_ref);
if($nb_ref==0) // la ref n'existe pas, on l'insere
{ //echo "<strong style=\"color:red\">Plus grand que la plus petite, et ref supérieur à 6, INSEREE </strong><br>";
/$query = "INSERT INTO itone_jl_jobposting(created,title,location,URL_flux,company,ref_xml,fournisseur_flux) VALUES('".$date_finale."','".$titre1."','".$lieu1."','"­.$url1."','".$entreprise1."','".$ref."','".$fournisseur.&quo­t;')";
$result = mysql_query($query) or die('Erreur SQL !'.$query.'<br>'.mysql_error());
}
}
}
}

/** 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, $date, $titre, $lieu, $url, $entreprise, $ref, $tab_ref, $last_ref ;
if ($curtag == "DATE")
$date .= $data;
//echo $date;
if ($curtag == "TITRE")
$titre .= $data;
//echo $url;
if ($curtag == "LIEU")
$lieu = $data;
//echo $lieu;
if ($curtag == "URL")
$url .= $data;
//echo $titre;
if ($curtag == "ENTREPRISE")
$entreprise .= $data;
//echo $entreprise;
if ($curtag == "REF"){
$ref = $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, 50)) {
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();

}

?>

MERCI tout plein si qq'un a la solution... THANKS

PS: je ne suis pas encore un boss en dev mais j'espère le devenir!
Configuration: Windows XP
Firefox 2.0.0.11
Répondre à richardjul  Signaler ce message aux modérateurs
Discussions pertinentes trouvées dans le forum
23/01 14h01Insertion de flux xml (PHP Mysql)Programmation23/01 14h010
19/03 16h02insérer du XML en PHP puis convertir en PDF ?Webmastering19/03 16h020
05/11 16h56Conversion monnaie et flux xmlProgrammation03/12 11h562
02/11 09h05Transmission flux XML entre PHP et AJAXWebmastering03/11 09h123
Plus de discussions sur « Insertion flux xml » Discussion en cours Discussion fermée Problème résolu
Répondre
Titre du message :
Votre pseudo:
Votre email :
Message: 
  •  
  •  
Options: Recevoir les réponses par mail.
 

Aide