Jump to content

[PARSER XML] Help me please


Recommended Posts

Recyclage de topic
Voir plus bas...

Bonjour, c'est encore moi...

Sur un de mes sites je regroupe les news de différents sites hardware grace aux codes javascript qu'ils fournissent.

Cette page se trouve ici : http://www.bod.power-heberg.com/news/

Seulement dés qu'un site ne répond pas (qu'il est hors ligne) le chargement de la page s'arréte et les news des sites suivants ne sont alors pas affichées.

Vous me suivez ?

Y'aurait-il un script qui me permette l'abandon de la requéte a ce site et de passer alors au site suivant aprés X secondes d'attente ?

Link to comment
Share on other sites

Ben j'ai essayé, page blanche a chaque fois... :transpi:

En fait je veut avoir toutes les news sur une seule et méme page, et ca Xoops ne le permet pas (enfin avec le module manchette)...

Et pour récupérer les flux RSS j'ai pas trouvé de solutions...

Enfin si j'ai trouvé ce script : http://www.bod.power-heberg.com/rss.txt

Je ne l'ai pas encore essayé, mais il ma l'air bien compliqué... :roule:

Puis je me demande si ca ne fera pas le méme, cad que si le serveur du site est down, pas de flux et donc l'interprétation php va certainement bloquer nan ? :mdr:

Bon, je vais essayer le script que j'ai trouver pour voir si ca marche...

Link to comment
Share on other sites

Pour que tes fonctions de récupération de news ne soient pas bloquantes, il faudrait qu'elles s'exécutent dans des threads séparés. Or javascript ne possède pas ce genre de fonctionnalités...

Je pense que ton problème sera difficile à résoudre... :transpi:

Link to comment
Share on other sites

Oui c'est ca le probléme...

Sur un autre forum une personne m'a parlé du XmlHttpRequest, je voit ce que c'est, c'est ce qui est utilisé pour l'interface Gmail mais j'y connais rien...

Bon, le script que j'ai trouvé donne ca : http://www.bod.power-heberg.com/rss.php, donc je l'abandonne...

Bon, d'autres idées ? :oops:

oui, il te suffit de supprimer les éléments en trop dans le script, et là ca devrait aller mieux ;)

Link to comment
Share on other sites

Si seulement tous les sites avaient ceci : http://www.infos-du-net.com/php-articles.php?n=15

Ca me permettrais de faire un include directement dans le php, seulement il n'y a que 2 ou 3 sites qui le font...

Le reste c'est comme pc inpact c'est fait pour du javascript, et donc si je fait un include ca va donner ca :

document.write('06/06 : Récepteur TNT externe PCTV MEDIACENTER 200e

'); document.write('06/06 : Du Soleil pour une meilleure Pomme ?

'); document.write('06/06 : Sacem : Toutes nos lignes sont occupées...

....

A mois que qu'un gentil inpactien me montrerais un code pour le nettoyer des document.write(' et '); :chant:

Link to comment
Share on other sites

ben sinon à la rigueur tu télécharges un parseur de rss open source, et tu le places sur ton site

:eeek2:

Ca fonctionne ! :yes:

<?php
/* ------------------------------------------------------
Parser de rss - by comscripts
------------------------------------------------------- */

$site = "http://www.pcinpact.com/include/news.xml";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

for( $i = 0; $i < count($items)-1; $i++ ) {
 eregi("<title>(.*)</title>",$items[$i+1], $title );
 eregi("<url>(.*)</url>",$items[$i+1], $url );
 eregi("<categorie>(.*)</categorie>",$items[$i+1], $cat);
 echo "<li><a href='".$url[1]."'>".$title[1]."</a> - ".$cat[1];
}
}

?>

Bon faut que je le bidouille un peu pour qu'il affiche les dates devant la news mais ca fonctionne ! :rhooo:

:chant:

Link to comment
Share on other sites

et ca ?

<?php
/* ------------------------------------------------------
Parser de rss - by comscripts
------------------------------------------------------- */

$site = "http://www.pcinpact.com/include/news.xml";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

for( $i = 0; $i < count($items)-1; $i++ ) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
eregi("<categorie>(.*)</categorie>",$items[$i+1], $cat);
echo "<li><a href='".$url[1]."'>".$title[1]."</a> - ".$cat[1];
}
}

Link to comment
Share on other sites

Version béta de ma page récupéreuse de rss : http://bod148.free.fr/news/ :8

Un joli assemblage de 9 fichiers php pour votre plaisir ! :-D

Vous voulez ajouter d'autres site ? demandez le moi ! ;)

Par contre le flux de Hardware.fr passe pas ! :fete:

Et celui de blue-hardware passe mal ! :craint:

Et Nokytech n'a pas de flux xml ! :sucre:

Et moi je vais dormir ! :byebye:

Link to comment
Share on other sites

Heu, toujours moi ! :francais:

J'ai un probléme pas trés important mais super chiant quand méme...

Donc je m'explique :

Dans le script on peut choisir le nombre de news a afficher en retranchant un certain nombre de news au nombre total, vous me suivez ? :sucre:

Seulement sur certains site (comme ppc) le nombre de news dans le XML varie sans cesse et donc comme il retranche toujours le méme nombre, ben défois ca affiche rien, défois ca en affiche un ou deux.. :roule:

Voila le script :

<?php

$site = "http://www.presence-pc.com/rss.xml";
$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);

for( $i = 0; $i < count($items)-55; $i++ ) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
echo "<li><a href='".$url[1]."'>".$title[1]."</a>";
}
}

?>

Donc si qqn s'y connait pourrait-il m'expliquer comment pourrais-je faire pour que le script compte les news a afficher plutot que de le retrancher au nombre total de news ?

Ca se passe dans cette ligne, mais comment la modifier ? :

for( $i = 0; $i < count($items)-55; $i++ )

Merci d'avance aux courageux... :francais:

Link to comment
Share on other sites

Merci ! :francais:

J'suis vraiment une quiche quand méme ! :sucre:

C'était pourtant pas compliqué... :francais:

Si je ne vérifie pas que $i<count($items) ca va faire quoi si il en a moins que le nombre voulu ? Des lignes vides ?

Link to comment
Share on other sites

J'ai tenté un truc, et ca fonctionne !!! :

<?php

$nombre_limite = 20; // Nombre maximum d'éléments à afficher
$site = "http://www.pcinpact.com/include/news.xml";

$fp = @fopen($site,"r");
while(!feof($fp)) $raw .= @fgets($fp, 4096);
fclose($fp);

if( eregi("<item>(.*)</item>", $raw, $rawitems ) ) {
$items = explode("<item>", $rawitems[0]);
$nb = count($items); 
$maximum = (($nb-1) < $nombre_limite) ? ($nb-1) : $nombre_limite; 

for ($i=0; $i<$maximum; $i++) {
eregi("<title>(.*)</title>",$items[$i+1], $title );
eregi("<link>(.*)</link>",$items[$i+1], $url );
echo "<li><a href='".$url[1]."'>".$title[1]."</a>";
}
}

?>

:francais::francais:

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...