Parser xml en php

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 : Parser xml en php

Re: Parser xml en php

par AB » 07 févr. 2011, 19:20

PS : je ne trouve pas de bouton "résolu", suis obligé d'accepter un des messages pour passer en résolu ?
Il me semble que oui, mais tu peux cliquer sur ton dernier message.

Re: Parser xml en php

par DiMa2gio » 06 févr. 2011, 16:30

Merci AB je vais regarder pour voir, mais j'ai trouvé par moi même une solution qui marche mais qui est un peu répétitif, mais maintenant il me faudrait trouver le moyen de dire :

Si le titre existe déjà dans la table de ma bdd : ne rien faire, et si il n'existe pas : écris le dedans.

Donc avis aux amateur qui sauraient m'aider à écrire ca.

[Edit] Je vais créer un autre sujet pour cette question pour que le titre soit un peu plus approprié a mon nouveau problème.
PS : je ne trouve pas de bouton "résolu", suis obligé d'accepter un des messages pour passer en résolu ?

Re: Parser xml en php

par AB » 06 févr. 2011, 13:47

T'a regardé avec http://php.net/manual/fr/class.domdocument.php pour voir si ça ne serait pas plus facile ?

Parser xml en php

par DiMa2gio » 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 :
<?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.