Hallo liebes Forum,
nach mehreren Tagen intensiver Überlegung und dem Aufbau einer sehr einfach gehaltenen Testumgebung komme ich trotzdem nicht weiter. Deshalb bitte ich um Eure Unterstützung.
Vor ein paar Tagen habe ich dieselbe Frage schon einmal ins Netz gestellt und geglaubt, nach einem Tipp von „Bandit“ die Lösung gefunden zu haben. Zu früh gefreut.
Das Problem von „verschachtelten Formularen“ mit HTML und PHP scheint nicht so einfach zu lösen zu sein. Zumindest nicht für mich! Die 4 Scripte mit 2 verschachtelten Formularen habe ich angefügt. Zur besseren Überprüfung des Gesamtablaufs bestehen die Scripte, bis auf zwei INCLUDE – Anweisungen, eigentlich nur aus ECHO-Befehlen. Außerdem habe ich den Browserablauf festgehalten und als Bilder beigelegt.
Das Script-2 soll den gesamten Ablauf aller Folgescripte steuern. Leider komme ich nach dem Aufruf des 2. Formulars nicht mehr in das Script-2 zurück. Das war es schon, das ist mein Problem!
Mit HTML-Mitteln kann man zwei Formulare nicht steuern. Den Tipp von „Bandit“ eine SESSION-Steuerung über PHP zu nutzen habe ich befolgt, leider habe ich aber Verständnisprobleme.
Kann mir jemand – möglichst KONKRET – und nicht mit angedeuteten Lösungsansätzen weiterhelfen?
Browserablauf:
Hier die 4 Scripte:
test1.php
<html>
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<head>
<link rel="stylesheet" type="text/css" href="../../formatierung.css">
<script type="text/javascript">
</script>
</head>
<body>
<h2>Test1</h2>
<!-- test1.php Formulareingabe (Personalanzahl) zur gesamten Scripte-Verarbeitung -->
<!-- test2.php ist die Hauptsteuerung aller einzelnen Scripte -->
<form action = "test2.php" method = "post">
<b>1 Daten auswählen und abschicken</b></br></br>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
$zaehler = 1;
SESSION_START();
$_SESSION['zaehler'] = $zaehler;
echo "Script-1 - session_zaehler: " . $_SESSION['zaehler'];
echo "<br /";
?>
<b> </br>
<b>Personenanzahl auswählen:</br></br>
<?php
echo "<select name=\"personen\" size=\"1\">\n";
for($a=1; $a<21; $a++)
{if($anzpers == $a)
{ echo "<option selected>".$a."</option>\n"; }
else
{ echo "<option>".$a."</option>\n"; }
}
echo "</select>\n";
?>
<p><input type="submit" name="gesendet" />
<input type="reset" /></p>
</form>
</body>
</html>
Alles anzeigen
test2.php
<html>
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<head>
<link rel="stylesheet" type="text/css" href="../../formatierung.css">
<script type="text/javascript">
</script>
<!-- test2.php verarbeitet die Auswahl "Personenanzahl" und steuert alle Folgescripte
<!-- passend zur "Personenanzahl" sollen aus einer MySQL-Tabelle Datensätze gelesen -->
<!--und zur weiteren Auswahl angeboten werden -->
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(!isset($_SESSION))
{
SESSION_START();
$gesendet = $_POST['gesendet'];
$_SESSION['gesendet'] = $gesendet;
}
$_SESSION['zaehler'] = $_SESSION['zaehler'] + 1;
echo "Script-2.1 - session_zaehler: " . $_SESSION['zaehler'];
echo "<br /";
/* der folgende ECHO-Befehl erscheint nicht */
echo "Script-2.2 SESSION_gesendet: " . $_SESSION['gesendet'];
echo "<br /";
if (isset($_SESSION['gesendet']))
{
INCLUDE "c:/xampp/htdocs/restaurant/oeffnen_datenbank.php";
/* ******************** Aufruf - test3.php zur Auswahl des Tisches *****************/
INCLUDE "test3.php";
/* Weiterverarbeitung nur, falls Daten gefunden wurden */
if (isset($_SESSION['gesendet']))
{
echo "Script-2.3 SESSION_gesendet: " . $_SESSION['gesendet'];
echo "<br /";
/* *************** Aufruf - test4.php zur Auswertung der Tischauswahl ********************/
INCLUDE "test4.php";
/*
wäre sehr schön, wenn der Rücksprung aus test4.php klappen würde.
Die beiden folgenden Echo-Befehle werden nur beim Aufruf von test2.php ausgegeben.
hier würde ich gerne weitere INCLUDE-Befehle zur Folgeverarbeitung einbauen
*/
echo "Script-2.4 zurück aus Script-4";
echo "<p><font color='#ff0000'>";
echo "Die Dateneingabe wurde erfolgreich verarbeitet";
echo "</font></p>";
}
}
?>
</head>
<body>
</body>
</html>
Alles anzeigen
test3.php
<html>
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<link rel="stylesheet" type="text/css" href="../formatierung.css">
<script type="text/javascript">
</script>
<body>
<!-- test3.php erhält die Personenanzahl und liest passende Daten aus einer MySQL-Tabelle -->
<!-- dann werden passende Datensätze zur Auswahl und Verarbeitung in test4.php ausgegeben -->
<!-- Achtung - test4.php wird AUCH durch einen INCLUDE in test2.php aufgerufen -->
<form action = "test4.php" method = "post">
<?php
if(!isset($_SESSION))
{
SESSION_START();
}
$_SESSION['zaehler'] = $_SESSION['zaehler'] + 1;
echo "Script-3.1 - session_zaehler: " . $_SESSION['zaehler'];
echo "<br /";
if (isset($_POST['tisch']))
{
echo "Script-3.2 ausgewählt wurde der Tisch: " . $_POST['tisch'];
echo "<br /";
}
else
{
echo "<br /";
echo "<p>Wählen Sie einen Datensatz aus</p>";
$con = mysqli_connect("","root");
mysqli_select_db($con, "restaurant");
$res = mysqli_query($con, "select * from zwischenspeicher");
// Tabellenbeginn
echo "<table border='1'>";
// Überschrift
echo "<tr> <td>ID</td> <td>Datum</td> <td>Zeit-von</td>
<td>Zeit-bis</td><td>Anz-Pers</td><td>Tisch</td> <td>auswählen</td></tr>";
while ($dsatz = mysqli_fetch_assoc($res))
{
echo "<tr>
<td>" . $dsatz['zw_id'] . "</td>
<td>" . $dsatz['zw_datum'] . "</td>
<td>" . $dsatz['zw_zeitvon'] . "</td>
<td>" . $dsatz['zw_zeitbis'] . "</td>
<td>" . $dsatz['zw_anzpers'] . "</td>
<td>" . $dsatz['zw_tisch'] . "</td>
<td> <input type='radio' name='tisch' value='" . $dsatz['zw_tisch'] . "' /></td>
</tr>";
}
// Tabellenende
echo "</table>";
mysqli_close($con);
}
?>
<p><input type="submit" value="Datensatz auswählen" /></p>
</form>
<?php
echo "<br /";
echo "Script-3.3 - hier komme ich nicht hin";
?>
</body>
</html>
Alles anzeigen
test4.php
<html>
<?php
header('Content-Type: text/html; charset=utf-8');
?>
<link rel="stylesheet" type="text/css" href="../../formatierung.css">
<script type="text/javascript">
</script>
<body>
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
if(!isset($_SESSION))
{
SESSION_START();
$zaehler = $_SESSION['zaehler'];
$zaehler = $zaehler + 1;
}
if (isset($_POST['tisch']))
{
/* das ist die Auswahl aus SCRIPT-3 */
$_SESSION['tisch'] = $_POST['tisch'];
echo "4.1 session_tisch: " . $_SESSION['tisch'];
echo "<br /";
echo "Script-4.2 SESSION_auswahl aus Script-3 ist: " . $_POST['tisch'];
echo "<br />";
$_SESSION['zaehler'] = $_SESSION['zaehler'] + 1;
echo "Script-4.3 - session_zaehler: " . $_SESSION['zaehler'];
echo "<br />";
echo "und jetzt würde ich gerne zur Hauptsteuerung - test2.php zurückkehren, aber wie?";
echo "<br />";
}
?>
</body>
</html>
Alles anzeigen
für einen funktionierenden Lösungsansatz bin ich sehr dankbar, aber bitte keine philosophischen Abhandlungen.