PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : verschiedene Seiten per form-tag aufrufen


klaus-maus
25.03.2005, 14:15:49
Hallo,
kleines Problemchen: ich möchte die Abfragen einer php-Seite unterschiedlich weiterverarbeiten. Leider komme ich hier nicht weiter:

Es wird immer nur blau.php aufgerufen, egal welchen Button ich drücke.
Wo ist der Fehler?

echo "<form name="blau" action="blau.php" method="get" target="_blank">";
echo "<form name="rot" action="rot.php" method="get" target="_blank">";

...

<input type="hidden" name="action" value="insert">
<input name="blau" type="submit" value="BLAU">

<input name="rot" type="submit" value="ROT">
</form>

Gruss Klaus

xabbuh
25.03.2005, 14:19:04
Du kannst mit einem Formular nur eine Seite ansteuern und keine Formulare verschachteln. Für das, was du machen möchtest, müsstest du entweder zwei getrennte Formulare erstellen oder nach dem Absenden des Formulares an eine zentrale Datei auf eine andere Datei umleiten, je nachdem, was gewünscht ist.

|Coding
26.03.2005, 02:51:28
Wie xabbuh schon richtig sagte, kannst Du das so nicht über zwei verschachtelte Formulare machen.

Was Du aber machen könntest, wäre es mit einem Formular zu realisieren (Wenn es in Deinem Falle geht):

<form action="check.php" method="get">
<input type="text" name="weitere_inputs" value="TEXT">
<input type="hidden" name="action" value="insert">
<input name="blau" type="submit" value="BLAU">
<input name="rot" type="submit" value="ROT">
</form>

check.php:

// URL-Parameterliste zusammensetzen
$params = '?';
foreach($_GET as $name => $value){
if($name != 'blau' and $name != 'rot'){
$params .= '&' . $name . '=' . $value;
}
}

// Submit == BLAU ?
if(isset($_GET['BLAU']){
header('location: http://www.deine-domain.de/blau.php' . $params);

// Submit == ROT ?
}else if(isset($_GET['ROT'])){
header('location: http://www.deine-domain.de/rot.php' . $params);

// Kein Submit - entspricht Soloaufruf
}else{
// Zum Formular umleiten
// header('location: http://www.deine-domain.de/form.html');
// oder michts machen.
}

Vielleicht ist das ja in Deinem Fall möglich. So geht es auch ohne Formulaverschachtelung.

xabbuh
26.03.2005, 09:19:27
Kann man sich bei zwei Submitbuttons 100%-ig darauf verlassen, dass der Wert des nicht angeklickten Buttons dann auch nicht übertragen wird?
Außerdem müsste es isset($_GET['blau']) bzw. isset($_GET['rot']) heißen.

feuervogel
26.03.2005, 10:37:51
Kann man sich bei zwei Submitbuttons 100%-ig darauf verlassen, dass der Wert des nicht angeklickten Buttons dann auch nicht übertragen wird?
Außerdem müsste es isset($_GET['blau']) bzw. isset($_GET['rot']) heißen.
ich meine gelesen zu haben, dass der wert des buttons nicht übertragen wird, wenn man ein form hat mit nur einem feld und dieses via <enter> abgeschickt wird...

|Coding
26.03.2005, 16:19:05
Kann man sich bei zwei Submitbuttons 100%-ig darauf verlassen, dass der Wert des nicht angeklickten Buttons dann auch nicht übertragen wird?
wäre mir neu, wenn der eine submit auch übertragen würde, obwohl er nicht geklickt wurde.

zum anderen:
die bestätigung der eingabe durch return, kann man doch mit js leicht unterbinden oder ein "alert" mit entsprechendem hinweis.

feuervogel
26.03.2005, 17:29:14
zum anderen:
die bestätigung der eingabe durch return, kann man doch mit js leicht unterbinden oder ein "alert" mit entsprechendem hinweis.
wie gut, dass ich js nicht verabscheue und es ausnahmslos von allen browsern gleichsam unterstützt wird ;-)

|Coding
26.03.2005, 18:01:28
Ich teile Deine Meinung zu JS, anders gäyts aber net :-)

Entweder mit JS und er schließt einige User vom vollen Funktionsumfang aus oder er muss komplett Umdenken, sprich eine ganz andere Lösung muss her.

Er könnte zur Konfiguration des Formulars, ja auch zwei Input's vom type "ratio" hinzufügen, welche dann die jeweils gewünschte Operation veranlassen:

<input type="ratio" name="action" value="blau">
<input type="ratio" name="action" value="rot">

Dann ginge es auch mit einem Submit-Button.

Viele Wege führen nach Rom, doch klaus-maus sollte vielleicht erst mal aussagen, ob ich mit meiner Lösung in die richtige Richtung ziele...

LittleCoder
12.05.2005, 20:24:46
Ich habe herausgefunden, dass die Entwickler bei der Einführung des Button-Elements offensichtlich etwas vergessen haben: Benutzt man normale Submit-Buttons wird deren NAME und VALUE auch übermittelt (wie typisch bei INPUT-Elementen). Ein BUTTON-Element, dass ja wohl vornehmlich selbigem Zweck dient tut eben dies nicht.
Dadurch ist eine Abfrage durch ein Script das dahinterliegt nicht mehr möglich.

Durch die Verwendung von Stylesheets lassen sich ja zum glück Input-Submits ähnlich nett gestalten wie Buttons. Das Script kann nun nach dem Post der Form abfragen welchen Wert der Button mit Namen xxx hat. Dadurch lässt sich dann für unterschiedliche Submit-Buttons unterschiedliches bewirken.

Kann nur leider keinen PHP-Code dazu anfügen, weil ich vornehmlich mit Perl arbeite. Hoffe euch trotzdem weitergeholfen zu haben.

xabbuh
12.05.2005, 21:54:58
Er könnte zur Konfiguration des Formulars, ja auch zwei Input's vom type "ratio" hinzufügen, welche dann die jeweils gewünschte Operation veranlassen:
Was ist ein ratio-Button? ;-)

Ein BUTTON-Element, dass ja wohl vornehmlich selbigem Zweck dient tut eben dies nicht.
Kann ich nicht nachvollziehen. Bei mir werden Name und Wert übermittelt. Wie hast du es denn versucht?

|Coding
12.05.2005, 22:13:21
Was ist ein ratio-Button?
Kennst Du den nicht, den guten alten ratioactiv-Button? :-)