Text aus einer .txt /.dat datei lesen und editieren

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Text aus einer .txt /.dat datei lesen und editieren

    Hallo ich habe mir ein Gästebuch gecodet was auf txt datei basiert !
    nu will ich auch einträge ändern können und ja das wollte ich mit eine art online editor der die txt datei im im netz öffnet wo ich dann alles editieren kann !!

    kann mi einer helfen ?

    ich hatte es so versucht hat aber nich geklappt !!

    Quellcode

    1. <php
    2. $file = "daten.txt";
    3. $file_read = fopen("$file","r");
    4. if($_POST[send]) {
    5. $file_save = fopen("$file","w");
    6. fwrite($file_save, $_POST[file_save]);
    7. }
    8. ?>
    9. <form action="gb_edit.php" method="post">
    10. <input type="hidden" name="send" value="send" />
    11. <textarea style="width: 400px; height: 300px;" name="file_save" /><?php echo $file_read;?></textarea>
    12. <input type="submit" value="editieren" />
    Alles anzeigen
  • hi..

    korrigier erstmal dein öffnendes php tag ;)
    Dann nimm in Zeile3 file_get_contents statt fopen.
    Und in den assoziativen Arrays solltest du einfache anführungszeichen für die Indizes verwenden...
    Außerdem solltest du das File Handle noch nach dem Schreiben wieder schließen.

    Einfach aus Vorsicht, dass register_globals aktiviert sein könnte, würde ich die Variablen auch eindeutig benennen.
    Also aus $_POST['file_save'] würde ich also post_save machen.

    Hier mal meine Überarbeitungen:

    Quellcode

    1. <?php
    2. $file = "daten.txt";
    3. $file_read = file_get_contents($file);
    4. if($_POST['send']) {
    5. $file_save = fopen("$file","w");
    6. fwrite($file_save, $_POST['post_save']);
    7. fclose($file_save);
    8. }
    9. ?>
    10. <form action="gb_edit.php" method="post">
    11. <input type="hidden" name="send" value="send" />
    12. <textarea style="width: 400px; height: 300px;" name="post_save" /><?php echo $file_read;?></textarea>
    13. <input type="submit" value="editieren" />
    Alles anzeigen
  • Moin Pranox,

    hast nur eine Kleinigkeit vergessen. Du holst dir die geänderten Dateiinhalt nicht noch mal i die Variable $file_read rein.
    füge den file_get_contense befehl von oben nach dem datei close befehl ein und die bekommst das richtig angezeigt.

    Und falls du dieses script wirklich so wie es ist produktiv nutzen solltest, solltest du noch ein paar änderungen vornhemen. ich poste dir gleich mal einen verbesserten code.

    Gruß sik
  • Hier ein wenig optimierung mit drinne.

    Quellcode

    1. <?php
    2. //überprüfen ob du zum ersten mal das seite aufrufst, nur dann die source file
    3. //definieren.
    4. //außerdem bindest du an die definition
    5. //noch einen befehl der den Programablauf unnötig verändern kann wenn er beieits
    6. // einmal ausgeführt wurde
    7. if(!isset($file)){
    8. $file = "daten.txt";
    9. //gucken ob die datei da ist, sonst machts kein sinn den inhalt zu holen,
    10. if(file_exists($file)){
    11. $file_read=file_get_contents($file) or die ('Datei: '.$file.' nicht gefunden.<br />\n');
    12. }
    13. }
    14. if($_POST['send']) {
    15. //selbes spiel, vor dem schreiben gucken ob die datei da ist
    16. //davor noch den file cache löschen, damit der server auch wirklich prüft
    17. //ob die datei da ist, und dir keinen wert aus dem cahe gibt
    18. clearstatcache();
    19. if(file_exists($file)){
    20. $file_save = fopen("$file","w");
    21. fwrite($file_save, $_POST['post_save']);
    22. fclose($file_save);
    23. //die geänderten Daten holen um sie richtig anzeigen zu können.
    24. $file_read = file_get_contents($file);
    25. }
    26. else{
    27. //damit kein datenverlust da ist
    28. $file_read=$_POST['post_save'];
    29. echo "Konnte nicht in Datei: ".$file." schreiben.<br />\n";
    30. }
    31. }
    32. ?>
    33. <form action="gb_edit.php" method="post">
    34. <input type="hidden" name="send" value="send" />
    35. <textarea style="width: 400px; height: 300px;" name="post_save" /><?php echo $file_read;?></textarea>
    36. <input type="submit" value="editieren" />
    37. </form>
    Alles anzeigen


    P.S.: die überprüfung ob du überhaupt etwas geändert hast, beor du den schreibvorgang startest würde unnötige dateizugriff zusätzlich minimieren.

    Gruß sik, guts nächtle