phpBB3: ostatnie X tematów z forum

05 lipca 2008

Realizując jakiś czas temu jedno ze zleceń musiałem:

  • zainstalować forum phpBB3
  • wyświetlić na głównej stronie kilka ostatnich tematów

Pierwszego opisywać nie zamierzam :P Natomiast z drugim był nieoczekiwany problem. Tzn. oczywiście nie ma nic trudnego w wyciągnięciu paru informacji z bazy danych. Tylko mi się nie chciało analizować tabel, chciałem szybko znaleźć coś w google.pl, wstawić na stronę i zapomnieć.

Niestety okazało się, że nie będzie tak łatwo. Rozwiązania dotyczyły albo phpBB2 albo nie działały albo były niewyobrażalnie przerośnięte.

W końcu coś znalazłem... Poprawiłem kod, oto on:

PHP:
  1. <?
  2. // Prefiks tabel w naszej bazie danych.
  3. $prefiks = 'forum_';
  4.  
  5. // Liczba okresla ile ostatnich tematow ma zostac wyciagnietych z bazy danych.
  6. $ilosc_tematow = 6;
  7.  
  8. // Dlugosc tematu. Jezeli ta liczba zostanie przekroczona to nazwa tematu zostanie skrocona aby nie "zepsuc" nam HTML'a.
  9. $dlugosc = 25;
  10.  
  11.  
  12. extract(mysql_fetch_array(mysql_query('SELECT config_value FROM '.$prefiks.'config WHERE config_name = \'server_name\' LIMIT 1')));
  13.  
  14. $sql=mysql_query('SELECT * FROM '.$prefiks.'topics WHERE topic_approved = 1 ORDER BY topic_last_post_time DESC LIMIT 0, '.$ilosc_tematow);
  15.  
  16. while ($row = mysql_fetch_array($sql)) {
  17.     extract($row);
  18.  
  19.     $date = date('d-m-Y H:i:s', $topic_last_post_time);
  20.     $nazwa_forum = mysql_fetch_row(mysql_query('SELECT forum_name FROM '.$prefiks.'forums WHERE forum_id = '.$forum_id));
  21.  
  22.     if(strlen($topic_title)> $dlugosc)
  23.         $topic_title = mb_substr($topic_title, 0, $dlugosc, 'utf-8') . '...';
  24.            
  25.     echo '<a href="http://'.$config_value.'/forum/viewforum.php?f='.$forum_id.'" target="_blank">'.$nazwa_forum[0].':</a> <a href="http://'.$config_value.'/forum/viewtopic.php?f='.$forum_id.'&t='.$topic_id.'&p='.$topic_last_post_id.'#p'.$topic_last_post_id.'" target="_blank">'.$topic_title.'</a> wyświetleń: '.$topic_views.', odpowiedzi: '.$topic_replies.', autor: '.$topic_first_poster_name.', ostatnia odpowiedź: '.$topic_last_poster_name.' '.$date.'<br />';
  26. }
  27. ?>

Kod można byłoby jeszcze poprawić (nie podoba mi się to extract() ) ale już mi się nie chciało :P Używając tego rozwiązania pamiętaj aby zmodyfikować kod HTML, dostosować go do własnych potrzeb. Ja potrzebowałem wyświetlić tylko nazwę tematu w postaci linku i autora ostatniej odpowiedzi. Powyżej dałem więcej możliwości aby każdy mógł sam sobie wybrać co chce wyświetlić.

Oczywiście aby kod zadziałał, wcześniej musimy połączyć się z bazą danych :)

Zaznaczam, że kod nie jest mój. Znalazłem go gdzieś w Internecie, nie był podpisany. Wprowadziłem pewne zmiany, poprawiłem, przetłumaczyłem komentarze i nazwy kilku zmiennych.

Dodaj komentarz

9 odpowiedzi dla tego wpisu

  1. HSCharles napisał:

    I have a flash website
    i’m looking for the script who shows google ads on flash.
    where can i get it?

  2. MariuszT napisał:

    The Google crawler can’t read the content of the Flash page. I read that Google and Adobe are working to resolve this problem, but I don’t know what they’ve already done. You could put JavaScript in Flash but no ads will appear.

  3. Gloo napisał:

    Ratujesz życie :D

  4. ox napisał:

    gdzie wpisac dane swojego forum w ten kod?

  5. MariuszT napisał:

    Jakie dane masz na myśli? Połączeniem z bazą danych musisz się zająć sam, przed kodem.

  6. ox napisał:

    host, uzytkownika, haslo bazy itd…przed kodem tzn? nie rozumiem :) nie jestem oblatant w php i prosze jasniej ;)

  7. ox napisał:

    *oblatany

  8. MariuszT napisał:

    Kolego, jaśniej się nie da. Nie oczekuj ode mnie gotowca. Musisz połączyć się z bazą danych ale nie wiem jak u Ciebie wygląda komunikacja z bazą więc nie mogę Ci bardziej pomóc.

  9. Amas napisał:

    Dzięki ogromne, kod się przydał :)

Odpowiedz



Podobne wpisy: