selbsterstellte buttons in formular abfragen

bombbass

Grünschnabel
hallo, habe mehrere, selbst erstellte Buttons nebeneinander in einem formular aufgestellt:
hier ein teil vom code (nur zwei Buttons);
Code:
<form action="index.php" method="post">

          <button type="submit" name="praxis" value="Submit"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_praxis" src="pics/button_praxis.jpg" >
          </button>

          <button type="submit" name="team" value="Submit"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_team" src="pics/button_team.jpg" >
          </button>

</form>

wie frage ich nun ab, welches Button angeklickt wurde?
mit php habe ich es nicht hinbekommen:

PHP:
if(isset($_POST['praxis']))
        echo 'Praxis_Button angeklickt';
     else
        echo 'Team_Button angeklickt';

egal, was ich anklicke, als ergebnis kommt immer 'Praxis_Button angeklickt' :confused:

müsste doch eigentlich so klappen, oder :mad:

danke für eure hilfe...
gruß
bombbass
 
Lass mich raten: Internet Explorer. Ich lasse es mal lieber meine Gedanken dazu in Worte zu fassen.

Du wirst wohl auf eine andere Methode zurückgreifen müssen, um eine grafische Absendeschaltfläche umzusetzen.
 
Hi bombbass,

versuchs mal mit nem "normalen" <input type= ...etc

<input type="submit" name="submit_praxis" value=" " style="width:153px;height:25px;border:0;background-image:url(pics/button_praxis.jpg);">

Habs nicht ausprobiert, das überlass ich dir ;)

mfg
 
PHP:
<?php
if(isset($_POST['praxis']) && $_SERVER['REQUEST_METHOD'] == 'POST')
{
  echo 'Praxis_Button angeklickt';
}
elseif(isset($_POST['team']) && $_SERVER['REQUEST_METHOD'] == 'POST')
{
  echo 'Team_Button angeklickt'; 
}
?> 
<form action="test.php" method="post">

          <button type="submit" name="praxis" value="Submit"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_praxis" src="pics/button_praxis.jpg" >
          </button>

          <button type="submit" name="team" value="Submit"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_team" src="pics/button_team.jpg" >
          </button>

</form>

Funktioniert bei mir wunderbar.
Getestet mit: FF2, Opera, Safari und IE7.

Nur IE6 und drunter übermitteln grundsätzlich alle Buttons eines Formulars. Dort müsstest du wohl JavaScript einsetzen.
 
ja felix, hast recht gehabt, so wie du es gemacht hast, klappt es mit FF, aber nicht mit IE 6...
kannst du mir vllt sagen, wie ich dies mit javascript machen kann?
danke

PS: möchte die seite für jedermann zugänglich machen, und da nicht jeder IE7 hat ---> Javascript ;-)
 
Zuletzt bearbeitet:
PHP:
<?php

print_r($_POST);
if(!empty($_POST['praxis']) && $_SERVER['REQUEST_METHOD'] == 'POST')
{
  echo 'Praxis_Button angeklickt';
}
elseif(!empty($_POST['team']) && $_SERVER['REQUEST_METHOD'] == 'POST')
{
  echo 'Team_Button angeklickt'; 
}
?>
<script language="javascript">
function submitForm(ENEMY) {
document.getElementsByName(ENEMY)[0].value = '';
myForm.submit();
}
</script> 
<form action="test.php" method="post" id="myForm">

          <button name="praxis" value="Submit" onclick="submitForm('team');"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_praxis" src="pics/button_praxis.jpg" >
          </button>

          <button name="team" value="Submit" onclick="submitForm('praxis');"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;" >
          <img name="image_team" src="pics/button_team.jpg">
          </button>

</form>
Ein bisschen gefrickelt (und es geht auch bestimmt eleganter) aber es funktioniert.

Je nachdem welchen Button du anklickst, wird der Wert des anderen Buttons genullt.
PHP prüft dementsprechend auch nicht mehr mit [phpf]isset[/phpf] sondern mit [phpf]empty[/phpf].

/Nachtrag:
Auch nicht jeder hat JavaScript aktiviert ;)
Die günstigste Lösung für alle, wäre zwei getrennte Formulare daraus zu machen.
Dann kapiert jeder Browser, dass es getrennt ist ;)
 
mann felix, you are the best ---> klappt wunderbar
jedoch hast du wiederum mir sorgen gemacht, du hast recht, nicht jeder hat javascript aktiviert...

was meinst du denn mit 2 formulare?

ein formular für ---> button praxis
ein formular für ---> button team
usw.
 
Genau.
Und die Prüfung welches gesendet wurde, machst du z. B. durch ein verstecktes Input Feld.

PHP:
<?php
if(!empty($_POST['praxis']))
{
  echo 'Praxis_Button angeklickt';
}
elseif(!empty($_POST['team']))
{
  echo 'Team_Button angeklickt'; 
}
?> 
<form action="test.php" method="post">
          <input type="hidden" name="praxis" value="praxis">
          <button type="submit" name="praxis" value="Submit"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_praxis" src="pics/button_praxis.jpg" >
          </button>
</form>
<form action="test.php" method="post">
          <input type="hidden" name="team" value="team">
          <button type="submit" name="team" value="Submit"
          style="background-color:#FFFFFF;border:0;width:153px; height:25px;">
          <img name="image_team" src="pics/button_team.jpg" >
          </button>

</form>

Das sollte jetzt bei jedem Browser funktionieren.
 
Zurück