Maxi: URL-Auswahl in Formular

Nochmal hallo ;)

Dank der Hilfe von werbeklaus und anderen netten Forummitgliedern hier konnte ich bereits ein Problem lösen - noch einmal danke ;)

Nun tauchte jedoch ein neues Problem auf... Ich habe ein kleines Quiz mit PHP und HTML erstellt, bei dem von Formular zu Formular die Daten per POST weitergeschickt werden (Punktzahl, Name usw.). Die Berechnungen werden jeweils mit PHP durchgeführt.

Problem:
--------------
Ich möchte dem Besucher verschiedene Fragengebiete anbieten. Also z.B. Frage zum Kochen oder Frage über Autos. Die Auswahl soll der Benutzer durch ein Formularelement wie z.B. einem Radio-Button treffen. Entsprechend seiner Wahl soll er bei einer anderen URL landen. Zum Beispiel 008.php für die Auto-Frage und 009.php für die Koch-Frage.
Mein Problem ist nun, dass ich absolut keine Ahnung habe wie oder wo ich die zweite URL oder die Wahlmöglichkeit einbauen soll. Die Formulardaten (die unbedingt mitgeleitet werden müssen) werden doch nur über das action-Attribut im form-Tag weitergeleitet. Ich vermute also, dass man wohl bereits vorher eine kleine PHP-Abfrage mit if-Schleife einbauen muss, dort eine Variable mit der URL als Inhalt erstellt und diese dann in das action-Attribut des form-Tags einfügt. Die If-Schleife könnte ich selbst, aber wie soll die PHP-Abfrage funktionieren?
Oder gibt es eine einfachere oder sinnvollere Lösung ?

Mein Code (Teil, der zum Versenden wichtig ist):
--------------------------------------------------
<form name="Formular01" action="007.php" method="post">

<input type="hidden" name="frage1" value="<? echo $_POST["frage1"]; ?>" />

  1. Hallo Maxi,

    Ich möchte dem Besucher verschiedene Fragengebiete anbieten. Also z.B. Frage zum Kochen oder Frage über Autos. Die Auswahl soll der Benutzer durch ein Formularelement wie z.B. einem Radio-Button treffen. Entsprechend seiner Wahl soll er bei einer anderen URL landen. Zum Beispiel 008.php für die Auto-Frage und 009.php für die Koch-Frage.

    Dein Quiz hört sich interessant an. Du könntest zum einen die gesamte Logik über ein PHP-Skript steuern. So etwas nennt sich Affenformular. Somit entfällt das Weiterleiten, was Du z.B. mit dem Senden von HTTP-Headern, siehe header() erreichen könntest.

    Mein Problem ist nun, dass ich absolut keine Ahnung habe wie oder wo ich die zweite URL oder die Wahlmöglichkeit einbauen soll. Die Formulardaten (die unbedingt mitgeleitet werden müssen) werden doch nur über das action-Attribut im form-Tag weitergeleitet.

    Für den Transport der Daten solltest Du Dich mit Sessions auseinandersetzen. Sessions erleichtern Dir die Arbeit enorm, sie sind genau dafür gedacht. Siehe dazu auch http://faq-php.de/ch/ch-version4_session.html.

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      vielen lieben Dank für die erneute blitzschnell Hilfe! Du hast wohl Rechts, dass ich mich mit Sessions befassen sollte. Beim ersten Überfliegen klingen diese genau danach, was ich brauche. Damit habe ich für heute abend auch eine schöne Lektüre ;)

      Noch mal vielen Dank für die super Hilfe!

    2. Hallo Vinzenz,

      Dein Quiz hört sich interessant an. Du könntest zum einen die gesamte Logik über ein PHP-Skript steuern. So etwas nennt sich Affenformular. Somit entfällt das Weiterleiten, was Du z.B. mit dem Senden von HTTP-Headern, siehe header() erreichen könntest.

      Ich habe die lezten Tage darüber nachgedacht, wie man einfach HTML/PHP Applikationen planen und aufbauen kann.

      Die Verwendung von header() erscheint mir dabei noch am leichtesten verständlich, insbesondere, wenn man die Dtruktur einer Webpräsenz auch suchmaschinentaugleich und human readable halten will.

      Jede Seite bekommt ein eigenes Verzeichnis, in dem eine index.phjp liegt (oder wie sie eben als Startdatei eingerichtet ist). Verlinkt wird aber immer nur auf das Verzeichnis. Das hält den Pfad zur Ressource suchmaschinengerecht und auch menschlich lesbar.

      Durch Einbau der Zugriffskontrolle im Beginn jedes Dokumentes kann nman zur Not immer auf das Anmeldeformular zurückverweisen.

      Man erspart sich durch dieses Verfahren den Mod_Rewrite und SIcherheitslücken durch fopen_wrappers.

      LG
      Chris

  2. Hallo Maxi,

    du brauchst ja nicht für jedes Fragengebiet eine neue Seite. Wenn du eh mit PHP arbeitest,
    erfährt dein Script über das $_POST-Array, welches Thema ausgewählt wurde.

    In solchen Fällen empfiehlt es sich, bei der Entwicklung einfach mal

      
    print_r($_POST);  
    
    ~~~an den Anfang des Scriptes zu schreiben.  
      
    In dass Formular-HTML kommt das hier:  
    ~~~html
      
    <form name="Formular01" action="<?php print($_SERVER['PHP_SELF']); ?>" method="post">  
    
    

    So ruft man beim Absenden des Formulars immer das PHP-Script auf, dass auch das Formular gesendet hat.

    Jetzt kannst du ein wenig mit den Formular-Einstellungen "spielen".
    Durch den print_r-Befehl siehst du, was dein PHP-Script empfängt,
    und kannst entsprechende Abfragen programmieren.

    MffG
    EisFuX

    --
    Erinnert mich ein Bisschen an die if-then-Schleifen von Java.
    (Alexandra Freund, IT-Compactkurs)
    1. Hallo EisFuX,

      vielen Dank für die schnelle Hilfe. Ich werde deinen Vorschlag und den von Vinzenz ausprobieren. Dafür muss ich mich aber erst noch etwas mit den Sessions in PHP befassen.

      Noch einmal Danke!