Programmazione Web » Php » Aggiungere automaticamente l'icona "new"
Aggiungere automaticamente l'icona "new"
Difficoltà:
Scritto da Michele Sassi
Sito Web: http://www.comefaccio.net ![]()
Questo tutorial è stato letto 1948 volte
Come avrete sicuramente notato, in molti siti web al lato del nuovo materiale inserito compare un'icona (spesso portante la scritta "New") che ci segnala che quell'articolo è di recente inserzione.
Questo significato di "nuovo" può essere inteso sotto mille aspetti. Solitamente i più utilizzati sono due:
- il primo caso è quello che mostra all'utente come "new" tutti gli articoli che sono stati inseriti dopo la sua ultima visita;
- il secondo caso, invece, mostra all'utente come "new" tutti gli articoli che sono stati inseriti negli ultimi n giorni, indipendentemente dalla sua ultima visita. Il limite di "n" giorni viene ovviamente stabilito dal webmaster stesso.
Il primo metodo fa utilizzo dei cookies; sostanzialmente controlla la data dell'ultima visita dell'utente presso quel sito e mostra come "new" tutto ciò che è stato inserito successivamente a quella data. Ovviamente per l'utente potrebbe essere una comodità in quanto ogni volta potrebbe subito individuare tutto ciò che non ha letto precedentemente, ma tale metodo potrebbe rivelarsi un fallimento se l'utente ha i cookies disattivati o se li cancella periodicamente. Nonostante questo inconveniente, questo metodo resta quello utilizzato dalla maggior parte dei siti e delle applicazioni che girano su Internet, quali ad esempio i Forum di discussione.
Il secondo metodo, che spiegheremo effettivamente in questo tutorial, non prevede alcun utilizzo di cookies o di altri strumenti di questo tipo. Si presume solamente che ogni articolo del database sia "contrassegnato" da una data di pubblicazione. Controlleremo che la data di oggi sia maggiore di non più di tre giorni (tanto per fare un esempio) di quella della pubblicazione dell'articolo. Se questa condizione si verifica, mostreremo l'icona "new", altrimenti mostreremo il solo articolo così com'è.
Supponiamo, ad esempio, di aver pubblicato un articolo il 10/03/2006. Stando alle nostre scelte questo articolo dovrebbe rimanere visibile come "new" fino al 13/03/2006, dopodiché non sarà più considerato come tale.
Passiamo adesso agli sviluppi, che credo sia la cosa più interessante. Innanzitutto useremo la funzione mktime per determinare la data corrente, dopodichè utilizzeremo una variabile chiamata $giorni_dalla_pubbl che ci permetterà di calcolare quanto tempo è passato dalla pubblicazione di tale articolo. Sarà necessario un semplice ciclo di controllo if-else per verificare che non siano trascorsi più di 3 giorni dalla data di pubblicazione. Se questa condizione è verificata visualizzeremo l'immagine, in caso contrario non stamperemo niente a video.
<?php
$attuale_timestamp = mktime("0","0","0", date("m"), date("d"), date("Y"));
$giorni_dalla_pubbl = intval((1142031600 - $attuale_timestamp) / 86400);
if ($giorni_dalla_pubbl <= 3) echo "<img src=\"new.gif\" /";
?>
Come avete potuto notare il calcolo dei giorni trascorsi dalla pubblicazione viene effettuato arrotondando (grazie ad intval()) il valore calcolato in timestamp della sottrazione tra la data di pubblicazione e la data attuale. Tale valore viene poi convertito in giornate grazie alla divisione per 86400, che non è altro che la durata di un giorno in timestamp.
N.B.: Per la data di pubblicazione dell'articolo è stato utilizzato un valore costante di esempio. Se nel vostro caso tale valore è contenuto in un database, nulla esclude che questo possa essere riutilizzato con una formula simile alla seguente:
$giorni_dalla_pubbl = intval(($row['data_articolo'] - $attuale_timestamp) / 86400);
Credo di essere stato sufficientemente chiaro. Per qualsiasi problema in merito potete chiedere sul Forum.

