Usuwanie poszczegulnych fragmentów z pliku *.txt PHP

0

na początku strony mam 3 pola tekstowe: pole1, pole2, pole3. i przycisk "zapisz".

Dane wpisane w pola tekstowe zapisują się do pliku tekstowego za pomocą kodu:

     // dane pochodzace z formularza
    $dane = $pole1."|".$pole2."|".$pole3."\n";
    // przypisanie zmniennej $file nazwy pliku
    $file = "baza.txt";
    // uchwyt pliku, otwarcie do dopisania
    $fp = fopen($file, "a");
    // blokada pliku do zapisu
    flock($fp, 2);
    // zapisanie danych do pliku
    fwrite($fp, $dane);
    // odblokowanie pliku
    flock($fp, 3);
    // zamkniecie pliku
    fclose($fp);

następnie pod tym mam tabelkę do której wczytują się dane z tego pliku. Wygląda to tak:

echo "<table border=1 cellspacing=0 cellpadding=0 width=550px>";

// wczytanie zawartosci pliku do tablicy
$file = file("baza.txt");
// przechodzimy przez tablice za pomoca petli foreach
foreach($file as $value) {
// rozbijamy poszczególne linie na czesci
$exp = explode("|",$value);
// wyswietlamy rozbity tekst
echo "<tr><td> <a href=$exp[1]>" .$exp[0]. "</a></td><td>".$exp[2]."</td></tr>";
}

echo "</table>";

i pod tym wszystkim jest wstawiony skrypt do edytowania wcześniej zapisanych danych, jeśli by się na przykład popełniło gdzieś błąd przy wpisywaniu w pierwsze pola. Skrypt ten składa się z 3 pól tekstowych: nazwa, link, autor.
a wygląda to tak:

        $plik = "baza.txt";
        $file = file($plik);
        
        foreach($file as $value) {
            
            $sp = explode("|", $value);
            list($nazwa,$link,$autor) = $sp;
			
                
            echo '<form name="ksiega" method="post">
            <table cellpadding="0" cellspacing="0" width="550" border="1">
            <tr>
            <td>Nazwa :</td>
            <td ><input type="text" name="nazwa" value="'.$nazwa.'" />
            </td>		
            </tr>
			 <tr>
            <td>Autor :</td>
            <td ><input type="text" name="autor" value="'.$autor.'" />
            </td>		
            </tr>
            <tr>
            <td>Link :</td>
            <td><input type="text" name="link" value="'.$link.'" />
            </td>
            </tr>
            <tr>
            <td>&nbsp;</td>
            <td><input class="button" type="submit" value="Zapisz poprawione"/>
            </td>
            </tr>
       </table>
   </form>';

        }

i teraz moje pytanie: jeśli zmienie coś w polach edycyjnych (nazwa, link, autor) to jak to potem zapisac do pliku tekstowego zpowrotem ??

i jak usunąć cały wpis ?(to znaczy tylko jeden rekord)!

0

weź plik wczytaj funkcją file - będziesz miał tablicę a w każdej jej pozycji jedną linijkę pliku, potem proste tylko operacje na tablicach - zajrzyj na php.net pod dział "tablice" (arrays) i potem nadpisujesz plik i w pętli zapisujesz wszystkie linijki z powrotem

w operacjach na plikach można jedynie dopisywać lub nadpisywać, jeśli chcesz dopisać lub odpisać to musisz po dopisanym/usuniętym tekście przepisać resztę pliku jeszcze raz

ja robię właśnie bazę danych na plikach tekstowych obsługującą zapytania w języku SQL i już częściowo ją mam zrobioną - obsługuje proste SELECT, ORDER i WHERE - ale jeszcze nie jest gotowa ujrzeć światło dzienne

1 użytkowników online, w tym zalogowanych: 0, gości: 1