wal
Erfahrenes Mitglied
Hallo,
hier mal etwas Kniffeliges (jedenfalls für mich :-( ), aber vielleicht weiss jemand von euch Rat.
Folgendes Szenario:
Ich würde gerne ein Datenbankgestützes Glossar bauen, mittels PHP und MySQL. Dementsprechend habe ich eine PHP Seite (test.php) und eine HTML Seite (test.html) erstellt.
Das Problem was ich momentan habe ist, das wenn ich die Eingabe überprüfen lassen vom php-script ich die Eingabe nicht mehr mit dem "Zurücksetzen" Button löschen kann. Das heisst, immer wenn zuerst der Button "Abschicken" gedrückt wurde, kann ich das ganze Formular nicht mehr in den Ursprungszustand bringen.
Anbei habe ich mal die beiden Seiten angehängt:
HTML Seite:
Und hier nun die dazugehörige PHP Seite:
Wenn Fragen zum Coding bestehen, Frage mich bitte einfach.
Wenn jemand von euch Profis mir einen Tipp oder Hilfe geben kann wäre das super.
Vielen Dank für eure Bemühungen schon mal vorab.
hier mal etwas Kniffeliges (jedenfalls für mich :-( ), aber vielleicht weiss jemand von euch Rat.
Folgendes Szenario:
Ich würde gerne ein Datenbankgestützes Glossar bauen, mittels PHP und MySQL. Dementsprechend habe ich eine PHP Seite (test.php) und eine HTML Seite (test.html) erstellt.
Das Problem was ich momentan habe ist, das wenn ich die Eingabe überprüfen lassen vom php-script ich die Eingabe nicht mehr mit dem "Zurücksetzen" Button löschen kann. Das heisst, immer wenn zuerst der Button "Abschicken" gedrückt wurde, kann ich das ganze Formular nicht mehr in den Ursprungszustand bringen.
Anbei habe ich mal die beiden Seiten angehängt:
HTML Seite:
PHP:
<html>
<HEAD>
<TITLE>Test - Eingabeformular</TITLE>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
</HEAD>
<body bgColor="#ffffff">
<form name="glossar" action="test.php" method="post">
<table cellspacing=1 cellpadding=0 width="100%" border=0>
<tr>
<td class=font_owner>Eingabe eines neuen Begriffs: <!--incomplete data--></td>
</tr>
<tr>
<td class=t_content> <table cellspacing=5 cellpadding=0 width="100%" border=0>
<tr>
<td width="30%" class=blue_bold> Begriff (deutsch): <!-- beg_deufehler --></td>
<td width="70%" class=blue_bold><input type="text" name="beg_deu" size="100"></td>
</tr>
<tr>
<td width="30%" class=blue_bold> Begriff (englisch): <!-- beg_engfehler --></td>
<td width="70%" class=blue_bold><input type="text" name="beg_eng" size="100"></td>
</tr>
<tr>
<td width="30%" class=blue_bold> Datum:</td>
<td width="70%" class=blue_bold><input type="text" name="datum" value="Wird vom System vergeben" size="100"></td>
</tr>
</table>
<input type="submit" value="Abschicken" name="anlegen">
<input type="reset" value="Zurücksetzen" name="loeschen">
</form>
</body>
</html>
Und hier nun die dazugehörige PHP Seite:
PHP:
<?php
session_start();
session_register('refresh');
$textinputs=Array("beg_deu","beg_eng","datum");
$pflichtfelder=Array("beg_deu","beg_eng");
$pflichtfehler=Array();
//print_r($_POST); // Testausgabe der Forumlareingabe (Array wird ausgegeben)
$done=false;
//könnte im Formular mit reset behandelt werden
if (isset($_POST["loeschen"])) {
displayStart();
$done=true;
}
// Eingaben werden überprüft
if (!$done) {
if (isset($_POST["anlegen"])) {
if (!checkFields()) {
displayStartAgain();
}
else {
if ($_SESSION['refresh']==implode(";",$_POST)) {
displayEnd(true);
$done=true;
}
else {
displayEnd($ok);
}
}
$done=true;
}
}
$_SESSION['refresh']=implode(";",$_POST);
// erster Ausruf
if (!$done) {
displayStart();
$done=true;
}
// Start-HTML ausgeben (1:1 - Wiedergabe der HTML-Datei mit fpassthru)
function displayStart() {
$fileName="test.htm";
$fp=fopen($fileName,"rb");
fpassthru($fp);
fclose($fp);
}
// Ende-HTML ausgeben
function displayEnd($ok) {
// HTML lesen
$fileName="ende.htm";
$fp=fopen($fileName,"rb");
$s_Inhalt=fread($fp, filesize($fileName));
fclose($fp);
// Text für Erfolg/Misserfolg festlegen
if ($ok)
$message="Deine Ergebnisse wurden erfolgreich gespeichert!";
else
$message="Deine Ergebnisse konnten nicht gespeichert werden!";
// Message im HTML ersetzen
$muster="<!-- message -->";
$replace=$message;
$s_Inhalt=str_replace($muster,$replace,$s_Inhalt);
// HTML ausgeben
echo $s_Inhalt;
}
// Function unvollst. Eingabe
function displayStartAgain() {
global $options;
global $textinputs;
global $pflichtfehler;
$fileName="test.htm";
$fp=fopen($fileName,"rb");
$s_Inhalt=fread($fp, filesize($fileName));
fclose($fp);
$muster="<!--incomplete data-->";
$replace="<font color='red'>Bitte Eingabe kontrollieren!</font><br>";
$s_Inhalt=str_replace($muster,$replace,$s_Inhalt);
$muster="<body bgColor=\"#ffffff\">";
$replace="<body bgColor=\"#ffffff\" onload=\"document.glossar.".$pflichtfehler[0][2].".focus()\">";
$s_Inhalt=str_replace($muster,$replace,$s_Inhalt);
// Inhalte bearbeiten
$muster="checked value=";
$replace="value=";
$s_Inhalt=str_replace($muster,$replace,$s_Inhalt);
for ($i=0; $i<sizeof($pflichtfehler); $i++) {
$muster=$pflichtfehler[$i][0];
$replace=$pflichtfehler[$i][1];
$s_Inhalt=str_replace($muster,$replace,$s_Inhalt);
}
//<input type="text" name="abk_deu" value="Abkürzung auf deutsch eingeben" size="100">
for ($i=0; $i<sizeof($textinputs); $i++) {
if (isset($_REQUEST[$textinputs[$i]])){
$muster="/<input type=\"text\" name=\"".$textinputs[$i]."\"(.*)>/U";
$replace="<input type=\"text\" name=\"".$textinputs[$i]."\" value=\"".$_POST[$textinputs[$i]]."\">";
$s_Inhalt=preg_replace($muster,$replace,$s_Inhalt);
}
}
echo $s_Inhalt;
}
// Felder checken ob korrekt gefüllt
function checkFields() {
global $pflichtfelder;
global $pflichtfehler;
$allok=true;
for ($i=0; $i<sizeof($pflichtfelder); $i++) {
$ok=false;
if (isset($_POST[$pflichtfelder[$i]])) {
if ($_POST[$pflichtfelder[$i]]!="" && ($_POST[$pflichtfelder[$i]]!="Begriff auf deutsch eingeben" || $_POST[$pflichtfelder[$i]]!="Begriff auf englisch eingeben")) {
$ok=true;
}
}
if (!$ok) {
$allok=false;
array_push($pflichtfehler,Array("<!-- ".$pflichtfelder[$i]."fehler -->","<font color='red'>Bitte ausfüllen!</font>",$pflichtfelder[$i]));
}
}
return $allok;
}
?>
Wenn Fragen zum Coding bestehen, Frage mich bitte einfach.
Wenn jemand von euch Profis mir einen Tipp oder Hilfe geben kann wäre das super.
Vielen Dank für eure Bemühungen schon mal vorab.