Zeile zuoberst ins txt schreiben - alten inhalt beibehalten

mariomartic

Mitglied
Hallo Leute

Bin hier etwas am ausprobieren. Möchte eine einfach Seite machen, die man auch per Browser gleich ändern kann (inhaltlich)...also so ein "möchtegern" CMS System :)

Habe aber bei folgenden Sachen ein Problem, respektiv finde ich nichts, dass mir weiterhilft und bin ein PHP anfänger!

Ich möchte, dass jeder Neuer Eintrag zuoberst ins txt-file geschrieben wird. Desweiteren sollte eine Möglichkeit bestehen, alte Einträge zu löschen. Ich schaffe es aber nicht. Meine Überlegung war es, ein Formularkästchen einzufügen, welches man ankreuzen kann, damit man alte Einträge löschen kann. Nur ist die Frage, wie soll das gehen, dass er automatisch zu jedem neuen Eintrag ein neues Kästchen macht, welches man ankreuzen kann?

Falls jemand Zeit hätte mir zu helfen, ich wäre SEHR sehr DANKBAR!

Danke an ALLE im Voraus für die Bemühungen

gruss
SEVEN

Im Anhang findet ihr noch ein .zip-file mit dem was ich bis jetzt geschafft habe.
 

Anhänge

PHP:
$sFileName   = "data.txt";
$sOldContent = file_get_contents( $sFileName );

$fileHandler = fopen( $sFileName, "w" );
fputs( $fileHandler, "Neuer Eintrag, ganz oben\r\n".$sOldContent );
fclose( $fileHandler );
Um die Frage mit dem löschen zu beantworten wäre es nterresant zu wissen,
wie die Datei aufgebaut ist!
 
Zuletzt bearbeitet von einem Moderator:
habe den code folgendermassen eingefügt

<?php
$sFileName = "montag.txt";
$sOldContent = file_get_content( $sFileName );

$fileHandler = fopen( $sFileName, "w" );
fputs( $fileHandler, "Neuer Eintrag, ganz oben\r\n".$sOldContent );
fclose( $fileHandler );
?>

und bekomme beim ausführen diesen fehler

Fatal error: Call to undefined function: file_get_content() in c:\daten\web_php\my-content\ch_montag.php on line 8
 
Ok, sorry, es muss file_get_contents heißen.

Wenn ich den Aufbau der Dateien richtig verstanden habe, dann könntest du es so machen:
PHP:
$aContent = file( "datei.txt" );

foreach( $aContent as $iKey=>$sLine ) {
  printf( "%s <a href=\"del.php?l=%i>l&ouml;schen</a><br>\r\n", $sLine, $iKey );
}
Und die del.php
PHP:
if ( isset( $_GET['l'] ) ) {
    $iLine = (int)$_GET['l'];
    $aTmpData = file( "datei.txt" );
    unset( $aTmpData[$iLine] );
    $fileHandler = fopen( "datei.txt", "w" );
    fputs( $fileHandler, implode( "", $aTmpData ) );
    fclose( $fileHandler );
}

hth
 
es geht leider noch nicht mit dem übernehmen de alten inhalts....auch das S hat nichts gebracht..leider...
ich habe den code im dreamweaver..und jede funktion wird ja blau dargestellt...aber dieser befehl bleibt schwarz...und die fehlermeldung kommt immernoch

Fatal error: Call to undefined function: file_get_contents() in c:\daten\web_php\my-content\ch_montag.php on line 8

...hier mal die neusten files...

DANKE für die hilfe!
 

Anhänge

das mit dem löschen hab ich auch noch versucht...klappt auch nicht...

liegt wohl an meinem sehr sehr sehr begrenzten php-wissen :)

falls jemand zeit hätte den code gleich in die dateien reinzumachen und wieder gezippt upzuloaden wäre das sehr lieb...und ansonsten schaue ich nach weiteren lösungen.

an alle die helfen --> VIELEN DANK
 
Hi Mario,...

ne Möglichkeit, etwas direkt an den Anfang einer Datei einzufügen, gibts in PHP nicht(zumindest nicht, ohne den Rest oder einen Teil zu löschen).
Du musst daher in 2 Schritte vorgehen:

[1]Datei auslesen und Inhalt in Variable zwischenspeichern
[1]Datei öffnen und Inhalt löschen
[1]Neue Zeile hinzufügen
[1]Den gespeicherten Rest hineinschreiben

Ich hab mal nen Beispielcode gemacht(die Datei musst du mit Schreibrechten ausstatten).
Das Skript erwartet als Variablen 'newEntry'.... das ist ein neuer Eintrag
und im Bedarfsfall 'del($nr)'....($nr steht dabei für die zu löschende Zeile).
Weiteres steht im Skript drinnen.
PHP:
<html>
<head>
<title>readwrite</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>"method="POST">
<textarea rows="6"cols="50"name="newEntry"></textarea><br>
<input type="submit">
<?php
//Array lines, nimmt die Zeilen auf, welche in die Datei geschrieben werden sollen
$lines=array();

//Falls neuer Eintrag, wird dieser dem Array $lines hinzugefügt.
//Zeilenumbrüche werden dabei durch <br /> ersetzt, damit jeder Eintrag in einer Zeile steht
if(isset($_POST['newEntry']))
  {
  $lines[]=preg_replace('/\r\n/','<br />',trim(htmlentities($_POST['newEntry'])));
  }

//Datei in Array lesen
if($file = @file("data.dat"))
      {

//Array durchlaufen
        for($i=0;$i<count($file);++$i)
         {

//wenn Zeile nicht gelöscht werden soll, Zeile $lines-Array[] hinzufügen
         if(!isset($_POST['del'.$i]))
            {
            $lines[]=trim($file[$i]);
            }
          }
      }
//wenn $lines-Array[] Zeilen beeinhaltet
if(count($lines)>0&&$fp = fopen("data.dat","w+"))
      {
      echo 	'<table border="1">';
//$lines-Array[] durchlaufen
      for($i=0;$i<count($lines);++$i)
        {
//wenn Element nicht leer ist
          if(!empty($lines[$i]))
            {
//Zeile in Datei schreiben
              fputs($fp,trim($lines[$i])."\r\n");
//HTML-Ausgabe, für jede Zeile wird dabei anhand der Zeilennummer eine Checkbox zum löschen erzeugt
              echo '<tr><td>'.$lines[$i].'</td><td><input type="checkbox"name="del'.$i.'"> löschen?</td></tr>';
            }
        }
      echo '</table>';
      }
?>
</form>
</body>
</html>
Ich hoff, es hilft dir etwas weiter :)
 
Zurück