PDA

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>

cionci
25-05-2007, 19:25
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';

cionci
25-05-2007, 21:23
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:

cionci
25-05-2007, 21:39
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 :(

cionci
25-05-2007, 21:40
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.