View Full Version : [PHP] Creare tabella contenente gli ultimi messaggi postati
The Lord of Diplomacy
24-05-2007, 16:19
Salve, vorrei realizzare una semplice tabella contenente gli ultimi messaggi postati su un blog, con il rispettivo autore.
Una cosa del genere: http://images.cjb.net/c2bac.bmp
Qualcuno può darmi una mano? :)
yorkeiser
24-05-2007, 16:27
Beh, sicuramente hai bisogno di un DB sotto, che contenga varie informazioni quali id, titolo e contenuto del messaggio, nome dell'autore e probabilmente altro (penso ad esempio alla data etc). Di solito con php si usa mysql, ma ovviamente nessuno ti vieta i usare un altro DB. Una volta che hai il DB, creare la tabella è abbastanza semplice: fai una query per trovarti le info che vuoi e per ogni riga del resultset ti componi la riga di una tabella HTML (<TR> .... </TR>).
The Lord of Diplomacy
24-05-2007, 16:56
Grazie per la risposta.
Sino al DB ci sono. Dopo non so come fare... non so creare la query giusta.
yorkeiser
24-05-2007, 17:16
La query dipende dalla struttura che hai dato al tuo DB. Nel caso avessi tutto sulla stessa tabella, una possibile query per la tabella da te postata sarebbe:
SELECT TITOLO, AUTORE, RISPOSTE, VISITE FROM NOMETABELLA ORDER BY DATA DESC
Quindi nel tuo php avresti:
$query= "SELECT TITOLO, AUTORE, RISPOSTE, VISITE FROM NOMETABELLA ORDER BY DATA DESC";
$result = mysql_query ($query,$db);
Una volta che hai il resultset, lo usi per comporre le stringhe html che corrispondono alle righe della tabella. Ovvero una cosa del tipo:
<HTML>
<HEAD></HEAD>
<BODY>
<TABLE>
<?php
$i=0; //questa la utilizzi per selezionare solo gli ultimi messaggi e non tutti quelli contenuti nel DB
while ($i<10)
{
echo "<TR>".[valori che hai nel record del resultset]."</TR>";
$i = $i+1;
}
?>
</TABLE>
</BODY>
</HTML>
The Lord of Diplomacy
24-05-2007, 17:18
Ottimo, inizio a capire, grazie!
Faccio qualche prova e ti faccio sapere ;)
The Lord of Diplomacy
24-05-2007, 17:53
Cancellato.
The Lord of Diplomacy
24-05-2007, 18:11
$sql = 'SELECT post_title , post_date_gmt FROM `wp_posts` '
. ' LIMIT 0, 30 ';
$sql = 'SELECT display_name FROM `wp_users` LIMIT 0, 30 ';
Ecco i due codici php.
The Lord of Diplomacy
25-05-2007, 18:37
Che ne dite, può andare?
<?php
// connessione
mysql_connect(host,user,password) ;
mysql_select_db(database);
// ottiene i post
$query = mysql_query('SELECT post_title,post_author, post_date_gmt FROM `wp_posts` LIMIT 0, 30');
?>
<table border="1">
<tr><td><b>Post</b></td><td><b>Autore</b></td></tr>
<?php
while($row=mysql_fetch_array($query))
{
?>
<?php
// ottiene il nome dell'autore
$query = mysql_query('SELECT display_name FROM `wp_users` WHERE ID='.$row['post_author'].' LIMIT 1');
$author=mysql_fetch_array();
?>
<tr><td><?php echo $row['post_title'] ?></td><td><?php echo $author['display_name'] ?></td></tr>
<?php
}
?>
</table>
Ordina anche per data...altrimenti prendi sempre i soliti messaggi...
In fondo alla select: ORDER BY post_date_gmt DESC
Comunque farei così per evitare n-mila query:
SELECT post_title, post_date_gmt, display_name
FROM wp_posts JOIN wp_users ON wp_posts.post_author = wp_users.ID
ORDER BY post_date_gmt DESC
LIMIT 0, 30
The Lord of Diplomacy
25-05-2007, 21:12
Grazie mille, qualcuno potrebbe aiutarmi con il codice? :)
Ecco il codice php ricavato dalla query.
$sql = 'SELECT post_title, post_date_gmt, display_name'
. ' FROM wp_posts JOIN wp_users ON wp_posts.post_author = wp_users.ID'
. ' ORDER BY post_date_gmt DESC'
. ' LIMIT 0, 30';
Basta modificare questo:
<?php
// ottiene il nome dell'autore
$query = mysql_query('SELECT display_name FROM `wp_users` WHERE ID='.$row['post_author'].' LIMIT 1');
$author=mysql_fetch_array();
?>
<tr><td><?php echo $row['post_title'] ?></td><td><?php echo $author['display_name'] ?></td></tr>
in questo:
<tr><td><?= $row['post_title'] ?></td><td><?= $row['display_name'] ?></td></tr>
The Lord of Diplomacy
25-05-2007, 21:36
Ciao cionci, ti ringrazio nuovamente, non capisco però perchè mi viene fuori una schermata bianca :muro:
Guarda il sorgente della pagina dal browser e vedi cosa ti viene fuori...
The Lord of Diplomacy
25-05-2007, 21:39
Il sorgente è completamente vuoto :(
Non c'è niente ? Nemmeno:
<table border="1">
<tr><td><b>Post</b></td><td><b>Autore</b></td></tr>
The Lord of Diplomacy
25-05-2007, 21:45
zero assoluto, se vuoi ti passo il link in pvt.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.