Dein Vorgehen ist noch nicht ganz korrekt.
Zuerst etwas zum HTML Code:
<th col width="500" height="50">
Das ist kein valider Aufbau. Es gibt kein col Attribut für th und ab HTML5 sind width und height Attribute an Tabellenelementen auch nicht mehr zulässig, dafür nutzt man nun ausschließlich CSS.
Der korrekte Aufbau ist also einfach:
Gibt es einen bestimmten Grund dafür, dass du 2 Dokumente verwenden möchtest? Das macht die Sache nur unnötig komplizierter und der Mehraufwand macht in meinen Augen hier keinen Sinn.
Du hast jedes einzelne Input Feld mit einem form-Tag versehen. Ein form-Tag entspricht aber einem ganzen Formular und ermöglicht es logische Zusammenhänge zwischen den Eingabefeldern herzustellen. Also nur einen verwenden und unter dem action-Attribut die Datei angeben, die aufgerufen werden soll wenn das Formular abgesendet wird. Absenden kann man mit einem input Element vom Typ submit.
Da du PHP verwenden möchtest, muss der Dateiname vom .html in .php umgewandelt werden. Ich habe die Datei mal formular.php genannt. Die ungültigen Attribute und die überflüssigen Formulare habe ich gelöscht. Außerdem habe ich alles in einer Tabelle untergebracht, diese mit einem form-Tag umschlossen und das action-Attribut gesetzt, außerdem das method-Attribut auf post. Zuletzt habe ich noch einen Absenden Button eingefügt:
<form action="formular.php" method="post">
<table class="einstellung_text" border="1" cellspacing="0">
<tr class="einstellung_hintergrund_grau">
<th>Datum:</th>
<th>
<script type="text/javascript">// Javascript Datum</script>
</th>
</tr>
<tr class="einstellung_hintergrund_blau">
<th>Dienstart:</th>
<th>
<select class="Auswahl_dienstart" name="dienstart" size="1">
<option value="" select>Bitte wählen</option>
<option value="Früh">Früh</option>
<option value="Mittel">Mittel</option>
<option value="Spät">Spät</option>
</select>
</th>
</tr>
<tr class="einstellung_hintergrund_grau">
<th>Disponent:</th>
<th>
<select class="Auswahl_disponent" name="disponent" id="formular_disponent" size="1">
<option value="" select>Bitte wählen</option>
<option value="1234">Albrecht, Jens</option>
<option value="2345">Bracht, Michael</option>
<option value="3456">Coburg, Harry</option>
</select>
</th>
</tr>
<tr class="einstellung_hintergrund_blau">
<th>Personalnummer:</th>
<th>
<input class="autoPerso" name="Personalnummer" id="formular_nummer" readonly="readonly"></p>
</th>
</tr>
<tr class="einstellung_hintergrund_grau">
<th>Kategorie:</th>
<th>
<select class="Auswahl_kategorie" name="kategorie" size="1">
<option value="" select>Bitte wählen</option>
<option value="Unfall">Unfall</option>
<option value="Krankschreibung">Krankschreibung</option>
<option value="Beschwerde">Beschwerde</option>
<option value="Allg. Information">Allg. Information</option>
<option value="Weiterführung">Weiterführung</option>
<option value="sonstige Anmerkung">sonstige Anmerkung</option>
</select>
</th>
</tr>
<tr>
<th class="bericht_ueberschrift">Bericht:</th>
<td class="bericht_textarea_position">
<textarea class="bericht_text" name="user_eingabe" cols="75" rows="15" ></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="gesendet" value="Absenden">
</td>
</tr>
</table>
</form>
Alles anzeigen
Jetzt kann man anfangen mit PHP etwas Logik in die Geschichte zu bringen. Dazu muss ab jetzt ein PHP Interpreter (sprich ein Webserver oder ein CGI Script) aktiv sein um PHP verarbeiten zu können.
Ganz am Anfang der Datei hilft folgender Code nachzuvollziehen was wir verarbeiten müssen:
<pre>
<?php
print_r($_POST);
?>
</pre>
Alles anzeigen
$_POST ist ein Array, welches alle über die post-Methode gesendeten Daten enthält. Da noch nichts gesendet wurde, ist das Array leer. print_r (print recursive) kann ganze Arrays ausgeben. Wenn die Seite aufgerufen wird, steht oben über dem Formular jetzt:
Nach einem Klick auf den Absenden Button steht dort Folgendes:
Array
(
[dienstart] =>
[disponent] =>
[Personalnummer] =>
[kategorie] =>
[user_eingabe] =>
[gesendet] => Absenden
)
Jetzt ist bekannt, dass das Formular abgesendet wurde und nicht mehr angezeigt werden muss. Also eine Variable setzen die wir später abfragen können:
print_r($_POST);
if(isset($_POST['gesendet']))
$formular_anzeigen = false;
else
$formular_anzeigen = true;
Weiter unten lässt sich die Variable jetzt abfragen und dementsprechend kann das Formular ausgeblendet werden:
<?php if($formular_anzeigen): ?>
<form action="formular.php" method="post">
<!-- Formular wegen Übersicht ausgeschnitten -->
</table>
</form>
<?php else: ?>
<p>Das Formular wurde abgesendet!</p>
<?php endif; ?>
Jetzt wird das Formular nicht mehr gezeigt, wenn es bereits abgesendet wurde. Stattdessen ein Paragraph der meldet, dass das Formular gesendet wurde.
Dann kannst du eigentlich schon deinen PHP Code einfügen. Statt einer direkten Ausgabe der Meldung einfach in eine Variable speichern und diese unten ausgeben:
$dz = fopen("c:\\Users\\User_B\\Desktop\\history.csv", "a");
if(!$dz)
{
$meldung = "Datei konnte nicht zum Schreiben geöffnet werden.";
}
else
{
fputs(
$dz,
$_POST["dienstart"].";".
$_POST["disponent"].";".
$_POST["Personalnummer"].";".
$_POST["kategorie"].";".
$_POST["user_eingabe"].";\n"
);
fclose($dz);
$meldung = "Ihre Eingaben wurden gespeichert.";
}
Alles anzeigen
<?php if($formular_anzeigen): ?>
<form action="formular.php" method="post">
<!-- Formular wegen Übersicht ausgeschnitten -->
</table>
</form>
<?php else: ?>
<p><?php print $meldung; ?></p>
<?php endif; ?>
Der exit Befehl würde die Anzeige der Datei abbrechen und das wäre Unsinn. Damit niemand Unsinn in deine Datei schreiben kann, empfiehlt es sich die eingegebenen Daten noch zu bereinigen. Dafür bieten sich die Funktionen trim (entfernt unnötige Leerzeichen am Anfang und Ende), stripslashes (entfernt Maskierungszeichen) und htmlspecialchars (maskiert HTML). Damit man nicht für jede Eingabe alle drei Funktionen aufrufen muss, macht es Sinn eine eigene anzulegen. Das sieht dann etwa so aus:
function bereinigen($input)
{
return trim(stripslashes(htmlspecialchars($input)));
}
fputs(
$dz,
bereinigen($_POST["dienstart"]).";".
bereinigen($_POST["disponent"]).";".
bereinigen($_POST["Personalnummer"]).";".
bereinigen($_POST["kategorie"]).";".
bereinigen($_POST["user_eingabe"]).";\n"
);
Alles anzeigen
Die ganze Datei sieht bei mir dann etwa so aus:
<?php
if(isset($_POST['gesendet']))
$formular_anzeigen = false;
else
$formular_anzeigen = true;
$dz = fopen("c:\\Users\\User_B\\Desktop\\history.csv", "a");
if(!$dz)
{
$meldung = "Datei konnte nicht zum Schreiben geöffnet werden.";
}
else
{
function bereinigen($input)
{
return trim(stripslashes(htmlspecialchars($input)));
}
fputs(
$dz,
bereinigen($_POST["dienstart"]).";".
bereinigen($_POST["disponent"]).";".
bereinigen($_POST["Personalnummer"]).";".
bereinigen($_POST["kategorie"]).";".
bereinigen($_POST["user_eingabe"]).";\n"
);
fclose($dz);
$meldung = "Ihre Eingaben wurden gespeichert.";
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Einstellung</title>
<link rel="stylesheet" type="text/css"href="format.css">
<meta charset="utf-8">
<script>
window.addEventListener("load", function(){
document.getElementById("formular_disponent").addEventListener("change", function(event){
document.getElementById("formular_nummer").value=this.value;
});
});
</script>
</head>
<body>
<?php if($formular_anzeigen): ?>
<form action="formular.php" method="post">
<table class="einstellung_text" border="1" cellspacing="0">
<tr class="einstellung_hintergrund_grau">
<th>Datum:</th>
<th>
<script type="text/javascript">
var Jetzt = new Date();
var Tag = Jetzt.getDate();
var Monat = Jetzt.getMonth() + 1;
var Jahr = Jetzt.getYear();
var Stunden = Jetzt.getHours();
var Minuten = Jetzt.getMinutes();
var NachVoll = ((Minuten < 10) ? ":0" : ":");
if (Jahr < 2000)
Jahr = Jahr + 1900;
document.write(Tag + "." + Monat + "." + Jahr + "<\/b>");
// " + Stunden + NachVoll + Minuten + " Uhr<\/b>");
</script>
</th>
</tr>
<tr class="einstellung_hintergrund_blau">
<th>Dienstart:</th>
<th>
<select class="Auswahl_dienstart" name="dienstart" size="1">
<option value="" select>Bitte wählen</option>
<option value="Früh">Früh</option>
<option value="Mittel">Mittel</option>
<option value="Spät">Spät</option>
</select>
</th>
</tr>
<tr class="einstellung_hintergrund_grau">
<th>Disponent:</th>
<th>
<select class="Auswahl_disponent" name="disponent" id="formular_disponent" size="1">
<option value="" select>Bitte wählen</option>
<option value="1234">Albrecht, Jens</option>
<option value="2345">Bracht, Michael</option>
<option value="3456">Coburg, Harry</option>
</select>
</th>
</tr>
<tr class="einstellung_hintergrund_blau">
<th>Personalnummer:</th>
<th>
<input class="autoPerso" name="Personalnummer" id="formular_nummer" readonly="readonly"></p>
</th>
</tr>
<tr class="einstellung_hintergrund_grau">
<th>Kategorie:</th>
<th>
<select class="Auswahl_kategorie" name="kategorie" size="1">
<option value="" select>Bitte wählen</option>
<option value="Unfall">Unfall</option>
<option value="Krankschreibung">Krankschreibung</option>
<option value="Beschwerde">Beschwerde</option>
<option value="Allg. Information">Allg. Information</option>
<option value="Weiterführung">Weiterführung</option>
<option value="sonstige Anmerkung">sonstige Anmerkung</option>
</select>
</th>
</tr>
<tr>
<th class="bericht_ueberschrift">Bericht:</th>
<td class="bericht_textarea_position">
<textarea class="bericht_text" name="user_eingabe" cols="75" rows="15" ></textarea>
</td>
</tr>
<tr>
<td colspan="2">
<input type="submit" name="gesendet" value="Absenden">
</td>
</tr>
</table>
</form>
<?php else: ?>
<p><?php print $meldung; ?></p>
<?php endif; ?>
</body>
</html>
Alles anzeigen