PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Session / Form Variablen gehen verloren


DesertFox
03.02.2012, 15:09:38
Hallo, ich bin neu hier und habe gehofft mir kann hier geholfen werden.

Ich möchte Datensätze (in diesem Fall Fragen) in eine Datenbank schreiben.
Das Thema und Unterthema wird über jeweils ein Dropdown-Menü ausgewählt.
Das Unterthema passt sich an das an, was bei Thema ausgewählt wurde.
Ich habe das nicht mit Javascript realisiert. Da Thema und Unterthema eine
ID haben, muss ich diese IDs, also das Ergebnis der beiden Formulare in eine Variable
speichern und weiter unten in die Datenbank schreiben, jedoch geht der Wert aus dem
1. Formular (Thema) verloren, aber der Wert des 2. Formulars nicht.

Ich wäre für Hilfe sehr dankbar, auch über andere Möglichkeiten z.B. mit Javascript.
Hier der Code:


<?php
session_start();
?>
<title>Fragen einfügen</title>
<head></head>
<body background="bg.jpg">

<?php
echo "<form action='' target='_self' method='post' name='drop1' target='_self'>";

mysql_connect("localhost","root","") or die ("Fehler beim Verbinden mit der Datenbank.");
mysql_select_db("klassenarbeiten") or die ("Fehler beim Öffnen der Datenbank");

echo "<p>";
echo "<select name='menu1'>";
echo "<option value=''>Bitte w&auml;hen...</option>";

$query = "SELECT * FROM faecher";
$ergebnis = mysql_query($query) or die ("mysql_error()");

while($row = mysql_fetch_array($ergebnis))
{
echo "<option value='".$row["fid"]."'>".$row["Fach"]."</option>";
}

echo "</select>";
echo"<input type='hidden' name='PHPSESSID' value='<?=session_id()?>'>";
echo"<input type='submit' name='fertig1' value='Bestaetigen' size ='20' />";
echo "</p>";


echo "</form>";

if(isset($_POST['fertig1']))
{
$_SESSION['ergebnis1'] = $_POST['menu1'];
}

echo "<form action='' target='_self' method='post' name='drop2' target='_self'>";


echo "<p>";
echo "<select name='menu2'>";
echo "<option value=''>Bitte w&auml;hen...</option>";

$query = "SELECT * FROM themen INNER JOIN faecher ON themen.fid = faecher.fid WHERE faecher.fid = '{$_POST['menu1']}'";
$ergebnis = mysql_query($query) or die ("mysql_error()");

while($row = mysql_fetch_array($ergebnis))
{
echo "<option value='".$row["tid"]."'>".$row["Thema"]."</option>";
}
echo "</select>";
echo"<input type='hidden' name='PHPSESSID' value='<?=session_id()?>'>";
echo"<input type='submit' name='fertig2' value='Bestaetigen' size ='20' />";
echo "</p>";

echo "</form>";

if(isset($_POST['fertig2']))
{
$_SESSION["ergebnis2"] = $_POST["menu2"];
$fid = $_SESSION['ergebnis1'];
$tid = $_SESSION['ergebnis2'];
echo $_SESSION['ergebnis1'];
echo $_SESSION['ergebnis2'];
}

//mysql_query("INSERT INTO fragen (fid, tid, utid, frage, antwort, punkte)
//VALUES ('$fid', '$tid', '$utid', '$frage', '$antwort', '$punkte'");
session_unset();
?>
</body>
</html>

CPCoder
13.02.2012, 10:16:44
Ist ja auch logisch, dass die Werte aus dem ersten Formular verloren gehen!

Schuld daran ist diese Zeile:
session_unset();

Sobald du das erste Formular abschickst, rufst du die selbe Datei wieder auf. Beim zweiten Aufruf werden die Daten aus dem ersten Formular verarbeitet und in die Session geschrieben, am Ende des Scriptes löscht du die Session-Daten jedoch mit der besagten Code-Zeile!