michael_naun: in datei schreiben

hallo

da ich ein php newbie bin, hoffe ich hier hilfe zu finden.

ich schreibe in eine textdatei.

<?
$daten=str_replace("\"",""",$daten);
$daten=str_replace("'","'",$daten);
urlencode ($daten);
$daten=str_replace("%0D","\n",$daten);
$fp = fopen("news.txt","a");
fputs($fp,$daten);
fclose($fp);
echo "&ergebnis=ok&";
?>

es wird immer angefügt. ich würde gerne das die datei jedesmal neu geschrieben wird. was muss ich da machen?

  1. $fp = fopen("news.txt","w");

    andreas

    1. danke das hat geklappt.

      so aber damit trat ein neues problem auf. und zwar stand am anfang der texdatei eine variable (&daten=). diese wird ja nun auch überschrieben. wo muss ich den das einfügen, damit das stehen bleibt oder neugeschrieben wird am anfang der textdatei?

      1. Hallo,

        das ist dann schon höhere Mathematik, zumindest mit PHP. Man kann nämlich mit PHP keine eigenen Datenstrukturen definieren. Braucht man auch gar nicht, da es die "Arrays" gibt.

        Das sind in Wirklichkeit gar keine Arrays, sondern verkette mehrdimensionale Listen, also Baumstrukturen.

        Wenn Du nun Deine ganzen zu sichernden Daten in solch ein Array schreibst, dann kannst Du das irgendwann mit serialize() einpacken lassen und in die Datei schreiben. Und wenn Du es wieder brauchst, oder einen Wert darin ändern willst, dann holst Du es wieder und benutzt unserialize(). Schwupps ist Dein "Array" wieder da und Du kannst sofort auf jeden Wert zugreifen.

        Der einzige Nachteil dabei ist, dass man immer die gesamte Datei einlesen muss, wenn man etwas ändern will. Aber im Zeitalter von Monster-Gigabyte-Platten geht das auch in Nullkommanix.

        Grüße

        Tom

      2. Hallo Michael,

        und zwar stand am anfang der texdatei eine variable (&daten=).

        ähh... das ist keine Variable... meinst du '$daten='?

        diese wird ja nun auch überschrieben. wo muss ich den das einfügen, damit das stehen bleibt oder neugeschrieben wird am anfang der textdatei?

        du musst an den Inhalt den du in die Datei schriebst eben das '$daten=' vornedranhängen:
        $daten = '$daten='.$daten;
        fputs($fp,$daten);

        Grüße aus Nürnberg
        Tobias

        --
        Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|
  2. Hello,

    $fp = fopen("news.txt","a");

    a für append / erzeugen anfügen
    r für read   / lesen nur vorhandene
    w für write  / erzeugen und (über-)schreiben

    a+ für ggf. erzeugen, anfügen an vorhandene und lesen
    r+ für lesen nur vorhandene oder schreiben in vorhandene
    w+ für erzeugen und (über-)schreiben und  anschließend lesen

    Grüße

    Tom

  3. Hallo Michael,

    $daten=str_replace("\"",""",$daten);
    $daten=str_replace("'","'",$daten);

    ich glaube du suchst stripslashes() (->http://de.php.net/stripslashes)

    $fp = fopen("news.txt","a");

    Damit wird der Zeiger zum Schreiben an das Ende der Datei gesetzt - wenn du willst, dass die Datei "geleert" wird, brauchst du 'w' (siehe auch http://de3.php.net/fopen)

    Grüße aus Nürnberg
    Tobias

    --
    Selfcode: sh:( fo:) ch:? rl:( br:< n4:& ie:% mo:| va:) de:] zu:) fl:( ss:| ls:[ js:|