file di segnalibri 2


Vediamo oggi un modo per memorizzare i dati in un file con dei tag appositi che poi verrano utilizzatiper una formattazione in fase di stampa.
Questo esempio è stao progettato per memorizzare dei segnalibri con anche un commento e delle categorie, ma può trovare diverse applicazioni.
i dati verrano memorizzati nel seguente modo:
:categoria:{
indirizzo sito1 #commento1
indirizzo sito2 #commento2
ecc
}
mentre verrano stampati nel seguente modo


categoria :
url commento

Il codice per far tutto ciò è il seguente:

<title>siti utili</title>
<style type="text/css">
<!--
.Stile1 {
	color: #FF0000;
	font-weight: bold;
}
-->
</style>

<table width="1024" border="0">


<?php

if (!$p_file = fopen("utile.txt","r")) {
echo "Spiacente, non posso aprire il file utile.txt";
} else {
while(!feof($p_file))
{
if(fgets($p_file,2)==":"){
?>
  <tr>
    <td colspan="2">
      <span class="Stile1">
      <?php
while(($c = fgets($p_file,2)) != ":"){
print $c;
}
?> : </span></td>
  </tr>
  <tr>
    <td ><strong>url</strong></td>
    <td ><strong>commento</strong></td>
  </tr>

<?php
}
if (($c = fgets($p_file,2)) == "{"){
	while (($c = fgets($p_file,2)) !="}" ){
		$d = "";
		?>
		<tr>
		<td>
<?php
		while($c  != "#"){
			//print fgets($p_file,2)."<p>";
			$d .= $c;
			$c = fgets($p_file,2);
		}
		?>
		<a href=" <?php print $d ?>" target="_blank"><?php print $d ?></a></td>
    	<td>
		<?php 
		print fgets($p_file);
		?></td>
  		</tr>
		<?php
	}
}
}
fclose($p_file);
}
?>
</table>

In pratica all’inizio scrivo il tag table che mi descrive la tabella :
<table width=”1024″ border=”0″>
Successivamente controllo se è possibile aprire il file contenente i siti utili.
Se è disponibile procedo con la lettura e la formattazione del contenuto.
Inizio a leggere il file carattere per carattere fin quando non arrivo alla fine: while(!feof($p_file))
Continuo a leggere fin quando non trovo i due punti : if(fgets($p_file,2)==”:”){.
Una volta trovati stampo tutto ciò che sta all’intenro dei due punti :
while(($c = fgets($p_file,2)) != “:”){
print $c;
Tutto ciò viiene stampato all’interno di una cella di larghezza 2 celle e con lo stile css Stile1.
in seguito scrivo :
</tr>
<tr>
<td ><strong>url</strong></td>
<td ><strong>commento</strong></td>
</tr>
che servono a ricordare la struttura della tabella ad ogni cambio di categoria.
poi in seguito continuo a legegre fin quando non trovo la graffa di apertura : if (($c = fgets($p_file,2)) == “{“){
ed quindi continuo a legegre fin quando non trovo la graffa di chiusura : while (($c = fgets($p_file,2)) !=”}” ){
In seguito assegno ad una variabile d il valore nullo (“”) : $d = “”;
Chiudo la riga suepriore ed ne inizio una nuova:
<tr>
<td>
in seguito continuo a leggere fin quando non incontro il cacelletto (il delimitatore dei commenti) : while($c != “#”){
ed ogni volta concateno ad d il caratetre corrente ed memorizzo in c il carattere successivo :
$d .= $c;
$c = fgets($p_file,2);
in seguito, una volta trovato il cancelletto, stampo il link ed apro una nuova cella:
<a href=” <?php print $d?>” target=”_blank”><?php print $d ?></a></td>
<td>
<?php
print fgets($p_file);
?></td>
</tr>
<?php

infine stampo tutto ciò che rimane nella riga dopo il cancelletto, cioè il commento e chiudo tutto :
}
}
}
fclose($p_file);
}
?>
</table>
ATTENZIONE : a causa del metodo di lettura dei commenti il cancelletto va sempre messo, anche in caso di commento vuoto, altrimenti il server adrà in loop
P.S per gestire il file di testo è possibile crearsi un interfacci o usare il programma di appunti, modificando oppurtunatamente il nome del file : http://www.thecsea.it/tutorial/2010/04/foglio-di-appunti/

<table width="1024" border="0">

CC BY-SA 4.0 file di segnalibri by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.


Lascia un commento

2 commenti su “file di segnalibri

  • cardi L'autore dell'articolo

    fio poi mi spiegherai il significato di sti commenti ad muzzum, dato k vorrei ankora sapere cm faresti tu a far euna roba del genere da c++ con interfaccia web senza usare libereire esterne