Supportnet Computer
Planet of Tech

Supportnet / Forum / Anwendungen(Java,C++...)

PHP - einzelne Datensätze in Textdatei verändern





Frage

Auf'm Server liegt eine Textdatei, die per PHP ausgelesen und dann in eine Homepage eingebunden wird. Für diese Datei möchte ich nun eine Online-Administration einrichten, damit die enthaltenen Daten auch geändert werden können, ohne dass ein neuer FTP-Upload erforderlich ist. Kurz zum Aufbau der Textdatei: Sie enthält eine feste Anzahl von Datensätzen (z.Zt. 10). Jeder Datensatz entspricht einer Textzeile und besteht aus einer Nummer (nämlich in der Reihenfolge 1 - 10) sowie zwei weiteren Texteinträgen. Diese drei Einzeleinträge sind durch ";" getrennt. Nun möchte ich ein kleines Eingabeformular erstellen, wo der Benutzer drei Eingabefelder hat: Die lfd. Nummer (die ihm bekannt ist) sowie zwei weitere Textfelder. Nach erfolgter Eingabe soll nun in der Textdatei der Datensatz geändert werden, dessen Nummer der Benutzer zuvor in das erste Eingabefeld eingegeben hat. Diese Nummer soll auch in der Textdatei unverändert bleiben, lediglich die beiden weiteren Einträge sollen aktualisiert werden mit den eingegebenen Werten. Wie ist so etwas umzusetzen?

Antwort 1 von sutadur

Hey, ich warte noch auf Ideen ... ;o)

Antwort 2 von Nostradamus

Zur Frage: Ja!

www.php.net gib bei search mal split ein.

Oder lese die Datei in ein Textfeld ein.
Dann kannst du die auch "von Hand" editieren.

Ist zwar wenig, hilft aber vielleicht.

Gruß

Antwort 3 von semi

Hier eine ...ehhmm.. Idee. (Dateinamen anpassen)

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
if(isset($action) && strcmp($action,"Speichern")==0) {
  $f = fopen("data.dat", "w");
  for($i=0; $i<count($id); $i++)
    fwrite($f, "{$id[$i]};{$f1[$i]};{$f2[$i]}\n");
  fclose($f);
}
$f = file("data.dat");
echo "<form method=post>\n";
foreach($f as $l) {
  list($id, $f1, $f2) = split(";", $l, 3);
  echo "<input name=\"id[]\" value=\"$id\" size=2 readonly>";
  echo "<input name=\"f1[]\" value=\"$f1\">";
  echo "<input name=\"f2[]\" value=\"$f2\">";
  echo "<br>";
}
echo "<input type=submit name=\"action\" value=\"Speichern\">";
echo "</form>\n";
?>
Es setzt voraus, dass die Datei wie folgt aufgebaut ist.

1;Feld 1_1;Feld 1_2
2;Feld 2_1;Feld 2_2
...
n;Feld n_1;Feld n_2

Gruß,
Michael

Antwort 4 von sutadur

Genau so wie in Antwort 3 genannt ist die Datei aufgebaut. Ich werd demnächst die genannten Vorschläge versuchen umzusetzen, melde mich dann ggf. nochmal. Danke! :o)

Antwort 5 von sutadur

@semi: Ich hab das ausprobiert, die Änderung der einzelnen Datensätze scheint auch zu klappen. Nur leider wird in der neu erzeugten Textdatei hinter Feld 2 kein Zeilenumbruch eingefügt (trotz "\n"). Das hat zur Folge, dass alle Datensätze hintereinander weggeschrieben werden ...

Antwort 6 von semi

Mach' mal "\r\n" daraus.