Ho notato in questi giorni che sono stato qui su HTML.it che moltissimi utenti alle prime armi con PHP desiderano creare un sistema di news da inserire nel proprio sito, con l'ormai famoso indice di pagine in fondo alla "Google-like" (passatemi il termine anche probabilmente google è stato l'ultimo ad usarlo ma è quello più conosciuto ).

Questo codice è un semplicISSIMO script per il recupero e la visualizzazione di news in PHP. In futuro se mi viene richiesto posso creare mooooolte piu' cose personalizzabili via variabili (come gli style o impaginazioni diverse), ma per ora, usando un linguaggio abbastanza facile e basilare, volevo dare una risorsa facilmente consultabile e 'copiabile' per i più niubberelli (ricordo l'impresa titanica per la creazione delle mie prime news^^' ).

Prima di tutto serve MySQL e PHP (le versioni non credo siano rilevanti vista la semplicità del codice di entrambi i linguaggi) e ovviamente l'amatissimo PHPMyAdmin.

Ora passiamo alla creazione della tabella nel database:

CODICE PER LA CREAZIONE DELLA TABELLA:
Codice PHP:
CREATE TABLE `news` (
  `
idint(32NOT NULL auto_increment,
  `
datavarchar(32NOT NULL,
  `
titolovarchar(64NOT NULL,
  `
contenutotext NOT NULL,
  
PRIMARY KEY  (`id`)
); 
Creata la tabella creiamo il file per definire la connessione al database:

DB.PHP
Codice PHP:
        //indirizzo su cui gira il server MySQL
    
$host "localhost";
    
//user per l'accesso al DB
    
$user "root";
    
//la password per l'accesso al DB
    
$pass "";
    
//database in cui si trova la tabella delle news
    
$database "sito";
    
    
$connection mysql_connect($host$user$pass);
    
mysql_select_db($database$connection);
    
    
$news_table "news"
e ora la porzione di codice per la creazione vera e propria della nostra pagina news:

Codice PHP:
//includo il file per la connessione al DB 
include 'db.php';

//numero di news per pagina
$nxpag 10;        

//prendo tutte le news dal database
$result mysql_query("SELECT * FROM ".$news_table." ORDER BY id DESC");

//numero di news presenti
$num mysql_num_rows($result);

//se non ho definito il numero della pagina visualizzo la prima
if(!isset($_GET['page'])) { $np 1; }
//altrimenti prendo il numero pagina dalla querystring (GET)
else { $np $_GET['page']; }

////////////////
// lista news //
////////////////

//se non ci sono news avverto col seguente messaggio
if($num == 0)
{
    print(
"<p align='center' class='news_titolo'>Al momento non ci sono news segnalate</p>");
}
//altrimenti creo la lista delle news
else
{
    
$j=0;
    while(
$row[$j] = mysql_fetch_array($result)) { $j++; }
    
    for(
$i=0;$i<$num;$i++)
    {
        
$min = ($np-1) * $nxpag;
        
$max = ($min $nxpag) - 1;
        
        if(
$i>=$min && $i<=$max)
        {
            print(
"<table border='1' width='500' cellspacing='0' cellpadding='0' align='center'>");
                print(
"<tr>");
                    print(
"<td class='news_titolo'>");
                        print(
$row[$i]['titolo']);
                    print(
"</td>");
                    print(
"<td class='news_titolo' width='80'>");
                        print(
$row[$i]['data']);
                    print(
"</td>");
                print(
"</tr>");
                print(
"<tr>");
                    print(
"<td class='news_titolo' colspan='2'>");
                        print(
$row[$i]['contenuto']);
                    print(
"</td>");
                print(
"</tr>");
            print(
"</table>");
            print(
"
"
);
        }
    }
    
}

////////////////////////////////////
// indice delle pagine delle news //
////////////////////////////////////

//calcolo il numero di pagine arrotondando per eccesso (ovviamente)
$npagine ceil($num/$nxpag);

//calcolo il valore della pagina precedente...
if($np 1) { $prev $np-1; }
else { 
$prev 1; }

//...e di quella sucessiva
if($np $npagine) { $next $np+1; }
else { 
$next $npagine; }

//se il numero di news supera il valore consentito per pagina allora faccio comparire l'indice delle pagine
if($num $nxpag)
{
    print(
"<table align='center'><tr><td valign='middle'>");
    
    
//link per andare alla pagina precedente (se la pagina è la 1 riporta alla 1)
    
print("[url='news.php?page=".$prev."']<[/url]");
    
    
//creo l'indice delle pagine
    
for($i=1;$i<=$npagine;$i++)
    {
        
//la pagina corrente la faccio non cliccabile
        
if($i == $np)
        {
            print(
" <font class='page_current'>".$i."</font> ");
        }
        
//mentre le altre le rendo dei link al corrispiettivo numero di pagina
        
else
        {
            print(
"[url='news.php?page=".$i."']".$i."[/url] ");
        }
    }
    
//link per andare alla pagina sucessiva (se la pagina è la $npagine riporta alla $npagine)
    
print("[url='news.php?page=".$next."']>[/url]");
    print(
"</td></tr></table>");

Inserendo questo codice nel body di una pagina otterrete un decente, basilare e personalizzabile sistema news.
Potete anche creare un file con solo questo codice e poi includerlo...il principio è lo stesso.

La limitazione del numero di news visualizzate non l'ho effettuato con un LIMIT nella query per il semplice fatto che è inutile fare 2 query (una per il numero di news e una per ricavare le news col LIMIT).

Ripeto: il codice è spartano, ma efficace per chi è alle prime armi.
Se ci sono altri 2000 post del genere (non li ho trovati) mi scuso...vedetelo come un ripasso.
Altrimenti fatemi sapere se vi torna utile che in caso aggiungo porzioni di codice per immagini e soprattutto per un mini "back-office" per l'inserimento e la gestione delle news.

bye^^