salve a tutti... ho scoperto questa pillola solo ora... io ho (provato) a creare un sistema di commenti basato su db testuale. Rispetto a quello presente in questa pillola ho aggiunto un "campo" all'inizio di ogni riga autoincrementante (tipo mysql) in modo da lavorarci meglio in caso di eliminazione di singolla riga o di modifica.

Vi faccio vedere come ho fatto.

Premetto: ciò che posto è tecnicamente funzionante (ma ho paura di bug nascosti).

Siccome sto studiando il php (tecnica: imparare facendo) se volete dagli uno sguardo sarei felicissimo di ricevere il vostro parere...
In questa sede posto solo lo script che inserisce i dati ne db, quello che elimina e quello che modifica

SCRIPT PER L'INSERIMENTO DI "RECORD"

Codice PHP:
<?php
/*RICEVO I DATI - ho rimosso isset() e empty() per snellire il codice*/
$nome=$_POST['nome'];
$email=$_POST['email'];
$commento=$_POST['commento'];
$pagina=$_POST['pagina'];/campo hidden identificativo della pagina
$destinazione
=$_POST['return'];/campo hidden del form con value=$_SERVER['PHP_SELF'];


/*IMPOSTO DATA ORA*/
$data date("d-M-y");
$ora date("G:i");


/*CREAZIONE NUOVO "RECORD" NEL DB*/

/*ID PROGRESSIVO RISPETTO A QUELLO PIU' GRANDE PRESENTE*/
$contenuto=file("db.txt");
$num_righe=count($contenuto);


for(
$i=0;$i<$num_righe;$i++)    {
                
$singola_riga=explode("§-§",$contenuto[$i]);
                
$array_id=array();
                
array_push($array_id$singola_riga[0]);
                }
$max=max($array_id);
$new_id=$max+1;

/*NUOVO RECORD*/
$new_record="\r\n".$new_id."§-§".$nome."§-§".$email."§-§".$commento."§-§".$data."§-§".$ora."§-§".$pagina."§-§";

/*SCRIVO IL NUOVO RECORD NEL DB*/

$open=fopen("db.txt","a+");
fwrite($open$new_record);

/*RITORNO DA DOVE SONO VENUTO*/

header("location: $destinazione");
?>
SCRIPT DI ELIMINAZIONE DI "RECORD"

Codice PHP:
<?php
$action
=$_GET['action'];
$id=$_GET['id'];

if(
$action=="elimina")
    {
    /
lettura di ogni riga
    $contenuto
=file("db.txt") or die ("problemi nelle lettura del db");
    
$num_righe=count($contenuto);            
    /
le scorro tutte con for
    for(
$i=0;$i<$num_righe;$i++)
        {
        /
con explode estraggo isolo i vari campi        
        $singola_riga
=explode("§-§",$contenuto[$i]);

        /
se il campo id coincide con quello inviato tramite get
        
if($id==$singola_riga[0])
            {
            /
prendo il record che voglio eliminare
            $vecchio_record
=$id."§-§$singola_riga[1]§-§$singola_riga[2]§-§$singola_riga[3]§-§$singola_riga[4]§-§$singola_riga[5]§-§$singola_riga[6]§-§\r\n";
            
            /
prendo tutto il contenuto del db
            $tutti_commenti
=file_get_contents("db.txt") or die ("errore nella lettura del db");

            /
sostituisco il vecchio record con il nulla ""
            
$new_contenuto=str_replace($vecchio_record""$tutti_commenti);

            /
elimino il file
            unlink
("db.txt") or die ("errore di cancellazione");

            /
ne apro uno nuovo
            $open
=fopen("db.txt","a+");

            /
ci scrivo il contenuto nuovo
            fwrite
($open$new_contenuto);
            
            /
chiudo il file
            fclose
($open);
            }
        }
    /
ritorno al pannello di amministrazione
    header
("location: admin.php");
    }
?>
SCRIPT DI MODIFICAZIONE "RECORD" (praticamente è uguale all'elimina... cambia solo il secondo elemento dello str_replace che non è più "" ma contiene il record modificato)

Codice PHP:

<?php
$action
=$_GET['action'];
$id=$_GET['id'];
$nome=$_GET['nome_modificato'];
$commento=$_GET['commento_modificato'];

if(
$action=="modifica")
    {
    /
lettura di ogni riga
    $contenuto
=file("db.txt") or die ("problemi nelle lettura del db");
    
$num_righe=count($contenuto);            
    /
le scorro tutte con for
    for(
$i=0;$i<$num_righe;$i++)
        {
        /
con explode estraggo isolo i vari campi        
        $singola_riga
=explode("§-§",$contenuto[$i]);

        /
se il campo id coincide con quello inviato tramite get
        
if($id==$singola_riga[0])
            {
            /
prendo il record che voglio eliminare
            $vecchio_record
=$id."§-§$singola_riga[1]§-§$singola_riga[2]§-§$singola_riga[3]§-§$singola_riga[4]§-§$singola_riga[5]§-§$singola_riga[6]§-§\r\n";
            
            /
costruisco il nuovo record
            $nuovo_record
=$id."§-§".$nome."§-§$singola_riga[2]§-§".$commento."§-§$singola_riga[4]§-§$singola_riga[5]§-§$singola_riga[6]§-§";
                        
            /
prendo tutto il contenuto del db
            $tutti_commenti
=file_get_contents("db.txt") or die ("errore nella lettura del db");

            /
sostituisco il vecchio record con il nuovo
            $new_contenuto
=str_replace($vecchio_record$nuovo_record$tutti_commenti);

            /
elimino il file
            unlink
("db.txt") or die ("errore di cancellazione");

            /
ne apro uno nuovo
            $open
=fopen("db.txt","a+");

            /
ci scrivo il contenuto nuovo
            fwrite
($open$new_contenuto);
            
            /
chiudo il file
            fclose
($open);
            }
        }
    /
ritorno al pannello di amministrazione
    header
("location: admin.php");
    }
?>
Giudicatemi ma nnn siate severi se ho fatto qualche grande fesseria...