rainer: Admin-Tool für txt-Files

Hallo und Guten Morgen Allerseits,

irgendwie stelle ich es mir wohl doch zu einfach vor.
Das sollte ein ganz einfaches Admin-Tool fuer txt-Files werden.
Aber funktionieren tut absolut nichts.
Naja, vielleicht hab ich wieder bloss einen .(Punkt) vergessen.
Aber noch 'ne Maus ess ich nicht (an Hoagie)8-).
Hier der Quelltext:

<?
function lesen ()

{  

#Datei oeffnen und einlesen

$datei = fopen("test.txt", "r+");  
$inhalt\_txt = fread($datei, filesize("test.txt"));  

}  

echo "<form method="post" action="">";
echo "<textarea rows="15" name="text" cols="100">";
echo "$inhalt_txt";
echo "</textarea><br><br>";
echo "<input type="submit" name="Button" value="lesen" onClick="lesen()">";
echo "<input type="submit" name="Button" value="Schreiben" onClick="schreiben()">";
echo "</form>";

function schreiben ()

{  

Inhalt in Datei schreiben

if ($datei)  

{

fputs($datei, "$inhalt\_txt");  

Datei speichern und schliessen

fclose($datei);  

}  

}
?>

Schoenen Dank erstmal fuer's lesen.
Vielleicht liegt auch wo was fertiges und frei benutzbares auf 'nem Server. Dann waere ich fuer eine URL dankbar.
Gruss an alle Forumer

rainer

  1. hallo rainer!
    ich hoffe die maus hat geschmekt ;))
    so wie ich das auf den ersten blick sehe, versuchst du mit den Javascript exenthandlern auf php funktionen zuzugreifen, was meines wissens nicht geht.

    echo "<input type="submit" name="Button" value="Schreiben" onClick="schreiben()">";

    ^ das sucht eine Javascript funktion, keine php funktion.

    am einfachsten ist es, du postest das formular nochmal an die gleiche, oder eine andere seite, wo du dann das gewuenschte ausfuehrst.
    sollte es auch anders gehen, lass ich mich gerne ueberzeugen :)

    gruesse

    Hoagie

    1. Hi Hoagie,

      also mit onClick="function()" laesst sich keine Funktion in php aufrufen.

      Wie ist es mit einer html-Datei-Formular

      <form action="test.php">
      bla bla

      <input type="submit" [test.php function1()]>
      <input type="submit" [test.php function2()]>
                           ^^^^^^^^^^^^^^^^^^^^^^^hier komm ich in's schwimmen

      und in der .php die funktionen schreiben??

      Gruss

      rainer

      1. Gruesse!
        machs einfach so:
        wenn wirklich alles in einem file stehen soll, dann ruf dein file beim absenden einfach mit verschiedenen werten auf,
        z.b test.php?func=write oder test.php?func=read

        so, und nun hast du in deinem php file eine abfrage (case oder if) was er tun soll, wenn $func die jeweiligen uebergebenen parameter hat.
        z.b.:
        switch ($func)
        {
          case "write":
                function1(); //muss aber eine php funktion sein..
        break;
        case "read":
              function2();
        break;
          default:
             function2(); //oder was auch immer du da haben willst...
        }

        deine beiden funktionen im ersten posting haben schon mal ganz ok ausgesehen...

        ok, happy coding

        Hoagie

        1. Gruesse!

          ok, happy coding

          Hoagie

          jou, dann wolln mer mal.

          Dank erst mal.

          rainer

  2. Hallo rainer,

    irgendwie stelle ich es mir wohl doch zu einfach vor.

    Ja. Jedenfalls scheint dir der Ablauf nicht ganz klar zu sein.

    Der benötigte Vorgang ist dreistufig:

    1.) nach Eingeben der URL wird der PHP-Code vom Web-Server ausgeführt.
    2.) Was dabei rauskommt wird an den Browser geschickt. Der interpretiert das
        HTML und zeigt es an. Du änderst Werte im Formular und schickst das
        Formular (mit submit) an den Server.
    3.) Ein Script (kann, muss aber nicht das gleiche sein) nimmt die Formularwerte
        entgegen und speichert sie ab. Die Ausgabe dieses Scriptes wird
        anschliessend im Browser angezeigt. (Die typischen 'Danke für ihren Sermon'
        Seiten vieler Gästebücher.)

    Im folgenden gehe ich mal von 2 Scripten aus, eins, was das Formular erzeugt
    und eins, was die Submit-eten Werte verarbeitet.

    Das 1.) Script enthält das Formular, ähnlich wie du es in der Funktion
    lesen() stehen hast.
    Was fehlt ist die Action im Form (<form .... action="schreiben.php">)
    Das onClick in den Submit buttons ist Blödsinn, das ruft im Browser(!) eine
    nicht existente Javascriptfunktion schreiben() auf.

    Das 2. Script enhält folgendes:
    <html><head><title>Text Speichern</title><body>
    <?
      $datei=fopen("test.txt", "w");
      fputs($datei,$text);
      fclose($datei);
    ?>
    Vielen Dank das sich sich soviel Mühe mit dem Edieren gegeben haben.
    </body>
    </html>

    Die Variable $text wird vom Browser (<textarea name="text">) beim Submit an
    das PHP-Script übertragen.

    Zum probieren würde ich dir zu <form method=GET ....> raten. Dann werden
    die Werte in der URL übergeben und die siehst viel besser was passiert.
    (PHP ist egal, wie die Werte übertragen werden.)

    Gruss,
    Carsten

    1. Hallo Carsten,

      danke fuer die ausfuehrliche Antwort.
      Irgendwie hatte ich schon den Verdacht das ich mit einzelnen Scripten fuer schreiben und lesen arbeiten muss.
      Allerdings will ich ja den Inhalt des .txt in's Formular -textarea - einlesen, dann bearbeiten, und wieder abspeichern (das alte ueberschreiben.
      Zusaetzliches anhaengen oder davorsetzen funktioniert bestens.
      Im Moment brummt mir ein bischen alles. Sollte vielleicht doch mal 'ne Pause einlegen ;-))

      Gruss

      rainer

  3. Hallo Rainer,

    etwas "futter" zum experimentieren (aus meinem "hallo-welt-fundus *G*). Das ist so ungefähr der minimalaufwand, um eine ganz rudimentäre "txt-verwaltung" aufzubauen. Und nicht vergessen: chmod 777 auf das txt-verzeichnis, sonst gibt's mecker vom server ;)

    ---snip---

    *** FILEDEMO.HTM:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    <html>
    <head>
    <title>FILE-DEMO</title>
    </head>

    <body>

    <h3>FILE-DEMO</h3>

    <a href="file.php3?CMD=list">liste...</a><br>
    <a href="file.php3?CMD=new">neu...</a><br>
    <a href="file.php3?CMD=edit">bearbeiten...</a><br>
    <a href="file.php3?CMD=del">löschen...</a><br>

    </body>
    </html>

    *** FILE.PHP

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    <html>
    <head>
    <title>FILE-DEMO</title>
    </head>

    <body>
    <a href="filedemo.htm">MENU...</a>
    <br><br>

    <?php
    $basedir= "/website/htdocs/lab/php3/file/";
    //$basedir= "/home/www/wowbagger/lab/php/file/";

    $wildcard= "^demo[0-9]+.txt$";

    function cmd_list($sub_cmd) {
    $fstr= $GLOBALS["basedir"].".";
    $handle= opendir($fstr);
    while ($entry= readdir($handle)) {
    if (!is_dir($entry) && eregi($GLOBALS["wildcard"], $entry)) {

    if ($sub_cmd=="del") {
       $reg= eregi("[0-9]+", $entry, $regs);
       echo "<a href='file_act.php3?CMD=del&SUB_CMD=". $regs[0] ."'>";
      }
      if ($sub_cmd=="edit") {
       $reg= eregi("[0-9]+", $entry, $regs);
       echo "<a href='file_act.php3?CMD=edit&SUB_CMD=". $regs[0] ."'>";
      }
      echo $entry."<br>";
      if ($sub_cmd=="del" $sub_cmd=="edit") echo "</a>";
    }
    }
    closedir($handle);
    }

    switch ($CMD) {

    case "new": //********** NEW
    ?>
    <form name="form" action="file_act.php3?CMD=new" method="POST">
    INHALT:<br>
    <textarea name="content" cols="50" rows="10"></textarea>
    <br>FILE_ID:
    <select name="file_ID">
    <?php
    for ($i=1;$i<11;$i++) {
      echo "<option value='". $i . "'>". $i;
    }
    ?>
    </select>

    <br><br>
    <input type="submit" value="abschicken">
    </form>
    <?php
    break;

    case "list": //********** LIST
    cmd_list("list");
    break;

    case "del": //********** DELETE
    cmd_list("del");
    break;

    case "edit": //********** EDIT
    cmd_list("edit");
    break;

    }
    ?>

    </body>
    </html>

    *** FILE_ACT.PHP

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    <html>
    <head>
    <title>FILE-DEMO</title>
    </head>

    <body>
    <a href="filedemo.htm">MENU...</a>
    <br><br>

    <?php
    $basedir= "/website/htdocs/lab/php3/file/";
    //$basedir= "/home/www/wowbagger/lab/php/file/";

    switch ($CMD) {

    case "new": //********** NEW
    $fstr= $basedir."demo".$file_ID.".txt";
    $handle= fopen($fstr, "w");
    fputs($handle, $content);
    fclose($handle);
    break;

    case "del": //********** DELETE
    $fstr= $basedir."demo".$SUB_CMD.".txt";
    unlink($fstr);
    break;

    case "edit": //********** EDIT
    $fstr= $basedir."demo".$SUB_CMD.".txt";
    $handle= fopen($fstr, "r");
    $content= fread($handle, filesize($fstr));
    fclose($handle);

    echo "<form name='form' action='file_act_sub.php3?CMD=edit&SUB_CMD=". $SUB_CMD. "' method='POST'>";
    ?>
    INHALT:<br>
    <textarea name="content" cols="50" rows="10">
    <?php
    echo $content;
    ?>
    </textarea>

    <br><br>
    <input type="submit" value="abschicken">
    </form>
    <?php
    break;

    }
    ?>

    </body>
    </html>

    *** FILE_ACT_SUB.PHP

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

    <html>
    <head>
    <title>FILE-DEMO</title>
    </head>

    <body>
    <a href="filedemo.htm">MENU...</a>
    <br><br>

    <?php
    $basedir= "/website/htdocs/lab/php3/file/";
    //$basedir= "/home/www/wowbagger/lab/php/file/";

    switch ($CMD) {

    case "edit": //********** EDIT
    $fstr= $basedir."demo".$SUB_CMD.".txt";
    $handle= fopen($fstr, "w");
    fputs($handle, $content);
    fclose($handle);
    break;

    }
    ?>

    </body>
    </html>

    ---snap---

    Bis denn...
    /*,*/
    Wowbagger

    1. Hi, *uff* und *wow*bagger

      mehr faellt mir da nicht zu ein. 8-\

      rainer