Auteur Sujet: Afficher les derniers sujets [Last Post] dans un autre site - Page séparée  (Lu 14103 fois)

0 Membres et 1 Invité sur ce sujet

Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Bonjour, besoin d'aide en PHP  :g186:
J'aimerais afficher les 10 ou 20 derniers Topics dans mes autres sites ou forums

J'ai donc 3 forums SMF online maintenant ...

Voici ce que j'avais pour mon ancien forum - créé par SKY - http://www.viaphp.net/ :
>> LAST POST <<

Je ne sais pas adapter ce vieux code aux forums SMF ... Je n'ai pas trouvé de mods pour ...
Si quelqu'un peut m'aider ou renseigner... Merci

Le code: [ L'ancien pour OXYGEN] - Besoin de le transformer pour SMF  :tchao:

<title>TOP 99 POSTS Forum 3000fr.COM</title>
<base target="_blank">
<table border="0" width="100%" align="center" height="0%">
<tr><td width="97" style="border-width:0; border-color:rgb(0,0,49); border-style:none;" height="419">&nbsp;</td><td width="772" style="border-width:0; border-color:rgb(0,0,49); border-style:none;" height="419">
<p align="left"><font size="4" color="#000031"><b>Les 99 derniers Topics du Forum 3000fr </b></font><font size="2" color="#000031"><b><br></b></font><font size="2"><br><?php
$host11 
= &#39;localhost&#39;;
$user11 = &#39;********&#39;;
$pass11 = &#39;********&#39;;
$db11 = &#39;*******&#39;;
$link11 mysql_connect ($host11,$user11,$pass11) or die (&#39;Erreur : &#39;.mysql_error());
mysql_select_db($db11) or die (&#39;Erreur cd :&#39;.mysql_error());

$select "SELECT * FROM o3_threads t LEFT JOIN o3_forums f ON t.fid=f.fid WHERE f.fid IN (3, 8, 37, 10, 19, 7, 50, 33, 2, 16, 98, 86, 4, 50, 12, 35, 43, 17, 50, 41, 4, 102, 100, 107) AND status=&#39;yes&#39; ORDER BY t.lastpost DESC LIMIT 99";
$result mysql_query($select)  or die (&#39;Erreur : &#39;.mysql_error() );
while($row mysql_fetch_array($result)) {

$pseudo $row[author];
$texte stripslashes($row[subject]);
$tid $row[tid];
$pid $row[pid];
/*
$test_chr=strlen($texte);
if($test_chr>85){
$texte = substr($texte,0,85);
}
*/
echo &#39;De &#39;.$pseudo.&#39; : <a href="https://www.3000fr.com/forum/viewthread.php?goto=lastpost&tid=&#39;.$tid.&#39;#bottom" title="&#39;.$texte.&#39;" target="_blank">&#39;.$texte.&#39;</a><br>&#39;;
}
?>
&nbsp;</font></td><td width="100" style="border-width:0; border-color:rgb(0,0,49); border-style:none;" height="419"></td></tr></table>
<TABLE width="100%" align=center border="1" cellspacing="0" bordercolordark="white" bordercolorlight="black">
<TR>
<TD class="navtd" style="border-width:0; border-color:black; border-style:none;">
</TD></TR>
</TBODY></TABLE><p align="center">

Voila, donc j'espère que c'est possible  ;)

Lien intéressant peut-être pour créer : https://www.3000fr.com/index.php?action=recent

Ou aussi:  https://www.3000fr.com/index.php?type=rss;action=.xml

Peut-être dans :  /sources/new.php

Merci d'avance, cordialement

 :)



Hors ligne Malouk

  • Jr. Member
  • **
  • Localisation:
    Belgium
  • Messages: 14
    • BlogTIC
Salut,

C'est faisable. Et le plus simple serait de se baser sur le flux xml qui fournit les url déjà rewritée.
Maintenant est-ce que tu as php 5 chez ton hébergeur ? Il faut simplexml pour gérer ça directement depuis php, mais cette fonction n'est disponible qu'avec php5

Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Salut - merci pour l'info - Oui, j'ai le PHP 5

PHP Version 5.3.2 = Version de ce jour

Mais là... je but ... comprends rien  :g186: :g186: :g186:

Lol  :lol:

Hors ligne Malouk

  • Jr. Member
  • **
  • Localisation:
    Belgium
  • Messages: 14
    • BlogTIC
Voilà un exemple :

<?php
$forum_rss 
'https://www.3000fr.com/index.php?type=rss;action=.xml;sa=news;limit=10';
$nb_sujet 10;

$html '';
$xml = @simplexml_load_file(''.$forum_rss.'');
$i=1;
if (
$xml)
{

foreach ($xml->channel->item as $sujet
{
$html .= "<li><a href='".$sujet->link."'>".$sujet->title."</a></li>"
if($i >= $nb_sujet) break;
$i++;
}
}
else
{
$html .= "<li>Forum en maintenance</li>";
}
echo 
"<ul>";
echo 
$html;
echo 
"</ul>";
?>


Après en fonction de l'encodage de la page dans laquelle le script sera inséré, il faudra peut-être faire quelques modifications.

Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Salut ... Super - j'ai testé dans une page de mon ancien forum ... celui qui est en archive

https://www.3000fr.com/99-last-posts-new-forum-3000fr.php

Juste un problème ... les accents e autres sont pas corrects ...

T'as une idée ?

ah et comment l'incorporer dans le forum, qu'il y ai le haut du forum et le bas ... idem que dans le vieux
Faisable ?

 :tchao:

Hors ligne Malouk

  • Jr. Member
  • **
  • Localisation:
    Belgium
  • Messages: 14
    • BlogTIC
C'est normal  les accents, c'est du à l'encodage.

Et sinon voilà une version qui fonctionnera que la page soit en iso ou en utf8

<?php
$forum_rss 
'https://www.3000fr.com/index.php?type=rss;action=.xml;sa=news;limit=10';
$nb_sujet 10;

function 
charset_decode_utf_8 ($string
{
    if (! 
preg_match("/[\200-\237]/"$string) and ! preg_match("/[\241-\377]/"$string))
        return 
$string;

    
// decode three byte unicode characters
    
$string preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e",       
    
"'&#38;#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'",   
    
$string);

    
// decode two byte unicode characters
    
$string preg_replace("/([\300-\337])([\200-\277])/e",
    
"'&#38;#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'",
    
$string);

    return 
$string;
}

function 
fixEncoding($in_str)
{
  
$cur_encoding mb_detect_encoding($in_str) ;
  if(
$cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8"))
return charset_decode_utf_8($in_str);
  else
    return 
$in_str;
}

$html '';
$xml = @simplexml_load_file(''.$forum_rss.'');
$i=1;
if (
$xml)
{

foreach ($xml->channel->item as $sujet
{
$html .= "<li><a href='".$sujet->link."'>".fixEncoding($sujet->title)."</a></li>"
if($i >= $nb_sujet) break;
$i++;
}
}
else
{
$html .= "<li>Forum en maintenance</li>";
}
echo 
"<ul>";
echo 
$html;
echo 
"</ul>";
?>


Pour ce qui est de l'intégrer au forum, je ne sais pas si smf permet de créer des pages intégrées au forum.



Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Oh ok, merci je vais testé tout ça ....j'ai aussi mis tantra PH

Ici: http://tantra-fr.3000fr.com/  idem pour accents ... vais tenter de réparer avec tes exemples

Merci pour l'aide ...  vais bricoler encore   :gck:

Hors ligne Malouk

  • Jr. Member
  • **
  • Localisation:
    Belgium
  • Messages: 14
    • BlogTIC
J'ai édité mon message précédent avec une version qui vérifie l'encodage et qui converti si nécessaire. Ca sera plus facile à utiliser ;)

Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Arf super ... t'as créé toi ... lol si je savais faire ça ...  :mad:

bon vais tester  .... :g186:

Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Re bon j'ai testé dans les 2 sites:

https://www.3000fr.com/99-last-posts-new-forum-3000fr.php

http://tantra-fr.3000fr.com/


les 2 ont des erreurs d'accents différentes maintenant

Si tu as encore 5 minutes ...  ( Pas urgent bien sur )  :g201b:

Hors ligne Malouk

  • Jr. Member
  • **
  • Localisation:
    Belgium
  • Messages: 14
    • BlogTIC
Essaie ceci :

<?php
$forum_rss 
'https://www.3000fr.com/index.php?type=rss;action=.xml;sa=news;limit=10';
$nb_sujet 10;

function 
charset_decode_utf_8 ($string
{
    if (! 
preg_match("/[\200-\237]/"$string) and ! preg_match("/[\241-\377]/"$string))
        return 
$string;

    
// decode three byte unicode characters
    
$string preg_replace("/([\340-\357])([\200-\277])([\200-\277])/e",       
    
"'&#38;#'.((ord('\\1')-224)*4096 + (ord('\\2')-128)*64 + (ord('\\3')-128)).';'",   
    
$string);

    
// decode two byte unicode characters
    
$string preg_replace("/([\300-\337])([\200-\277])/e",
    
"'&#38;#'.((ord('\\1')-192)*64+(ord('\\2')-128)).';'",
    
$string);

    return 
$string;
}

function 
fixEncoding($in_str)
{
  
$cur_encoding mb_detect_encoding($in_str) ;
  if(
$cur_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8"))
return charset_decode_utf_8($in_str);
  else
    return 
$in_str;
}

$html '';
$xml = @simplexml_load_file(''.$forum_rss.'');
$i=1;
if (
$xml)
{

foreach ($xml->channel->item as $sujet
{
$html .= "<li><a href='".$sujet->link."'>".html_entity_decode(fixEncoding($sujet->title))."</a></li>\n"
if($i >= $nb_sujet) break;
$i++;
}
}
else
{
$html .= "<li>Forum en maintenance</li>";
}
echo 
"<ul>";
echo 
$html;
echo 
"</ul>";
?>


Hors ligne Adm 3000fr

  • Administrator
  • *****
  • Localisation:
    Doubs [25]
  • Messages: 1297
  • · Admin ·
    • ☀ Ƒorum 3000fr.com | Multis Ƒorums 3k
Re ... ehbien c'est ok - tout fonctionne ... nickel  :g20:

Merci ... j'aurais jamais trouvé hahaha

Vais encre bricoler quelques pages...et tester pour SMF ... faire le meme genre ...

 :sante: Merci  :g201j:

Tags: