Prima di proseguire...
Potrebbe interessarti la nostra collezione di esercizi C risolti?
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 : https://www.thecsea.it/tutorial/2010/04/foglio-di-appunti/
<table width="1024" border="0">
file di segnalibri by cardinale claudio is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.
W C++
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