Pagina 1 di 9

Statistiche Forum sul Sito

Inviato: 19/04/2009, 19:21
da Carlo
Statistiche Forum sul Sito
Questa guida vi spiega come inserire statistiche della vostra board sul vostro sito, avendo una pagina .php.

Con questa guida potete visualizzare nel sito:
  • Numero di post totali
  • Numero di utenti totali
  • Ultimo utente registrato
  • Ultimi 10 topic
  • Primo post dell'ultima discussione di un determinato forum
  • Ultimi 5 utenti
  • Top 5 poster
Prima di tutto dobbiamo incluedere i file necessari, e inserire uno script per la connessione al database:

Codice: Seleziona tutto

<?php
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'config.' . $phpEx);

    $connessione = mysql_connect("$dbhost", "$dbuser", "$dbpasswd");
    if (!$connessione) {
        echo "Impossibile connettersi al DB: " . mysql_error();
        exit;
    }
    if (!mysql_select_db("$dbname")) {
        echo "Impossibile selezioanare database: " . mysql_error();
        exit;
    }
?>
con questo codice si presuppone che abbiate il sito nella stessa cartella del forum. Se invece avete il forum nella cartella forum rispetto al sito, modificate questa stringa:

Codice: Seleziona tutto

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';  
in:

Codice: Seleziona tutto

$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './forum/';  
Visualizzare il numero totale di post

Codice: Seleziona tutto

<?php
    // post totali
    $query_totalepost = "SELECT * FROM ".$table_prefix."posts";
    $totalepost = mysql_query($query_totalepost);
    if (!$totalepost) {
        echo "Fallimento nell'esecuzione della query ($query_totalepost) dal DB: " . mysql_error();
        exit;
    }
    $righe_totalepost = mysql_num_rows($totalepost);
?>
Per stampare il numero totale di post, dobbiamo usare la variabile $righe_totalepost, esempio:

Codice: Seleziona tutto

echo "Totale messaggi:".$righe_totalepost; 
Visualizzare utenti totali

Codice: Seleziona tutto

    // utenti totali
    $sql_totaleutenti = "SELECT username FROM ".$table_prefix."users WHERE user_type = '0' OR user_type = '3'";
    $query_totaleutenti = mysql_query($sql_totaleutenti);
    if (!$query_totaleutenti) {
        echo "Fallimento nell'esecuzione della query ($query_totaleutenti) dal DB: " . mysql_error();
        exit;
    }
    $righe_totaleutenti = mysql_num_rows($query_totaleutenti);
    mysql_free_result($query_totaleutenti);  
Per stampare il numero totale di utenti, dobbiamo usare la variabile $righe_totaleutenti, esempio:

Codice: Seleziona tutto

echo "Totale utenti:".$righe_totaleutenti; 
Visualizzare username ultimo utente

Codice: Seleziona tutto

    // ultimo utente
    $sql_ultimoutente = "SELECT username, user_colour
            FROM ".$table_prefix."users WHERE user_type = '0' OR user_type = '3'
            ORDER BY user_id DESC LIMIT 0,1";
    $query_ultimoutente = mysql_query($sql_ultimoutente);
    if (!$query_ultimoutente) {
        echo "Fallimento nell'esecuzione della query ($query_ultimoutente) dal DB: " . mysql_error();
        exit;
    }
    while ($dati_ultimoutente = mysql_fetch_assoc($query_ultimoutente)) {
        echo "Ultimo iscritto: <a href='./memberlist.php?mode=viewprofile&un=$dati_ultimoutente[username]' target='_top'><font color='$dati_ultimoutente[user_colour]'><b>$dati_ultimoutente[username]</b></font></a>";
    }
    mysql_free_result($query_ultimoutente); 
Questo codice stamperà a schermo Ultimo iscritto: nome_utente, e il nome utente sarà del colore impostato nel forum.

Visualizzare ultimi 10 topic

Codice: Seleziona tutto

    // ultimi 10 topic
    $sql_ultimitopic = "SELECT topic_id,forum_id,topic_last_post_id,topic_last_post_time,
            topic_title,topic_last_poster_name,topic_last_poster_colour
            FROM ".$table_prefix."topics
            ORDER BY topic_last_post_time DESC LIMIT 0,10";
    $query_ultimitopic = mysql_query($sql_ultimitopic);
    if (!$query_ultimitopic) {
        echo "Fallimento nell'esecuzione della query ($query_ultimitopic) dal DB: " . mysql_error();
        exit;
    }
    while ($dati_ultimitopic = mysql_fetch_assoc($query_ultimitopic)) {
        $str_array3 = array('à', 'è', 'é', 'ì', 'ò', 'ù');
        $str_array4 = array('&agrave;', '&egrave;', '&iacute;', '&igrave;', '&ograve;', '&ugrave;');
        $dati_ultimitopic['topic_title'] = str_replace($str_array3, $str_array4, $dati_ultimitopic['topic_title']);
        
        echo "&bull; &nbsp;<a href='./viewtopic.php?f=$dati_ultimitopic[forum_id]&t=$dati_ultimitopic[topic_id]#p$dati_ultimitopic[topic_last_post_id]'>$dati_ultimitopic[topic_title]</a><br>
      Inviato da <a href='./memberlist.php?mode=viewprofile&un=$dati_ultimitopic[topic_last_poster_name]'><font color='$dati_ultimitopic[topic_last_poster_colour]'><b>$dati_ultimitopic[topic_last_poster_name]</b></font></a>, il " . date("j/n/y", $dati_ultimitopic[topic_last_post_time]) . "<br />";
    }
    mysql_free_result($query_ultimitopic); 
Primo post dell'ultima discussione di un determinato forum - Attenzione, questo script "legge" solo i BBCode "grassetto", "corsivo" e "sottolineato" e queste lettere accentate à, è, ì, ò, ù.

Codice: Seleziona tutto

    // primo post dell'ultima discussione di un determinato forum
    $f1 = 1; // id del forum
    $sql_ppud1 = "SELECT topic_first_post_id FROM ".$table_prefix."topics WHERE forum_id = '".$f1."' ORDER BY topic_time DESC LIMIT 0,1";
    $query_ppud1 = mysql_query($sql_ppud1);
    $row_ppud1 = mysql_fetch_assoc($query_ppud1);
    
    $sql_pppud1 = "SELECT post_subject, post_text, bbcode_bitfield, bbcode_uid FROM ".$table_prefix."posts WHERE post_id = '".$row_ppud1['topic_first_post_id']."'";
    $query_pppud1 = mysql_query($sql_pppud1);
    $row_pppud1 = mysql_fetch_assoc($query_pppud1);
    
    if (!$query_ppud1 || !$query_pppud1) {
        echo "Fallimento nell'esecuzione della query dal DB: " . mysql_error();
        exit;
    }

    $str_array1 = array('[b]', '[/b]', '[i]', '[/i]', '[u]', '[/u]');
    $str_array2 = array('<b>', '</b>', '<i>', '</i>', '<u>', '</u>');

    $str_array3 = array('à', 'è', 'é', 'ì', 'ò', 'ù');
    $str_array4 = array('&agrave;', '&egrave;', '&iacute;', '&igrave;', '&ograve;', '&ugrave;');
    
    $post_pppud1 = str_replace(":".$row_pppud1['bbcode_uid'], "", $row_pppud1['post_text']);
    $post_pppud1 = str_replace("\n", "<br />", $post_pppud1);
    $post_pppud1 = str_replace($str_array1, $str_array2, $post_pppud1);
    $post_pppud1 = str_replace($str_array3, $str_array4, $post_pppud1);

    $row_pppud1['post_subject'] = str_replace($str_array3, $str_array4, $row_pppud1['post_subject']);

    echo "<b>".$row_pppud1['post_subject']."</b><br />".$post_pppud1."<br />";
    
    mysql_free_result($query_pppud1);
    mysql_free_result($query_ppud1); 
Ultimi 5 utenti

Codice: Seleziona tutto

    // ultimi 5 utenti
    $sql_ultimiutenti = "SELECT username, user_colour
            FROM ".$table_prefix."users WHERE user_type = '0' OR user_type = '3'
            ORDER BY user_id DESC LIMIT 0,5";
    $query_ultimiutenti = mysql_query($sql_ultimiutenti);
    if (!$query_ultimiutenti) {
        echo "Fallimento nell'esecuzione della query ($query_ultimiutenti) dal DB: " . mysql_error();
        exit;
    }
    echo "Ultimi 5 iscritti:<br />";
    while ($dati_ultimiutenti = mysql_fetch_assoc($query_ultimiutenti)) {
        echo "&bull; <a href='./memberlist.php?mode=viewprofile&un=$dati_ultimiutenti[username]' target='_top'><font color='$dati_ultimiutenti[user_colour]'><b>$dati_ultimiutenti[username]</b></font></a><br />";
    }
    mysql_free_result($query_ultimiutenti); 
Top 5 poster

Codice: Seleziona tutto

   // top 5 poster
    $sql_topposter = "SELECT username, user_colour, user_posts
            FROM ".$table_prefix."users WHERE user_type = '0' OR user_type = '3'
            ORDER BY user_posts DESC LIMIT 0,5";
    $query_topposter = mysql_query($sql_topposter);
    if (!$query_topposter) {
        echo "Fallimento nell'esecuzione della query ($query_topposter) dal DB: " . mysql_error();
        exit;
    }
    echo "Top 5 Poster:<br />";
    while ($dati_topposter = mysql_fetch_assoc($query_topposter)) {
        echo "&bull; <a href='./memberlist.php?mode=viewprofile&un=$dati_topposter[username]' target='_top'><font color='$dati_topposter[user_colour]'><b>$dati_topposter[username]</b> [<u>$dati_topposter[user_posts]</u>]</font></a><br />";
    }
    mysql_free_result($query_topposter); 

Re: Statistiche Forum sul Sito

Inviato: 26/04/2009, 11:29
da sergiosk
Eccomi qua, ciao, come ti dicevo ho inserito in una pagina php il codice che ti scrivo qui sotto ma la pagina è bianca vuota, non si vede nulla, dove sbaglio? Sicuramente il codice è compilato male ma dove? Grazie se mi puoi aiutare ciao Sergio. Ecco il codice come io lo ho inserito per vedere ultimi post:

Codice: Seleziona tutto

<?php
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './public/phpbb3/';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'config.' . $phpEx);

    $connessione = mysql_connect("$11111111", "$11111111", "$1111111");
    if (!$connessione) {
        echo "Impossibile connettersi al DB: " . mysql_error();
        exit;
    }
    if (!mysql_select_db("$1111111")) {
        echo "Impossibile selezioanare database: " . mysql_error();
        exit;
    }
?>

<?php
 // ultimi 10 topic
    $query_ultimitopic = "SELECT topic_id,forum_id,topic_last_post_id,topic_last_post_time,
            topic_title,topic_last_poster_name,topic_last_poster_colour
            FROM ".$table_prefix."topics
            ORDER BY topic_last_post_time DESC LIMIT 0,10";
    $ultimitopic = mysql_query($query_ultimitopic);
    if (!$ultimitopic) {
        echo "Fallimento nell'esecuzione della query ($query_ultimitopic) dal DB: " . mysql_error();
        exit;
    }
    while ($dati_ultimitopic = mysql_fetch_assoc($ultimitopic)) {
        echo "&bull; &nbsp;<a href='./viewtopic.php?f=$dati_ultimitopic[forum_id]&t=$dati_ultimitopic[topic_id]#p$dati_ultimitopic[topic_last_post_id]'>$dati_ultimitopic[topic_title]</a><br>
      Inviato da <a href='./memberlist.php?mode=viewprofile&un=$dati_ultimitopic[topic_last_poster_name]'><font color='$dati_ultimitopic[topic_last_poster_colour]'><b>$dati_ultimitopic[topic_last_poster_name]</b></font></a>, il " . date("j/n/y", $dati_ultimitopic[topic_last_post_time]) . "<br />";
    }
    mysql_free_result($ultimitopic); 

?>

Re: Statistiche Forum sul Sito

Inviato: 26/04/2009, 11:30
da Carlo
Scusa usa il BBCode CODE altrimenti non si capisce nulla.

Re: Statistiche Forum sul Sito

Inviato: 26/04/2009, 11:49
da sergiosk
errore messaggio doppio

Re: Statistiche Forum sul Sito

Inviato: 26/04/2009, 11:50
da Carlo
Scusa ma che stai facendo?? :shock:
Stai ripetendo sempre gli stessi post?? :lol:

Re: Statistiche Forum sul Sito

Inviato: 26/04/2009, 11:57
da sergiosk
no scusa tu ma ho provato inserire usando bbcode ma mi da lo stesso risultato scusa cancellane uno grazie.
carlino1994 ha scritto:Scusa ma che stai facendo?? :shock:
Stai ripetendo sempre gli stessi post?? :lol:

Re: Statistiche Forum sul Sito

Inviato: 26/04/2009, 12:01
da Carlo
Beh basta che modifichi il tuo primo post mettendoci prima del codice [ code] e dopo [ code].

Re: Statistiche Forum sul Sito

Inviato: 05/05/2009, 14:29
da kikko088
ciao, vorrei sapere se c'è la possibilità di vedere anche le prime due tre righe del topic, per ora ho inserito il codice e funziona tutto alla grande...però non so come aggiungere due o tre righe del messaggio....

Re: Statistiche Forum sul Sito

Inviato: 05/05/2009, 19:55
da Carlo
Non ho capito bene ciò che vorresti fare, potresti spiegarti meglio??

Re: Statistiche Forum sul Sito

Inviato: 06/05/2009, 11:20
da kikko088
ciao con questo codice io posso vedere nella prima pagina del mio sito il titolo degli ultimi topic inseriti...io vorrei vedere oltre al titolo anche l'inizio del topic....


kikko088