Usuwanie stareh zawartości baza.txt podczas nowej zawartości.

0

Witam, piszę z problemem takowym iż pragnę, aby po zapisaniu nowych zawartości do pliku baza.txt stara zawartość została nadpisana i zastąpiona nową (usunięta) jak tego dokonać?

<?php


$pole1 = trim($_POST['pole1']);
$pole2 = trim($_POST['pole2']);
$pole3 = trim($_POST['pole3']);

if(empty($pole1) and empty($pole2) and empty($pole3)) {
    
echo '
<form action="" method="post">
  <label for="d">D1</label>
  <select id="d" name="pole1">
    <option value="  tak(D1)" selected>tak</option>
    <option value="nie(D1)">nie</option>
  </select>
  <label for="d">D2</label>
  <select id="d" name="pole2">
    <option value="tak(D2)" selected>tak</option>
    <option value="nie (D2)">nie</option>
  </select>
  <label for="d">D3</label>
  <select id="d" name="pole3">
    <option value="  (D3)" selected>tak</option>
    <option value="nie (D3)">Nie</option>
  </select>
  <input type="submit" value="Zapisz">
</form>';
}
else {
    
    $dane = $pole1."`".$pole2."`".$pole3."\n";

    $file = "baza.txt";

    $fp = fopen($file, "a");

    flock($fp, 2);

    fwrite($fp, $dane);

    flock($fp, 3);

    fclose($fp);
    
    echo "Dane zostały zapisane!<br />";
    echo "<a href=\"podglad.php\">Zobacz wpisane dane</a>";
}

?>

a tak wygląda plik odczytu:

<?php

$file = file("baza.txt");

foreach($file as $value) {

$exp = explode("`",$value);

echo $exp[0]."<br>".$exp[1]."<br>".$exp[2]."<hr />";
}
?>
1

Musisz zmienić ustawienia w fopen. Parametr a otwiera plik, ale ustawia wskaźnik w nim na jego końcu i można coś tam dopisać. Jeśli plik jest na tym samym serwerze i w ogóle to możesz machnąć tam po prostu file_put_contents i tyle.

1

Jeśli chcesz zamienić całą obecną zawartość pliku treścią zawartą w zmiennej: $dane
to wystarczy, że zmienisz "a" na "w":

 $fp = fopen($file, "w");

Jeśli natomiast chcesz podmienić tylko zawartość jednego/kilku wierszy, bez ruszania pozostałych, to nie ma lekko. Musisz wtedy:

  • przeczytać cały plik wiersz po wierszu,
  • sprawdzić czy odczytany właśnie wiersz/rekord jest tym do zamiany i wtedy ew. go podmienić,
  • wyniki pracy zapisać do innego pliku, np "baza_nowa.txt"
  • na koniec skasować dotychczasowy plik "baza.txt", a temu nowemu ustawić taką samą nazwę, jak właśnie skasowany.
0

Dziękuję za pomoc.

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