Parser xml en php
Posté : 06 févr. 2011, 02:34
Bonjour,
cela fait un petit moment que je lutte pour parser en flus rss (xml) en php.
Et enfin quand je crois avoir réussi je me rend compte que ce n'est pas ce que je veux :
Je voudrais réussir à parser un xml d'un site sportif et le mettre dans un array pour qu'ensuite mon script php enregistre les différents titres et les envois dans ma bdd sur myadmin (exemple : il y a 20 titre dans le xml, je voudrais que les 20 titres soit tous dans un article différent sur ma bdd).
J'ai réussi à le parser en le mettant en forme de liste, mais ensuite quand je veux l'envoyer sur ma bdd il ne m'enregistre que le dernier titre de ma liste.
Je vous demande donc de l'aide pour que mon parsage (je ne sais pas si ça ce dis) permettes à mon script php d'envoyer son contenu comme je le désire.
Si vous avez une autre méthode je suis preneur.
Je vous donne mon code php :
Merci.
[EDIT] Sinon j'ai penser a un truc si quelq'un pourrait me donner un façon de récupérer l'item que je veux dans le xml au lieu de tous les récupérer.
cela fait un petit moment que je lutte pour parser en flus rss (xml) en php.
Et enfin quand je crois avoir réussi je me rend compte que ce n'est pas ce que je veux :
Je voudrais réussir à parser un xml d'un site sportif et le mettre dans un array pour qu'ensuite mon script php enregistre les différents titres et les envois dans ma bdd sur myadmin (exemple : il y a 20 titre dans le xml, je voudrais que les 20 titres soit tous dans un article différent sur ma bdd).
J'ai réussi à le parser en le mettant en forme de liste, mais ensuite quand je veux l'envoyer sur ma bdd il ne m'enregistre que le dernier titre de ma liste.
Je vous demande donc de l'aide pour que mon parsage (je ne sais pas si ça ce dis) permettes à mon script php d'envoyer son contenu comme je le désire.
Si vous avez une autre méthode je suis preneur.
Je vous donne mon code php :
<?php
//Je demande d'inclure le fichier config.php
require "admin/config.php";
//On se connecte à myadmin, puis à la base de donnée
mysql_connect(DB_HOST, DB_LOGIN, DB_PASS);
mysql_select_db(DB_BDD);
?>
<ol>
<?php
$soustra = time() - fileatime("cache.xml");
if ($soustra > 60)
{
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, 'http://www.lequipe.fr/Xml/Football/actu_rss_6.xml');
curl_setopt($curl, CURLOPT_TIMEOUT,2);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$contenu = curl_exec($curl);
if ($contenu == false)
{
$contenu = file_get_contents("cache.xml");
}
else
{
file_put_contents("cache.xml",$contenu);
}
}
else
{
echo "Cache utilisé: <br/>";
$contenu = file_get_contents("cache.xml");
}
$xml = new simpleXMLElement($contenu);
//echo "<pre>".print_r($xml,1)."</pre>";
foreach ($xml->channel->item as $v)
{
$lien = $v->link;
$titrequipe = $v->title;
$datepub = $v->pubDate;
echo "<li>$titrequipe <a href='{$lien}'>Lien</a></li>";
}
?>
</ol>
<?php
$sql = "SELECT * FROM news";
$req = mysql_query($sql) or die ('Erreur SQL!<br />'.sql.'<br />'.mysql_error());
while ($data = mysql_fetch_assoc($req))
{
//à partir de la cette partie est tel quel juste pour essayer mon script. Je la modifierais par la suite quand j'aurais réglé mon problème.
$titrebd = "<div>{$data['titre']}</div>";
echo $titrebd;
}
$provenancequipe = "lequipe";
$sql="INSERT INTO news (titre, provenance) VALUES ('$titrequipe', '$provenancequipe')";
$req = mysql_query($sql) or die ('Erreur SQL!<br />'.sql.'<br />'.mysql_error());
?>
Je ne sais pas si j'ai réussi à me faire comprendre mais si vous avez compris et que vous pouvez me venir en aide, je vous en serrez très reconnaissant.Merci.
[EDIT] Sinon j'ai penser a un truc si quelq'un pourrait me donner un façon de récupérer l'item que je veux dans le xml au lieu de tous les récupérer.