Scripte
Michael W.
- php
0 TOM0 Sven Rautenberg
hallo,
ich habe auf http://mitglied.lycos.de/djwoelk3/test/index.php ein problem:
ich habe folgende 3 datein:
index.php:
---------
<html>
<head>
<title>Neue Seite 1</title>
</head>
<body>
<form action="save.php">
<textarea cols="80" rows="6" name="Content">
<?php
$file = "text.txt";
$data = fopen($file, "r");
$count = fread($data, filesize($file));
fclose($data);
echo $count;
?>
</textarea>
<br />
<input type="submit" value="jetzt will ich gespeichert werden" />
</form>
</body>
</html>
----------
save.php:
---------
$file = "text.txt";
$data = fopen($file, "w");
fwrite($data, $Content);
fclose($data);
---------
text.txt:
---------
text bla bla bla
---------
Meine frage: ist das so üblich das man scripte in eine externe .php speichert.
kann ich die save.php nicht irgendwie in die index.php einbinden ?
sers
hab nicht alles gelesen - nur so von vornherein - bin zu faul gg
aber auf deine letzte frage:
nein es ist üblich das ganze in eine datei zu packen...
du machste ne hidden-variable in dein formular
die z.B. vonForm heißt und value = 1 oder so
ok wenn also deine datei aufgerufen ist if(isset($VonForm)) wahr ist (und wenn du auf nr. sicher gehen willst $VonForm = 1 ist) dann soll er speichern - point -das wars ;)
thx TOM
sers
hab nicht alles gelesen - nur so von vornherein - bin zu faul gg
aber auf deine letzte frage:
nein es ist üblich das ganze in eine datei zu packen...
du machste ne hidden-variable in dein formular
die z.B. vonForm heißt und value = 1 oder so
ok wenn also deine datei aufgerufen ist if(isset($VonForm)) wahr ist (und wenn du auf nr. sicher gehen willst $VonForm = 1 ist) dann soll er speichern - point -das wars ;)
thx TOM
hä ?
kannst du mir mal ein beispiel für mein Formular geben ?
(bin noch anfänger - kann nur aus fertigen quelltxten lernen, was du geschrieben hast sagt mir ehrlich geagt nix :o )
Moin!
Meine frage: ist das so üblich das man scripte in eine externe .php speichert.
kann ich die save.php nicht irgendwie in die index.php einbinden ?
Es gibt grundsätzlich zwei Methoden, um Formulardaten zu verarbeiten:
1. Deine Methode. Script A schreibt das Formular, Script B verarbeitet die Daten. Oder als Extremversion: Script A schreibt das Formular, Script B schickt die Bestätigungsseite zur Kontrolle, Script C prüft die Daten auf Plausibilität, und Script D schreibt die Daten endlich in die Datenbank.
Vorteil dieser Methode: Ein Arbeitsschritt ist in genau einem Script enthalten - Anfänger behalten den Überblick innerhalb eines Scripts.
Nachteil: Man hat tausende Scripte, bei denen man den Gesamtüberblick behalten muß, was schwierig ist. Außerdem muß man mit ziemlicher Sicherheit Code (z.B. HTML-Formulare) doppelt anlegen, was bei Änderungen doppelte Arbeit bedeutet (wenn man es nicht ohnehin vergißt).
2. Die IMHO bessere Methode: Nur eine einzige PHP-Datei für eine große Aufgabe benutzen.
Innerhalb dieses Scriptes wird mit IF-Abfragen geprüft, welche Aktion denn genau gestartet werden soll. Die Aktionen können z.B. vom empfangenen Formular abhängen. Beispiel:
<?php
if ($HTTP_SERVER_VARS['REQUEST_METHOD']=='POST')
{
// Hier Formularprüfung einbauen
formular_ok=true; // Aber nur, wenn das Formular so ok ist
}
if (formular_ok)
{
// Hier die Aktion einbauen: Mail abschicken, Datenbank füllen o.ä.
echo "Ihre Daten wurden verarbeitet.";
}
else
{?>
<form action="<?php echo $PHP_SELF; ?>" method="POST">
<input type="text" name="feld1" value="<?php echo $HTTP_POST_VARS['feld1']; ?>">
<input type="submit" value="Abschicken">
</form>
<?php } ?>
Wenn das Script zum ersten mal aufgerufen wird, wurde kein Formular abgeschickt. Also wird auch die Formularprüfung übersprungen, das Formular kann nicht OK sein, folglich wird das Formular ausgegeben. Da keine Formulardaten abgeschickt wurden, ist $HTTP_POST_VARS leer, und auch der Value des Feldes. Ergebnis: Es wird ein leeres Formular ausgegeben.
Wenn das Formular abgeschickt wird, wird die Formularprüfung aktiv. Am Ende kann die Variable $formular_ok falsch sein. Dann wird erneut das Formular, jetzt mit bereits eingegebenem Inhalt, angezeigt.
Ist die Prüfung erfolgreich, wird kein Formular mehr angezeigt.
Mit dieser Programmierart verhinderst du gleichzeitig, daß man einzelne Skripte direkt aufrufen kann, ohne daß die Voraussetzungen dafür gegeben sind. Was wäre z.B., wenn jemand ein Datenbankeintragskript immer und immer wieder ohne Daten aufrufen würde? Entstehen dann leere Einträge? Mit der All-In-One-Methode würde der Programmteil "Datenbankeintrag" nur dann aufgerufen, wenn wirklich Daten abgeschickt werden, ansonsten kommt ein leeres Formular. Und das macht Sinn. ;)
- Sven Rautenberg
Jo auch Moin,
1. was habe ich falsch gemacht in save.php und
2. HÄÄÄ ???? ich verstehs nich ganz !!! was muss ich in mein Forumlar reinschreiben damit der text den ich diesem textfeld verfasse auch in der text.txt gespeichert wird und logischer weise dann neu im textfeld steht zb.:
index.php:
Textfeld: [text.txt (der inhalt der text.txt wird aufgerufen)] text bla bla bla
Neuer Text: Neuer Text bla bla --> Speichern
Textfeld: [text.txt (der inhalt der text.txt wird erneut aufgerufen)] Neuer Text bla bla
Der inhalt der text.txt hat sich von "text bla bla bla" auf " neuer text bla bla" geändert
_WIE_ stelle ich das mit dem Formular in der index.php an ?
Jo auch Moin,
- was habe ich falsch gemacht in save.php und
Hast du was falsch gemacht? Deine Frage war, ob man üblicherweise ein oder mehrere Skripte nimmt. Antwort: Lieber eines.
- HÄÄÄ ???? ich verstehs nich ganz !!! was muss ich in mein Forumlar reinschreiben damit der text den ich diesem textfeld verfasse auch in der text.txt gespeichert wird und logischer weise dann neu im textfeld steht zb.:
Nimm mein Beispiel. Bastel <html><head><body>... etc drumherum. Gebe ein wenig Code zusätzlich ein, um Prüfungen zu simulieren. Teste. Und sieh', was passiert.
index.php:
Textfeld: [text.txt (der inhalt der text.txt wird aufgerufen)] text bla bla bla
Neuer Text: Neuer Text bla bla --> Speichern
Textfeld: [text.txt (der inhalt der text.txt wird erneut aufgerufen)] Neuer Text bla bla
Das ist im Prinzip garkein Problem. Ablaufschema:
Ziemlich simpel, oder? Die einzelnen Elemente hast du doch schon mal programmiert.
- Sven Rautenberg
Jo auch Moin,
- was habe ich falsch gemacht in save.php und
Hast du was falsch gemacht? Deine Frage war, ob man üblicherweise ein oder mehrere Skripte nimmt. Antwort: Lieber eines.
- HÄÄÄ ???? ich verstehs nich ganz !!! was muss ich in mein Forumlar reinschreiben damit der text den ich diesem textfeld verfasse auch in der text.txt gespeichert wird und logischer weise dann neu im textfeld steht zb.:
Nimm mein Beispiel. Bastel <html><head><body>... etc drumherum. Gebe ein wenig Code zusätzlich ein, um Prüfungen zu simulieren. Teste. Und sieh', was passiert.
index.php:
Textfeld: [text.txt (der inhalt der text.txt wird aufgerufen)] text bla bla bla
Neuer Text: Neuer Text bla bla --> Speichern
Textfeld: [text.txt (der inhalt der text.txt wird erneut aufgerufen)] Neuer Text bla bla
Das ist im Prinzip garkein Problem. Ablaufschema:
- Wenn Formular gesendet wird, dann die Daten speichern:
- Datei öffnen
- Daten schreiben
- Datei schließen- In jedem Falle: Das Formular mit dem Dateiinhalt aufbereiten:
- Datei öffnen
- Daten lesen
- Datei schließen
- Daten in den Value vom Input oder zwischen die <textarea> schreiben (dabei htmlspecialchars() benutzen!).
ich hab doch kein plan wo das da hin muss - wenn ich das ja wenigstens einmal gesehen hätte oder beispiele hätte dann wäre das ja ok - wohger soll ich mir denn die kenntnisse nehmen ?
kannst du mir nicht sagen wo ich das im formular hinschreiben muss und auch was denn http://mitglied.lycos.de/djwoelk3/test/sven.php deines letzten beitrages hilft mir gerade nicht :( guck noch mal - da stimmt was nicht :
sven.php:
--------
<html>
<head>
<title>sven</title>
</head>
<body>
<?php
if ($HTTP_SERVER_VARS['REQUEST_METHOD']=='POST')
{
// Hier Formularprüfung einbauen
formular_ok=true; // Aber nur, wenn das Formular so ok ist
}
if (formular_ok)
{
// Hier die Aktion einbauen: Mail abschicken, Datenbank füllen o.ä.
echo "Ihre Daten wurden verarbeitet.";
}
else
{?>
<form action="<?php echo $PHP_SELF; ?>" method="POST">
<input type="text" name="feld1" value="<?php echo $HTTP_POST_VARS['feld1']; ?>" size="20">
<input type="submit" value="Abschicken">
</form>
<?php } ?>
</body>
</html>
------
???
Danke
Der ansatz von http://mitglied.lycos.de/djwoelk3/test/test2.php war doch schon ganz gut. nur was kommt in das formular rein damit beim klicken auf den speicher-button auch die daten in die text.txt gespeichert werden ? Das das in die text.txt geschriebn wird ist wichtig, denn in dem MA-System http://mitglied.lycos.de/djwoelk3/index2.htm (der link in der mitte) werden die daten der einzelnen text-dateien wieder ausgelesen.
Es soll den Schülern ermöglichen die Texte beliebig oft zu ändern.
Danke :o *schweis_abwischend* und *hoffend_die_lösung_endlich_gebacken_zu_kriegen*