Module de news avec flux rss ?

K20
Eléphant du PHP | 303 Messages

12 nov. 2005, 01:42

hum est ce qu'on pourrai voir comment tu t'en sert (je pense savoir d'ou ca vien)

d'autre part ton flux rss n'est pas bon il manque description aux item pour que ce flux soit valide
Heu, oui, tu veux voir quoi exactmement ? Le fichier xlst ?

Pour la description ba je sais mais j'e veux pas en mettre ^^

Mammouth du PHP | 1311 Messages

12 nov. 2005, 13:09

avec ton fichier php tu genere une chaine xml que tu affiche???

si oui il faut que tu envoie au navigateur un header avec le type xml

pour la description tu est oubligé de la mettre meme si elle reste vide

K20
Eléphant du PHP | 303 Messages

13 nov. 2005, 22:07

avec ton fichier php tu genere une chaine xml que tu affiche???

si oui il faut que tu envoie au navigateur un header avec le type xml

pour la description tu est oubligé de la mettre meme si elle reste vide
En quelque sort oui ;)
En fait ça génère une page XML et non pas un fichier.

Le header je l'envoie dans quelle page ? ma page rss.php ou ma page en .xslt ?

Et c'est quoi le header qu'il faut mettre ? :?

Mammouth du PHP | 1311 Messages

14 nov. 2005, 14:48

essaye ca,a mettre dans ta page .php(en haut)
            header("Content-Type: application/xml");

Invité
Invité n'ayant pas de compte PHPfrance

14 nov. 2005, 22:42

Non, je l'avais déjà mis, ça ne change rien :(
Je pense qu'il faut modifier quelque chose dans le fichier xslt non ?

Mammouth du PHP | 1311 Messages

14 nov. 2005, 22:56

donne nous ton code, sinon on pourra faire que des suppositions
et on ne pourra pas t'aide d'avantage

K20
Eléphant du PHP | 303 Messages

15 nov. 2005, 22:40

Ok,

Code du fichier XSLT (provisoire)

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output encoding="iso-8859-1" indent="yes" method="xml" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:param name="titre"/> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="$titre"/> </title> <!-- <style media="all" type="text/css"> @import url(../css/nemostyle.css); </style>--> </head> <body> <xsl:apply-templates select="//item"> <xsl:sort data-type="number" select="guid" order="descending" /> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="item"> <div> <xsl:attribute name="id"> <xsl:text>#</xsl:text> <xsl:value-of select="guid"/> </xsl:attribute> <xsl:attribute name="class"> <xsl:text>article</xsl:text> </xsl:attribute> <h2> <xsl:value-of select="title"/> </h2> <p> <xsl:attribute name="lang"> <xsl:text>fr</xsl:text> </xsl:attribute> <xsl:value-of select="description"/> </p> </div> </body> </html> </xsl:template> </xsl:stylesheet>

Code du fichier PHP
<?php
header("Content-Type: text/xml; charset=\"iso-8859-1\"");
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-1\" ?>\n<?xml-stylesheet href=\"rss/rss.xsl\" type=\"text/xsl\"?>\n";
include("config/conf.php");
$act = $_GET['act'];
?>
<rss version="2.0">
<channel>
<title>Pcshows : les news, les articles et le forum</title>
<link><? echo $url; ?></link>
<description>Site de tunning PC, overclocking, watercooling, tests ...</description>
<managingeditor><? echo $email_admin; ?></managingeditor>
<webmaster><? echo $email_admin; ?></webmaster>
<language>fr</language>
<lastbuilddate><?=date('r')?></lastbuilddate>
<?php
if ($act == "forum") {
// Forum
$requete = mysql_query("SELECT * FROM phpbb_forums",$connexion);
$nombre_forum = mysql_num_rows($requete);
$k = 0;
while ($k<$nombre_forum)
{
$lastpost = mysql_result($requete,$k,"forum_last_post_id");
// Vérification id != 0
if ($lastpost != 0) {
// Dernier post
$requete_post = mysql_query("SELECT * FROM phpbb_posts_text WHERE post_id=\"".$lastpost."\"",$connexion);
$tableau = mysql_fetch_array($requete_post, MYSQL_ASSOC);
$idpost = $tableau['post_id'];
$sujet = $tableau['post_subject'];
$texte = $tableau['post_text'];
// Topic
$requete_topic = mysql_query("SELECT * FROM phpbb_topics WHERE topic_first_post_id=\"".$idpost."\"",$connexion);
$tableau2 = mysql_fetch_array($requete_topic, MYSQL_ASSOC);
$idtopic = $tableau2['topic_id'];
// Affichage flux ...
echo('<item>
<title>'.$sujet.'</title>
<link>'.$url.'/forum/viewtopic.php?t='.$idtopic.'</link>
<description>'.$texte.'</description>
</item>');
}
$k++;
}
}

if ($act == "news") {
// Requête
$requete = mysql_query("SELECT * FROM news WHERE valider=\"1\" ORDER BY id DESC LIMIT 0, 10",$connexion) or die ("Requête invalide") ;
$resultat = mysql_num_rows($requete);
$i = 0;
while ($i<$resultat)
{
$id = mysql_result($requete,$i,"id");
$titre = mysql_result($requete,$i,"titre");
?>
<item>
<title><? echo html_entity_decode($titre, ENT_QUOTES); ?></title>
<link><? echo $url; ?>/site/onenews.php?id=<? echo $id; ?></link>
</item>
<?
$i++;
}
}
if ($act == "articles") {
$j = 1;
while ($j<7)
{
$categ = mysql_query("SELECT * FROM article WHERE valider=\"1\" AND categorie=\"".$j."\" ORDER BY id DESC LIMIT 1",$connexion);
// Vérification présence d'un article dans la catégorie
if (mysql_num_rows($categ) != 0) {
$tableau_categ = mysql_fetch_array($categ, MYSQL_ASSOC);
$id = $tableau_categ['id'];
$titre = $tableau_categ['titre'];
?>
<item>
<title><? echo html_entity_decode($titre, ENT_QUOTES); ?></title>
<link><?=$url?>/site/ article.php?id=<?=$id?>&categorie=<?=$j?>&page=1</link>
</item>
<?
}
$j++;
}
}
mysql_close($connexion);
?>
</channel>
</rss>
Voilà ;)

Mammouth du PHP | 1311 Messages

15 nov. 2005, 23:15

ca vient peut etre de param
De même qu'il est possible d'utiliser dans les élément de haut niveau, xsl:variable et xsl:param sont aussi permis dans les modèles. Dans un modèle, xsl:variable est autorisé partout où une instruction l'est. Dans ce cas, le lien est visible pour tous les frères suivant ainsi que leurs descendants. Notez bien que le lien n'est pas visible par l'élément xsl:variable lui-même. xsl:param est permis lorsqu'il est fils au début d'un élément xsl:template. Dans ce cas précis, le lien est visible pour tous les frères suivant et à leurs descendants. Notez que le lien n'est pas visible par l'élément xsl:param lui-même.

Un lien inhibe un autre lien si le lien se produit à un point où l'autre lien est visible, et les deux liens doivent avoir le même nom. Si un lien établit par un élément xsl:variable ou un élément xsl:param dans un modèle inhibe un autre lien établit aussi dans un modèle par un élément xsl:variable ou un élément xsl:param alors c'est une erreur. Par contre, lien un établit par un élément xsl:variable ou un élément xsl:param dans un modèle peut inhiber un autre lien établit par un élément de haut niveau xsl:variable ou un élément de haut niveau xsl:param. Ainsi, ce qui suit est erroné :

<xsl:template name="foo">
<xsl:param name="x" select="1"/>
<xsl:variable name="x" select="2"/>
</xsl:template>

Cependant ce qui suit est autorisé :

<xsl:param name="x" select="1"/>
<xsl:template name="foo">
<xsl:variable name="x" select="2"/>
</xsl:template>

Mammouth du PHP | 19672 Messages

15 nov. 2005, 23:20

:shock: Tu te retrouves dans ce foullis ??? Tu pourrais au minimum indenter ton code, c'est illisible comme ça.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

K20
Eléphant du PHP | 303 Messages

17 nov. 2005, 01:47

:shock: Tu te retrouves dans ce foullis ??? Tu pourrais au minimum indenter ton code, c'est illisible comme ça.
Pour le fichier PHP, oui ^^
Pour l'autre non :(

Sinon j'ai enlevé le param ça bug toujours :(

Voici le nouveau code :

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output encoding="iso-8859-1" indent="yes" method="xml" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="$titre"/> </title> <!-- <style media="all" type="text/css"> @import url(../css/nemostyle.css); </style>--> </head> <body> <xsl:apply-templates select="//item"> <xsl:sort data-type="number" select="guid" order="descending" /> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="item"> <div> <xsl:attribute name="id"> <xsl:text>#</xsl:text> <xsl:value-of select="guid"/> </xsl:attribute> <xsl:attribute name="class"> <xsl:text>article</xsl:text> </xsl:attribute> <h2> <xsl:value-of select="title"/> </h2> <p> <xsl:attribute name="lang"> <xsl:text>fr</xsl:text> </xsl:attribute> <xsl:value-of select="description"/> </p> </div> </body> </html> </xsl:template> </xsl:stylesheet>

Mammouth du PHP | 1311 Messages

17 nov. 2005, 14:21

bon ca vien peut etre du fichier xsl

l'exemple que je t'ai filer a un truc bizard
tu peut remarquer que body et html sont fermer avant la fin :?:
(bizard j'ai poster sur un autre forum pour avoir des explications de son auteur mais vu qu'il passeaussi par ici on aura peut etre la reponse ici :wink: )

maintenat ton fichier xsl ne peut etre valide tu a 2 foi la balise body et html qui ferme

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output encoding="iso-8859-1" indent="yes" method="xml" omit-xml-declaration="yes" doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/> <xsl:template match="/"> <html> <head> <title> <xsl:value-of select="$titre"/> </title> <!-- <style media="all" type="text/css"> @import url(../css/nemostyle.css); </style>--> </head> <body> <xsl:apply-templates select="//item"> <xsl:sort data-type="number" select="guid" order="descending" /> </xsl:apply-templates> </body> </html> </xsl:template> <xsl:template match="item"> <div> <xsl:attribute name="id"> <xsl:text>#</xsl:text> <xsl:value-of select="guid"/> </xsl:attribute> <xsl:attribute name="class"> <xsl:text>article</xsl:text> </xsl:attribute> <h2> <xsl:value-of select="title"/> </h2> <p> <xsl:attribute name="lang"> <xsl:text>fr</xsl:text> </xsl:attribute> <xsl:value-of select="description"/> </p> </div> </xsl:template> </xsl:stylesheet>
j'ai ma reponse ce code est bon

K20
Eléphant du PHP | 303 Messages

18 nov. 2005, 01:56

BOUUUU :cry:
ça ne fonctionne toujours pas ... J'ai mis le même code que le tient ... :(
http://www.pc-shows.com/rss.php?act=news

K20
Eléphant du PHP | 303 Messages

20 nov. 2005, 18:59

Aucune idée ?

Mammouth du PHP | 19672 Messages

20 nov. 2005, 19:07

Et de quatre : dis, tu as créé une boucle pour balancer des réponses insignifiantes aujourd'hui ?
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

K20
Eléphant du PHP | 303 Messages

20 nov. 2005, 19:14

Non :(
C'est simplement que je suis toujours coincé dans tous mes problèmes et que je demande votre aide :?