Ho creato un guestbook, dove i messaggi vengono salvati su un file di testo.
Per visualizzare i messaggi, leggo tutti i messaggi (riga per riga) nel file di testo e li stampo a video.
Tutto questo va bene se ci sono pochi messaggi, ma quando i messaggi cominciano a diventare tanti si crea confusione (anche perchè i messaggi li faccio ruotare).
Mi chiedevo se esistesse la possilità di inserire un "qualcosa" (tipo un contatore di messaggi o di righe) che mi dia la possibilità di impostare un tot di messaggi per pagina. :master:
Per capirci, come quello che ho creato con il database, imposto una variabile con il numero max di messaggi e lo script me li divide per un tot di pagine.
Questo l'ho voluto fare con un file di testo per dare la possibilità, a chi non ha un database, di poterlo usare ugualmente.
Posto il codice della pagina principale:
Codice PHP:
<?php include ("config.php");
?>
<style>
.titolo {
font:"Courier New", Courier, monospace;
font-size: <? echo $dimensfont?>;
color: <? echo $colorT?>;
}
.tabMess {
background-color: <? echo $sfondoTab?>;
font-family:Arial, Helvetica, sans-serif;
color: <? echo $colorFont?>;
font-size: <? echo $dimensionefont?>;
}
</style>
<table width="100%" border="0">
<tr>
<td align="center" class="titolo"><? echo $titolo_guest?></td>
</tr>
</table>
<table width="40%" height="250" border="1" align="center" cellpadding="0" cellspacing="0">
<tr>
<td width="65%" class="tabMess" ><Marquee Behavior="Scroll" Direction="up" Height="200" width="100%" ScrollAmount="2" ScrollDelay="30" onmouseover="this.stop()" onmouseout="this.start()">
<?php
// parametri di configurazione
$filename="messaggi.txt"; // file delle frasi
$delim="<"; // delimitatore di frase
// apri il file delle frasi
$fd=fopen($filename,"r");
//conta il totale delle righe, quindi dei messaggi
//$totMex=count(file($filename));
// legge il file
$contents = fread ($fd, filesize ($filename));
//estrae per riga
$frase= explode($delim,$contents);
//in ordine inverso i messaggi
$frase_reverse= array_reverse($frase);
if (sizeof($frase) <= "1")
{
echo "$PHP_SELF: Errore, nessun array, sto uscendo...";
exit;
}
for($i=0;$i<count($frase)-1;$i++)
{
$val[$i]=explode('#', $frase_reverse[$i]);
$nome[$i]=ucfirst ($val[$i][0]);
$citta[$i]=ucfirst ($val[$i][1]);
$messaggio[$i]=ucfirst ($val[$i][2]);
$data [$i]= ($val[$i][3]);
$table='<table width="100%" cellpadding="0" cellspacing="0" class="tabMess">
<tr>
<td bgcolor="#999999">'. $nome[$i]. $citta[$i]. $data[$i].'</td>
</tr>
</table>
<table width="100%" height="40" cellpadding="0" cellspacing="0">
<tr>
<td bgcolor="#CCCCCC">'. $messaggio[$i].'</td>
</tr>
</table>
';
echo $table;
}
// chiude il file
fclose ($fd);
?>
</Marquee></td>
</tr>
<tr>
<td align="center" height="85">
<table width="35%" height="85" border="0">
<tr>
<td width="35%">
<form action="scrivi.php" method="post" name="form1">
<table width="0" border="0" align="center">
<tr>
<td>*Nome:</td>
<td width="82"><input name="Nome" type="text" size="10" style="font-size: 10px; font-family:Verdana"></td>
<td>*Città:</td>
<td><input name="Citta" type="text" id="Citta" onFocus="controllaNo()" size="10" style="font-size: 10px; font-family:Verdana"></td>
<td>*Messaggio:</td>
<td><textarea name="Mex" cols="20" id="Mex" style="font-size: 10px; font-family:Verdana" onFocus="controlla()"></textarea> </td>
</tr>
<tr>
<td> </td>
<td colspan="2">*=campi obbligatori </td>
</tr>
</table>
<div align="center">
<input type="submit" value="Firma" name="invia" onfocus="y" style="font-size: 10px; font-family:Verdana" />
</div>
</form></td>
</tr>
</table>
</td>
</tr>
</table>
Magari non si può neanche fare.
Se non mi sono spiegato bene, chiedete pure.
Grazie in anticipo