Einträge bearbeiten

Wie beim Löschen setzen wir zunächst einen Link unterhalb jedes Eintrages ein "edit=DATEINAME".

<?PHP
...
             
//  Link  zum  Löschen  des  Eintrags
             
echo  '<br/>';
              echo 
'<a  href="tagebuch.php?delete='.$datei.'">Löschen</a>';
             
//  Link  zum  Bearbeiten  des  Eintrages
             
echo  '  -  ';
              echo 
'<a  href="tagebuch.php?edit='.$datei.'">Bearbeiten</a>';
              echo 
'</p>';
...
?>

Formular

Jetzt bräuchten wir natürlich wieder das Formular, welches uns den Text vom alten Eintrag zeigt, damit wir ihn bearbeiten können. Das Formular haben wir ja schon, aber um dort Text anzeigen zu können, müssen wir es ein wenig erweitern.

<?PHP
...
//  ====================================================
//  Formular  und  Ausgabe
//  ====================================================

//  Erstellen  eines  UNIX-Timestamp,  falls  nicht  existent
if(!isset($zeitstempel))  {  $zeitstempel  time();  }

//  Tagebuchtext,  erstellen  falls  nicht  existiert  (leer)
if(!isset($text))  {  $text  '';  }

//  Ausgabe  des  Eingabeformulars
$formular  '
<form  method="post"  action="tagebuch.php">
      <p>
              Neuer  Eintrag:<br  />
              <textarea  name="eintrag"  cols="42"
                rows="5">'
.$text.'</textarea>
      </p>
      <p>
              <input  type="hidden"  name="zeit"  value="'
.$zeitstempel.'"  />
              <input  type="submit"  name="submit"  value="Eintragen"  />
      </p>
</form>
'
;
echo 
$formular;
...
?>

Jetzt können wir dem Formular Text übergeben, wenn dieser vor dem Formular in einer Variabel "$text" erstellt wird.

Text holen

Vor der Ausgabe des Formulars, müssen wir prüfen, ob per GET das Bearbeiten aufgerufen wurde. Wenn ja, lesen wir die Datei und übergeben die Daten an $text und $zeitstempel.

<?PHP
...
//  ====================================================
//  Eintrag  bearbeiten
//  ====================================================
if(isset($_GET['edit']))  {
     
//  Prüfen  ob  Dateiname  nur  aus  Zahlen  besteht
     
if(ctype_digit($_GET['edit']))  {
             
$dateiname  $speicherort.'/'.$_GET['edit'];

             
//  Prüfen  ob  Datei  existiert
             
if(file_exists($dateiname))  {
                     
//  Datei  auslesen  und  Daten  übergeben
                     
$text  file_get_contents($dateiname);
                     
$zeitstempel  $_GET['edit'];
              }
      }
}
...
?>

Fertig. Warum? Naja, das Speichern in eine Datei haben wir ja schon. Da wir den alten Zeitstempel dem Formular übergeben haben, wird keine neue Datei erstellt, sondern die alte geöffnet, der Inhalt gelöscht und der neue Inhalt hineingeschrieben.