Come estrapolare dal database gli ultimi post pubblicati nel forum mybb.
In questo articolo ti spiegherò come estrapolare dal database le ultime discussioni o gli ultimi post da un forum mybb.
Questo script potrà essere inserito nelle pagine con estensione .php, potrai inserirlo nella home page, nel template di WordPress, ecc…
Ti spiegherò come estrapolare il titolo, l’intero messaggio e l’autore del topic/post, ed anche come tagliare il titolo o post ad un certo numero di caratteri, nel caso ti potesse tornare utile.
Qual è la tabella del database in cui vengono salvati i dati?
Aprendo il database del forum mybb possiamo trovare tutte i dati relativi ai nostri topic.
Ma qual è la tabella in cui vengono salvati i titoli, i messaggi, gli orari e le date di pubblicazione, ecc… ?
La tabella si chiama mybb_posts ed è divisa in campi (ti spiego quelli più importanti, nonchè quelli che utilizzerò per i seguenti script):
- pid : corrisponde ad un numero, è la keyword primaria e si auto-incrementa. Potresti utilizzare questo campo per estrapolare in ordine decrescente gli ultimi messaggi pubblicati.
- tid : corrisponde ad un numero ed è il numero del thread, ovvero dell’intera discussione (topic).
- replyto : anche questo è un numero. Se è impostato a 0 (zero), vuol dire che quello è il post principale di un thread, mentre se è diverso da 0 (zero), il dato numero corrisponde all’id del thread, ovvero sarà uguale a tid.
- fid : è il numero id della sezione (chiamata anche forum) in cui è inserito il topic.
- subject : è il titolo del post/topic. Nel caso fosse la “risposta” ad un topic, inizierebbe con “RE: ” e continuerebbe con il titolo della discussione.
- icon
- uid
- username : è il nickname dell’utente che ha inviato il post o topic.
- dateline
- message : è il contenuto del post.
- ipaddress : è l’indirizzo ip dell’autore del post.
- longipaddress
- includesig
- smilieoff
- edituid
- edittime
- visible
- posthash
Estrapoliamo le ultime discussioni insieme ai titoli
Con il seguente script potrai estrapolare gli ultimi thread (quindi no singoli post) pubblicati nel forum.
[Se vuoi estrapolare gli ultimi post, guarda il prossimo punto]
Per prima cosa dovrai collegarti al database, quindi cambia username con il nickname con il quale ti colleghi, password inserisci la password, nome_database sostituiscilo con il nome del database.
'.$records['subject'].'
';
echo $records['message'];
echo '
';
}
?>
Ti spiego la variabile $result:
$result = mysql_query("SELECT *
FROM mybb_posts
ORDER BY tid DESC
LIMIT 5" );
FROM mybb_posts : selezioni la tabella da cui vuoi estrapolare i dati.
ORDER BY tid DESC : metti in ordine decrescente le discussioni (tid).
LIMIT 5 : è il numero di discussioni che vuoi estrapolare.
Andiamo all’echo:
echo ''.$records['subject'].'
';
-Al posto di nomesito.com inserisci l’url del tuo sito.
–showthread.php?tid= : è la parte dell’url standard. N.B. se hai abilitato il motore per gli URL amichevoli, sostituisci showthread.php?tid= in thread- (compreso il trattino) ed inserisci l’estensione .html (compreso il punto) così => /showthread.php?tid=’.$records[‘tid’].'”> .
–$records[‘subject’] : estrapola il titolo
–$records[‘message’] : estrapola il messaggio
Estrapoliamo la lista degli ultimi post
'.$records['subject'].'
';
echo $records['message'];
echo '
';
}
?>
Con questo script potrai avere la lista degli ultimi post (singoli messaggi) che sono stai inviati in una discussione.
Il link sarà del tipo => http://nomesito.com/showthread.php?tid=5&pid=41#pid41
Dove tid è l’id della discussione e pid è l’id del post (nel nostro caso, dell’ultimo post).
Come mostrare solo una parte della discussione, tagliandola dopo un tot di caratteri?
➡ [PHP Script] Come tagliare una stringa, troncando la parola
Come puoi vedere dall’articolo che ti ho linkato, per tagliare un testo possiamo utilizzare la funzione substr_replace.
Per fare un esempio di come tagliare una stringa dopo un certo numero di caratteri, prendiamo il primo script che ti ho spiegato in questo articolo, ovvero “Estrapoliamo le ultime discussioni insieme ai titoli”.
'.$records['subject'].'
';
echo $post_cut;
echo '
';
}
?>
Con la variabile $post ho estrapolato tutto il testo contenuto all’interno del messaggio.
Con la variabile $post_cut ho richiamato il contenuto della variabile $post e l’ho tagliata dopo 40 caratteri.
Con echo $post_cut; ho stampato a video la discussione tagliata.
Come diminuire la lunghezza del titolo?
Nel precedente punto ti ho spiegato come diminuire e quindi tagliare il testo del messaggio estrapolato, adesso ti spiego come tagliare dopo un tot di caratteri (stroncando così anche le parole) il titolo della discussione che estrapoliamo.
Prendiamo come esempio sempre il primo script:
'.$title_cut.'
';
echo $records['message'];
echo '
';
}
?>
Con la variabile $title ho estrapolato il titolo del messaggio.
Con la variabile $title_cut ho richiamato il titolo della variabile $title e l’ho tagliata dopo 40 caratteri.
Con echo $title_cut ho stampato a video il titolo tagliato.
Estrapolare ultima discussione tagliando sia la lunghezza del titolo che quella del messaggio
Come già mostrato nei precedenti due punti, prendiamo il caso del seguente script:
'.$title_cut.'
';
echo $post_cut;
echo '
';
}
?>