Antworten auf deine Fragen:
Neues Thema erstellen

PHP Formular, dass man weiterblättern kann

maxxscho

Code-Fan

Hallo!!!

Ich bin in PHP noch ein Anfänger. Ich kann die Basics soweit und will nun für mich ein Umfrageformular erstellen.
Das Formular soll mehrere Seiten haben, d.h. ein paar Fragen und dann "weiterblättern" zu den nächsten Fragen.
Hat man den Fragebogen fertig soll er ausgewertet werden und per Mail versendet werden.
Ich hab mir bisher einige gedanken gemacht und dachte mir dass sollte doch mit einer php-Datei lösbar sein, dass immer nur bestimmte Teile des gesamten Formulares ausgegeben werden, mittels einem "if", dass den per "GET" übermittelten Status abfragt, welcher bei einem Klick auf die nächste Seite übergeben wird.
Mir geht es hierbei lediglich um einen Denkanstoß. Ich will das unbedingt selber machen, da PHP einfach geil ist.

Vielleicht kann mir ja mal jemand in die richtige Richtung weisen.

Danke schon im Voraus.
 

sokie

Mod | Web

AW: PHP Formular, dass man weiterblättern kann

ja, das kannst du so machen (deine 'weiter' schaltfläche müsste danngleichzeitig ein 'submit' sein.) auf der nächsten Seite müsstest du allerdings die vorhereingegebenen Daten in versteckte inputs schreiben, damit sie nicht verloren gehen (input type="hidden") und um mit dem nächsten submit weiterverarbeitet werden zu können.
Interessanter ist wahrscheinlich die Sache mit Sessions zu lösen - da könntest du die eingegebenen Daten in einer session ablegen, und anschliessend alle eingaben verarbeiten.
 

ChrisvA

Aktives Mitglied

AW: PHP Formular, dass man weiterblättern kann

Das Thema gab es hier vor einigen Tagen schon einmal. Da gibt es auch noch ein wenig Beispielcode:
 

maxxscho

Code-Fan

AW: PHP Formular, dass man weiterblättern kann

ja, das kannst du so machen (deine 'weiter' schaltfläche müsste danngleichzeitig ein 'submit' sein.) auf der nächsten Seite müsstest du allerdings die vorhereingegebenen Daten in versteckte inputs schreiben, damit sie nicht verloren gehen (input type="hidden") und um mit dem nächsten submit weiterverarbeitet werden zu können.
Interessanter ist wahrscheinlich die Sache mit Sessions zu lösen - da könntest du die eingegebenen Daten in einer session ablegen, und anschliessend alle eingaben verarbeiten.
Der gedanke mit den Sessions kam mir während dem Lesens deines Beitrages auch, den mit den versteckten Feldern, das könnte je nach Formular doch unnötig aufgebläht werden.
Danke erstmal.

@ChrisvA: Tut mir leid, muss diesen Thread übersehen haben.
 

maxxscho

Code-Fan

AW: PHP Formular, dass man weiterblättern kann

Gestern bin ich endlich dazu gekommen mit dem Formular zu beginnen. Wie gesagt will ich das ganze Formular in einer Datei hinkriegen und eventuell Auswertung in einer eigenen Datei.
Ich will das ganze mit Sessions machen und hab mal ein ganz rudimentäres Formular erstellt, nur um die Funktion zu testen.
Leider gehen meine Inhalte aus den Session-Array immer verloren.

Hier mal der Code, wie gesagt wirklich rudimentär und ich bin mir nicht mal sicher ob meine Idee in die richtige Richtung geht.
PHP:
<?php 
session_start();

$_SESSION["vorname"] = $_REQUEST["vorname"];
$_SESSION["nachname"] = $_REQUEST["nachname"];
$_SESSION["strasse"] = $_REQUEST["strasse"];
$_SESSION["ort"] = $_REQUEST["ort"];
$_SESSION["page"] = $_REQUEST["page"];

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=encoding">
<title>Insert title here</title>
</head>
<body>

<?php 

if (!$_SESSION["page"] || ($_SESSION["page"] == 1))
{
?>
    <form action="umfrage_test.php?page=2" method="post">
    <table border="0">
        <tr><td colspan="2">Seite 1</td></tr>
        <tr><td>Vorname:</td><td><input type="text" name="vorname" value="<?php echo $_SESSION["vorname"];?>" /></td></tr>
        <tr><td>Nachname:</td><td><input type="text" name="nachname" value="<?php echo $_SESSION["nachname"];?>" /></td></tr>
        <tr><td></td><td><input type="submit" value="weiter" /></td></tr>
    </table>
    </form>
<?php 
}

if ($_SESSION["page"] == 2)
{
?>
<form action="umfrage_test.php?page=3" method="post">
    <table border="0">
        <tr><td colspan="2">Seite 2</td></tr>
        <tr><td>Strasse:</td><td><input type="text" name="strasse" value="<?php echo $_SESSION["strasse"];?>" /></td></tr>
        <tr><td>Ort:</td><td><input type="text" name="ort" value="<?php echo $_SESSION["ort"];?>" /></td></tr>
        <tr><td><a href="umfrage_test.php?page=1" alt="Zurück">Zurück</a></td><td><input type="submit" value="weiter" /></td></tr>
    </table>
    </form>
<?php 
}

if ($_SESSION["page"] == 3)
{
    echo $_SESSION["vorname"] . "<br />";
    echo $_SESSION["nachname"] . "<br />";
    echo $_SESSION["strasse"] . "<br />";
    echo $_SESSION["ort"] . "<br />";
    echo "<a href=\"umfrage_test.php?page=2\" alt=\"Zurück\">Zurück</a>";
}
// Nur zur Kontrolle
echo "Session ID " . session_id();
echo "<br />";
echo $_SESSION["vorname"] . "<br />" . $_SESSION["nachname"] . "<br />" . $_SESSION["strasse"] . "<br />" . $_SESSION["ort"];
?>    
</body>
</html>
Vielleicht kann ja ein Wissender einen Unwissenden zurechtweisen ^^

Danke

P.S.: Kennt jemand ein Tutorial diesbezüglich? Im oben erwähnten Thread meinte ein User, er hat ein Tut gemacht, dass ist aber anscheinend nicht online oder ich finde es nicht.
 

BlackScorp

I Code for Food:D

AW: PHP Formular, dass man weiterblättern kann

beim submit, da aktualisierst du ja quasi die seite, und am anfang wird dann deine sessions auf start zurückgesetzt. ich würde das so machen:

user gibt was ein, klick auf weiter

eingabe werte des users, werden in hidden felder gespeichert

user ist auf seite 2 und tipp wieder was ein

die versteckten felder und die neue eingabe wird gepostet und wieder in hidden felder auf seite 3 gespeichert

zum schluss alle daten anzeigen.

also quasi dass du alle deine daten immer weitersendest nur nicht sichtbar für den user machst

MFG
 

maxxscho

Code-Fan

AW: PHP Formular, dass man weiterblättern kann

Ja aber das session_start bedeuted ja Start der Session bzw. Wiederaufnahme. Oder irre ich mich da.
Würde die Session jedes Mal neu gestartet werden, bekäme ich ja ne neue Session ID. Ich hab aber immer die gleiche.
In versteckte Felder will ich die Daten nicht geben, da ich finde mit Sessions ist das ganze etwas eleganter^^

Trotzdem danke
 

Chickenshooter

Alter Mann

AW: PHP Formular, dass man weiterblättern kann

Unwissenheit schützt vor Strafe nicht! Autor: unbekannt

so etwas:
PHP:
$_SESSION["vorname"] = $_REQUEST["vorname"];
$_SESSION["nachname"] = $_REQUEST["nachname"];
$_SESSION["strasse"] = $_REQUEST["strasse"];
$_SESSION["ort"] = $_REQUEST["ort"];
$_SESSION["page"] = $_REQUEST["page"];
macht man nicht!!!!!!!!!!
PHP:
$_REQUEST
kann nämlich viele Gestalten haben z.B.
PHP:
$_POST
$_GET
$_COOKIE

nutze also in Deinem Fall die Superglobale Variable
PHP:
$_POST

ersetzte der Übersichtlichkeit halber die if Konstrukte

durch einen "schönen Schalter"

PHP:
switch($_POST['page'])
{
   case:1;
    /* Code Seite 1 */
   break;
   case:2;
    /* Code Seite 2 */
   break;
   case:3;
    /* Code Seite 3 */
   break;
   default:
   /* Code, wenn $_POST['page'] nicht gesetzt ist */
   break;
}

MfG
 

Chickenshooter

Alter Mann

AW: PHP Formular, dass man weiterblättern kann

beim submit, da aktualisierst du ja quasi die seite, und am anfang wird dann deine sessions auf start zurückgesetzt.

das ist nicht "ganz" richtig, auch für Sessions muss der User
Cookies akzeptieren, denn es wird ei Session-Cookie gesetzt.

Der Cookie (so auch alle anderren Cookies der Seite) werden
bei jedem Request an den Server gesendet.

Dieser checkt die in dem Session-Cookie befindliche SessionID,
existiert diese auf dem Server wird keine neue Session gestartet,
sprich die alten Daten der Session sind noch da und können weiter
genutzt werden.

MfG
 

saila

Moderatorle

AW: PHP Formular, dass man weiterblättern kann

Hi,

wo steht, dass der User bei Session's Cookies akzeptieren muss?

Was ist eientl. zu tun, wenn keine Cookies akzeptiert werden bzgl. einer Session?
 

mommel

mv dau /dev/null

AW: PHP Formular, dass man weiterblättern kann

dann muss man die sessionid über die url transportieren
die session bleibt ja auf dem server
 

maxxscho

Code-Fan

AW: PHP Formular, dass man weiterblättern kann

Danke erst mal.
Bis auf die beschriebenen Fehler sollte mein Formular als funktionieren? Dennoch verliere ich immer den Inhalt der Session Variablen. Geb ich in der Seite 1 was ein und klick auf weiter wird es gesendet und die Variablen werden gesetzt und auf Seite 2 per echo auch ausgegeben. Fülle ich dann Seite 2 aus und klick auf weiter, habe ich die Daten aus der 2. Seite und die aus der ersten sind leer.
 

mommel

mv dau /dev/null

AW: PHP Formular, dass man weiterblättern kann

dumme Frage aber:
session_start();
steht bei dir schon drinnen oder?
 

maxxscho

Code-Fan

AW: PHP Formular, dass man weiterblättern kann

session_start hab ich gleich am Anfang stehen, siehe oben.

@saila: Du hast ja in dem oben genannten Thread von einem Tutorial gesprochen. Gibt es das hier auf homepage schon? ^^
 

mommel

mv dau /dev/null

AW: PHP Formular, dass man weiterblättern kann

Sorry hatte nichtmehr soweit hochgescrollt, aber Du überschreibst ja auch immer!!! die Werte, dann ist es kein Wunder.

Pack die Zuweisung
$_SESSION["vorname"] = $_REQUEST["vorname"];
immer nur da hin wo auch vorname im request befüllt ist sonst überschreibst du die mit nichts:
$_SESSION
["vorname"]
=''

Obendrein würd ich page nicht in die session nehmen und vielleicht auch bei Post übergaben $_POST anstatt $_REQUEST weils Fehler vermeidet

PHP:
<?php 
session_start();
$page = $_GET["page"];
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=encoding">
<title>Insert title here</title>
</head>
<body>

<?php 

if (!$page || ($page == 1))
{
?>
    <form action="umfrage_test.php?page=2" method="post">
    <table border="0">
        <tr><td colspan="2">Seite 1</td></tr>
        <tr><td>Vorname:</td><td><input type="text" name="vorname" value="<?php echo $_SESSION["vorname"];?>" /></td></tr>
        <tr><td>Nachname:</td><td><input type="text" name="nachname" value="<?php echo $_SESSION["nachname"];?>" /></td></tr>
        <tr><td></td><td><input type="submit" value="weiter" /></td></tr>
    </table>
    </form>
<?php 
}

if ($page == 2)
{
$_SESSION["vorname"] = $_POST["vorname"];
$_SESSION["nachname"] = $_POST["nachname"];
 ?>
<form action="umfrage_test.php?page=3" method="post">
    <table border="0">
        <tr><td colspan="2">Seite 2</td></tr>
        <tr><td>Strasse:</td><td><input type="text" name="strasse" value="<?php echo $_SESSION["strasse"];?>" /></td></tr>
        <tr><td>Ort:</td><td><input type="text" name="ort" value="<?php echo $_SESSION["ort"];?>" /></td></tr>
<tr><td><a href="umfrage_test.php?page=1" alt="Zurück">Zurück</a></td><td><input type="submit" value="weiter" /></td></tr>
    </table>
    </form>
<?php 
}

if ($page == 3)
{
$_SESSION["strasse"] = $_POST["strasse"];
$_SESSION["ort"] = $_POST["ort"];
     echo $_SESSION["vorname"] . "<br />";
    echo $_SESSION["nachname"] . "<br />";
    echo $_SESSION["strasse"] . "<br />";
    echo $_SESSION["ort"] . "<br />";
    echo "<a href=\"umfrage_test.php?page=2\" alt=\"Zurück\">Zurück</a>";
}
// Nur zur Kontrolle
echo "Session ID " . session_id();
echo "<br />";
echo $_SESSION["vorname"] . "<br />" . $_SESSION["nachname"] . "<br />" . $_SESSION["strasse"] . "<br />" . $_SESSION["ort"];
?>    
</body>
</html>
 
Zuletzt bearbeitet:

BlackScorp

I Code for Food:D

AW: PHP Formular, dass man weiterblättern kann

ich bin wieder mal so nett und poste mal das fertige script(habe eh nix zu tun:D):

PHP:
<?php
session_start();
if(isset($_POST["vorname"])){
$_SESSION["vorname"] = $_POST["vorname"];
}
if(isset($_POST["nachname"])){
$_SESSION["nachname"] = $_POST["nachname"];
}
if(isset($_POST["strasse"])){
$_SESSION["strasse"] = $_POST["strasse"];
}
if(isset($_POST["ort"])){
$_SESSION["ort"] = $_POST["ort"];
}
 
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=encoding">
        <title>Insert title here</title>
    </head>
    <body>
        <?php
        if(isset($_GET["page"]) ){
 
        switch($_GET["page"]) {
            case 1: {
                    $htmlCode = '
            <form action="umfrage_test.php?page='.($_GET['page']+1).'" method="post">
            <table border="0">
            <tr><td colspan="2">Seite 1</td></tr>
            <tr><td>Vorname:</td><td><input type="text" name="vorname" value="'.$_SESSION["vorname"].'" /></td></tr>
            <tr><td>Nachname:</td><td><input type="text" name="nachname" value="'.$_SESSION["nachname"].'" /></td></tr>
            <tr><td></td><td><input type="submit" value="weiter" /></td></tr>
            </table>
            </form>
            ';
 
                    break;
                }
                case 2:{
                      $htmlCode ='
                         <form action="umfrage_test.php?page='.($_GET['page']+1).'" method="post">
                        <table border="0">
                        <tr><td colspan="2">Seite 2</td></tr>
                        <tr><td>Strasse:</td><td><input type="text" name="strasse" value="'.$_SESSION["strasse"].'" /></td></tr>
                        <tr><td>Ort:</td><td><input type="text" name="ort" value="'.$_SESSION["ort"].'" /></td></tr>
                        <tr><td><a href="umfrage_test.php?page='.($_GET['page']-1).'" alt="Zurück">Zurück</a></td><td><input type="submit" value="weiter" /></td></tr>
                        </table>
                        </form>
                        ';
                        break;
                }
                case 3:{
                        $htmlCode = '
                            '.$_SESSION["vorname"].'<br />
                            '.$_SESSION["nachname"].'<br />
                            '.$_SESSION["strasse"].'<br />
                            '.$_SESSION["ort"].'<br />
                        <a href="umfrage_test.php?page=2" alt="Zurück">Zurück</a>
                        ';
                                break;
                }
 
 
        }
     echo $htmlCode;
}else{
  echo '<a href="?page=1">Zur Umfrage</a>';
}
 
        ?>
    </body>
</html>
 
Zuletzt bearbeitet:

maxxscho

Code-Fan

AW: PHP Formular, dass man weiterblättern kann

Ich glaube, er hat das von meinem vorher geposteten Code übernommen. Dieser doctype ist von eclipse generiert.

Danke übrigens für den code BlackScorp.
Werde das später mal testen.
 

saila

Moderatorle

AW: PHP Formular, dass man weiterblättern kann

session_start hab ich gleich am Anfang stehen, siehe oben.

@saila: Du hast ja in dem oben genannten Thread von einem Tutorial gesprochen. Gibt es das hier auf homepage schon? ^^

Hi,

ja das gibt es schon, allerdings ist es noch nicht von psd freigegeben. Aber das solle in den nächsten 2 Tagen erfolgen.

Das Tutorial zeigt ein Sessionhandling ohne Cookie.
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.359
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben