Les archives de FluxBB.fr
Vous n'êtes pas identifié(e).
http://www.punbb.fr/forums/viewtopic.ph … 061#p39061
mmm avec ça ?
Hors ligne
mais par contre je n'ai pas les connaissance pour savoir l'utiliser
je doit le mettre ou ?
dans mon script ou sur un fichier du forum ?
Hors ligne
merci !!!!!!
mais sa marche pas .. les balises html sont toujours visibles.
j'ai installez le mod allowhtml (ca permet d'afficher du html dans les post )
comment je peut faire pour que dans le script j'ai la balise [html] qui entoure tout l'article importé du flux rss ?
edit : faudrait aussi décoder l'utf8 des articles rss en ISO-8859-1 pour le forum ..
rhaaa je me sens ignorant T_T
Dernière modification par renkei (05-02-2009 21:09:54)
Hors ligne
ouep voila
{
$feed = "http://feeds2.feedburner.com/Renkei-IncreaseYourPower"; //adresse du fil rss
$rss = @simplexml_load_file($feed);
if ($rss !== false)
{
$username = $pun_user['username'];
$fid = 13; // id du forum où doit s'insérer le topic
foreach ($rss->channel->item as $item)
{
$now = time();
$subject = $item->title;
$message = parse_message(xhtml_to_bbcode($item->description), 0);
// Create the topic
$db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
$tid = $db->insert_id();
// Create the post ("topic post")
$db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
}
}
}et je test avec les balise html .. mmm ca ne marche pas non plus 
faudrait aussi décoder l'utf8 des articles rss en ISO-8859-1 pour le forum ..
désolé je ne m'y connais pas beaucoup .. c'est vraiment sympa de m'aider 
Dernière modification par renkei (05-02-2009 21:15:57)
Hors ligne
ok donc rien ne marche même le :
utf8_decode($rss);(merci d'ailleurs
)
Dernière modification par renkei (05-02-2009 21:50:28)
Hors ligne
ca vient peut etre du rss .. voila le xml
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:wfw="http://wellformedweb.org/CommentAPI/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
>
<channel>
<title>titre</title>
<atom:link href="url du rss" rel="self" type="application/rss+xml" />
<link>lien du blog</link>
<description>blab bla</description>
<pubDate>date..</pubDate>
<generator>http://wordpress.org/?v=2.7</generator>
<language>en</language>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>1</sy:updateFrequency>
<item>
<title>blabla</title>
<link>url</link>
<comments>commentaire</comments>
<pubDate>date</pubDate>
<dc:creator>auteur</dc:creator>
<description>une petite description</description>
<content:encoded> le contenu </content:encoded>
</item>Dernière modification par renkei (05-02-2009 22:00:05)
Hors ligne
Pour les balises "html". Le but c'est de mettre le message dans la base converti en bbcode je crois.
Donc quand tu crées le message, "parse_message" est de trop (vu que cette fonction permet de passer le bbcode en html... (ouais j'me souvenais plus
) et pour le coup, la tu fais html->bbcode->html)
ce qui donne :
$message = xhtml_to_bbcode($item->description);
Logiquement, tu devrais un message correct au niveau balise, enfin je crois 
Hors ligne
ouaaa merci énormément sa marche parfait !
et aussi autre problème je voudrais récupérer la balise "content" du flux rss mais le problème c'est que elle s'appelle <content:encoded> du coup quand je fait ça $message = xhtml_to_bbcode($item->content:encoded);
ba ca peut pas marcher à cause du ":" ...
car dans <description> il n'y a n'y liens ni images ..
et sinon j'ai resolu le problème de codage du texte sa s'affiche parfait avec les accents et tout
Hors ligne
et op la j'ai réussi ! avec ca :
$data = file_get_contents("http://feeds2.feedburner.com/Renkei-IncreaseYourPower?format=xml");
$data = str_replace("content:encoded>","content>",$data);
$rss = @simplexml_load_string($data);bon ba il reste juste le problème de vérifier si le topic na pas déjà été crée ... parce que la a chaque fois ca re-crée tous les articles sur le forum
Hors ligne
j'ai essayé ça
:
mysql_connect(mot de passe et toussa);
mysql_select_db(le nom dla base);
$titre_deja = mysql_query("SELECT subject FROM for_topics ");
if ($subject != mysql_fetch_array($titre_deja) )Mais bon bien sur sa marche pas ... 
ou sinon comment je peux faire pour juste prendre le dernier article ?
comme ça je lance une première fois le script et âpres je le relance des que j'écris des nouveaux articles
dzl pour le mutli post... :ange:
Dernière modification par renkei (06-02-2009 18:56:11)
Hors ligne
Cool merci ! ou est ce que je peut apprendre des trucs sur le xml ?
et je trouve pas comment filtrer les messages qui on déjà été crée ...
bonne soirée !
Hors ligne
Si tu n'es pas plus exigeant sur l'unicité d'un post que le nom de son sujet, ce bout de code devrait aller (donc remplacer les 7 lignes à partir de $subject) :
$subject = $item->title;
$result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE '.$subject) or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());;
$num_subject = $db->num_rows($result);
if ($num_subject == 0) {
$message = parse_message(xhtml_to_bbcode($item->description), 0);
// Create the topic
$db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
$tid = $db->insert_id();
// Create the post ("topic post")
$db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
}Si je n'ai pas fait d'erreur, ça devrait le faire 
Hors ligne
arf erreur :
Error: Unable to fetch topics subject. ..
et un warning au dessus : Warning: ob_start() [ref.outcontrol]: output handler 'ob_gzhandler' cannot be used twice in /homepages/2/d196531865/htdocs/forum/include/functions.php on line 971
Hors ligne
Ouais si j'oublie de mettre $subject entre guillemet, ça va pas le faire :-/
$result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE "'.$subject.'"') or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());Dernière modification par Lyconide (07-02-2009 01:00:53)
Hors ligne
la ça fait un truc bizarre :
je lance une première fois le script ça crée les topic ok, op justes âpres je le relance pour tester et la il me recopie pas tous les topic mais juste 3 .. Et si je relance encore une fois le script il me re-recopie les 3 même articles, mais pas les autres ...
mmm c'est peut être pas clair.. en gros ya 10 articles dans le rss, au premier lancement les 10 sont recopiés et quand je relance le script il me recopie 3articles sur les 10
Dernière modification par renkei (07-02-2009 02:11:59)
Hors ligne
$result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE "'.$db->escape($subject).'"') or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());Et comme ça ?
(*avait pas pensé au db->escape* enfin j'espère que c'est ca
)
Dernière modification par Lyconide (07-02-2009 10:03:37)
Hors ligne
la ca marche carrément pas
ca recopie tous à chaque fois
Hors ligne
non ca ne marche ca doit être un truc que j'ai mal fait
if (!$pun_user['is_guest'])
{
$data = file_get_contents("http://feeds2.feedburner.com/Renkei-IncreaseYourPower?format=xml");
$data = str_replace("content:encoded>","content>",$data);
$rss = @simplexml_load_string($data);
if ($rss !== false)
{
$username = $pun_user['username'];
$fid = 15; // id du forum ou doit s'inserer le topic
foreach ($rss->channel->item as $item)
{
$now = time();
$subject = $item->title;
$result = $db->query('SELECT id FROM '.$db->prefix.'topics WHERE subject LIKE "'.$db->escape($subject).'"') or error('Unable to fetch topics subject', __FILE__, __LINE__, $db->error());
$num_subject = $result ? $db->num_rows($result) : 0;
if ($num_subject == 0) {
$message = xhtml_to_bbcode($item->content);
$message = utf8_decode($message);
$subject = utf8_decode($subject);
// Create the topic
$db->query('INSERT INTO '.$db->prefix.'topics (poster, subject, posted, last_post, last_poster, forum_id) VALUES(\''.$db->escape($username).'\', \''.$db->escape($subject).'\', '.$now.', '.$now.', \''.$db->escape($username).'\', '.$fid.')') or error('Unable to create topic', __FILE__, __LINE__, $db->error());
$tid = $db->insert_id();
// Create the post ("topic post")
$db->query('INSERT INTO '.$db->prefix.'posts (poster, poster_id, poster_ip, message, posted, topic_id) VALUES(\''.$db->escape($username).'\', '.$pun_user['id'].', \''.get_remote_address().'\', \''.$db->escape($message).'\', '.$now.', '.$tid.')') or error('Unable to create post', __FILE__, __LINE__, $db->error());
}
}
}
}Hors ligne