Admin-Tool für txt-Files
rainer
- php
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 ()
{
if ($datei)
{
fputs($datei, "$inhalt\_txt");
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
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
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
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
Gruesse!
ok, happy coding
Hoagie
jou, dann wolln mer mal.
Dank erst mal.
rainer
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
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
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
Hi, *uff* und *wow*bagger
mehr faellt mir da nicht zu ein. 8-\
rainer