3 seitiges Formular - Probleme bei der Umsetzung

Endanwender

Grünschnabel
Hi zusammen,

ich bastel gerade an einem 3 seitigen Formular. Ich möchte dieses durch einen switch realisieren:
PHP:
<?php
switch($step) {
case 1:
?>
<!-- Beginn Seite 1 - Formular  -->

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
...
<input type="submit" name="nextpage" value="nächste Seite">
</form>

<!-- Ende Seite 1 - Formular  -->

<?php
break;

case 2:
?>
<!-- Beginn Seite 2 - Formular  -->

<form action="<?php $_SERVER['PHP_SELF'] ?>" method="POST">
...
<input type="submit" name="nextpage" value="nächste Seite">
</form>

<!-- Ende Seite 2 - Formular  -->

<?php
break;
case 3:
?>
<!-- Beginn Seite 3 - Formular  -->

<form action="send.php" method="POST">
...
<input type="submit" name="send" value="Abschicken">
</form>

<!-- Ende Seite 3 - Formular  -->
<?php
break;
}

Nun klappt aber die Navigation nicht. Damit meine ich, ich weiß nicht in welcher Form ich das hinbekommen, dass ich erst die Seite 1 angezeigt kriege, nach Klicken auf nächste Seite die 2.te usw. Dachte daran. es mir Sessions zu machen, bin da aber noch sehr unentschlossen! Hat dort jemand einen Lösungsvorschlag?

MFG
der Endanwender
 
Im Grunde müsstest du die eingegebenen Daten immer in hidden-Feldern mitschleifen, die gehen ja sonst bei Step 1 & 2 verloren wenn du auf den nächsten Step gehst(angenommen du hast 3 Steps).

Aber hier mal so dass es grundlegend funktioniert:

PHP:
<?php
$step = $_POST["nextstep"]; 
if(!$step) $step = 1;
switch($step) { 
case 1: 
?> 
<!-- Beginn Seite 1 - Formular  --> 

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST"> 
... 
<input type="hidden" name="nextstep" value="2" />
<input type="submit" name="nextpage" value="nächste Seite"> 
</form> 

<!-- Ende Seite 1 - Formular  --> 

<?php 
break; 

case 2: 
?> 
<!-- Beginn Seite 2 - Formular  --> 

<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="POST"> 
... 
<input type="hidden" name="nextstep" value="3" />
<input type="submit" name="nextpage" value="nächste Seite"> 
</form> 

<!-- Ende Seite 2 - Formular  --> 

<?php 
break; 
case 3: 
?> 
<!-- Beginn Seite 3 - Formular  --> 

<form action="send.php" method="POST"> 
... 
<input type="submit" name="send" value="Abschicken"> 
</form> 

<!-- Ende Seite 3 - Formular  --> 
<?php 
break; 
} 
?>

100% ungetestet!
 
Zuletzt bearbeitet:
Nein, der Parameter $step wird nicht per GET, sondern per POST übermittelt, da er im Formular steht (und dieses übermittelt in deinem Fall die Daten mittels Post)
Du bracuhst also im URL nichts übergeben, dies geschieht automatisch.

Da deine Daten aus den vorherigen Formularen immer verloren gehen werden, musst du sie über <input type="hidden" Felder mitschleifen. Oder du wählst die Alternative über eine Session, würde ich in so einem Fall aber nicht vorziehen.
 
Zuletzt bearbeitet:
Also das mit den hidden-Felder hab ich schon drin! Mit geht es vielmehr um die "Navigation".

Ich rufe nun dies Datei, sagen wir names form.php auf. Nun soll er die 1.Seite des Formulares ausrufen, d.h. ja die Variable $step muss gleich 1 gesetzt werden. Nach Drücken des Submit buttons mit dem Wert nächste Seite soll, $step um eins erhöht werden, so dass die 2.te Seite aufgerufen wird. Analog Seite 3.

Diese bisher theoretische Variante möchte ich deshalb verwenden, da ich auch eine rückwärts-navigation einbauen möchte, so dass man meinetwegen auch von der 2.te Seite zurück zu ersten gelangen kann.

Mein theoretischen Gedanken im Code:
PHP:
if(!isset($_POST['send']) && !isset($_POST['nextpage'])) {
$step = 1;
}

if(isset($_POST['nextpage'])){
$step++;
}

Aber leider funktioniert dass nicht, und mir ist im Moment nicht klar warum!

Schöne Grüße
der Endanwender
 
PHP:
if(!$_POST['page']) {
    $page = 1;
} else {
    $page = $_POST['page'];
}

//fuer rueckwaerz-navi
if($_POST['prev']) {
    $page = $_POST['prev'];
}
Im Formular schreibst du dann <input type="hidden" name="nextpage" value="x" /> ... wobei x halt für die jeweilige Seite steht. Dein zurück-Buttom: <input type="submit" name="prev" value="x" />

MfG
 
Zuletzt bearbeitet:
Zurück