Formular daten an gleicher Seite schicken

dg87

Erfahrenes Mitglied
Hallo, das hat jetzt keinen Sinn das Programm, weil ich ausprobieren möchte, wie das funktioniert.
Und zwar wär mein Wunsch das ganz oben an der Datei ein Switch Konstrukt ist.
Es gibt unten mehrere Buttons und der Switch Konstrukt oben soll herausfinden welcher gedrückt wurde und dann die entsprechende Funktion ausgeben.
Ich will wissen ob das so geht, andere Lösungen wie man das auswertet sind mir schon klar, aber ich will diese Version mal ausprobieren, das geht aber ich weiß ned wie.

Bsp code der nicht geht:

Datei test.php
PHP:
<?php
        switch($button)
        {
              case "login":
                 echo "einloggen geklickt<br>";
                 break;
              case "klick":
                 echo "klick<br>";
        }
?>


<html>
<head></head>
<body>
   <form action="test.php" method="get">
       <input type="submit" name="button" value="login"><br>
       <input type="submit" name="button" value="klick"><br>
   </form>
</body>
</html>

Hier ein beispiel mit Html links, da gehts ganz einfach und das gleiche will ich mit formualre gerne haben:

PHP:
  switch($_REQUEST['action'])
            { case "view":
                view();
                break;
              case "order":
                order();
                break;
              case "edit":
                edit();
                break;}

// Unten der Aufruf

<a href="'.$this->mywima->get_link().'&action=order">Weisswurscht bestellen</a><br>';
Is aus nem Programm von mir die syntax is jetzt wurscht. auf alle fälle wird hier per get die variable action auf order gesetzt, so dass der switch oben reagiert.
hoffe mir kann einer helfen
 
Zuletzt bearbeitet:
Wie wärs wenn du den Text des Buttons mit übergibst...

Und wo ist da was mit gleicher Seite

Wenn du das wissen möchtest, das geht mit $_SERVER['PHP_SELF']!!

Lg Mohag
 
Ja wie mache ich das, anhand meines beispiels, dass die switch das ausführt?
kapier das nicht ganz

Unten in Html ist das Formular, drückt man auf einen button da oben, wird ja die seite nochmal geladen und der switch soll ausgeführt werden
 
Füge doch noch ein Hidden Feld ein welches du dann mit einer if-else Abfrage überprüfst

PHP:
<?php
if ($gesendet) {        
        switch($button)
        {
              case "login":
                 echo "einloggen geklickt<br>";
                 break;
              case "klick":
                 echo "klick<br>";
        }
}

else {
        echo "<html>\n
                 <head></head>\n
                   <body>\n
                     <form action=\"test.php\" method=\"get\">\n
                     <input type=\"submit\" name=\"button\" value=\"login\"><br>\n
                     <input type=\"submit\" name=\"button\" value=\"klick\"><br>\n
                     <input type=\"hidden\" name=\"gesendet\" value=\"1\">\n
                     </form>\n
                   </body>\n
                 </html>";
}
?>
 
naja das bringt ja ned wirklich viel, der switch wird trotzdem nicht ausgeführt, probiers aus.
trotzdem danke, aber der führt die echo´s im switch dann trotzdem ned aus.

hat keiner eine lösung?
 
Also wenn die Switch-Anweisung nie ausgeführt wird, könnten das doch auch an register_globals = on/off liegen oder !!

Scheinbar enthält weder $gesendet noch $button einen Wert.
 
Nicht jeder Browser sendet den Inhalt eines Submit Buttons mit.
Daher wirst du wohl oder übel mit JavaScript oder mit zwei Formularen arbeiten müssen.
 
Mal ganz doof gefragt - kan es sein, das bei dir (wie üblich) in der PHP-Konfig. "register_globals" auf "off" gesetzt ist?

In dem Fall solltest du statt "$button" einfach maql $_GET['button'] oder eben wie in deinem zweiten Beispiel $_REQUEST['button'] ausüprobieren...
 
also wenn man drauf klickt auf den buttons sieht man unten an der url schon den wert aber switch nimmt den iwie nicht an.
muss ich das in der php.ini anstellen, meinst du ob es wirklich da dran legen kann?
 
In der php.ini gibt es einen Eintrag :

register_globals =

Wenn der auf OFF steht, werden deine Werte so nicht übergeben. Du kannst ihn zwar auf ON stellen aber aus Sicherheitsgründen besser nicht.

Prüfe lieber mit $_POST["button"] oder $_GET["button"] ob der Submitbutton angeklickt wurde.
 
Zurück