Wie kriegt man mit PHP raus welcher button gedrückt wurde?

5 Antworten

Wenn sich die Buttons alle im gleichen Formular befinden ist es egal, da wird das ganze Formular übertragen. Wenn du für jede Zeile ein einzelnes Formular hast kannst du entsprechende Felder einfügen, die du dann abfragen kannst.

Wenn Du mehrere Submitbuttons die aber untesrchiedlich beschriftet sind kannst Du die ganz einfach abfragen:

Hier erstmal die Buttons im Dokument:

<input type="submit" name="submit" value="erster">
<input type="submit" name="submit" value="zweiter">

Dann im PHP Code der Seite an die die Form gesandt wird:

if (isset($_POST['submit'])) {$submit = $_POST['submit'];} else {$submit = "";} 

dann hast Du die Beschriftung des gedrückten Buttons in der Variable $submit:

echo $submit;

Sollten Deine Buttons alle dieselbe Beschriftung haben, gibt es eine 2.Möglichkeit: Du vergibst dann den Buttons unterschiedliche Namen und liest alle Namen als Variablen ein, dalls nix gepostet wurde weist Du einen leeren String zu und guckst nachher, welcher String die Beschriftung enthält.

<input type="submit" name="submit1" value="Klick Mich">
<input type="submit" name="submit2" value="Klick mich">
if (isset($_POST['submit1'])) {$submit1 = $_POST['submit1'];} else {$submit1 = "";}if (isset($_POST['submit2'])) {$submit2 = $_POST['submit2'];} else {$submit2 = "";} 

Dann kannst gucken ob $submit1 das "Klick mich" enthält, oder $submit2 - der andere String ist jeweils leer.

0

du kannst alle buttons so definieren:

<input type="submit" name="button[]" value="Speichern">

in $_POST['button'] steht dann ein array. das sollte bis auf einen eintrag leer sein, der index (0-basiert!) entspricht der zeilennummer.
mit:

$idx = array_search('Speichern', $_POST['button']);

kannst du ihn herausfinden.
(achtung: $idx kann sowohl 0 also auch FALSE sein. vorsichtshalber mit

if ( $idx !== FALSE ) ... 

abfragen)

Was ist an diesem PHP-Skript falsch?

        echo "<form class='form-signin' style='width:auto!important; max-width: 99%; width:50%!important' method='POST' action='index.php'>";
          echo "<input class='rounded' type='text' placeholder='Grund' name='Owner-grund-$i6'>";
          echo "<input class='rounded' type='number' placeholder='Strafpunkte' name='Owner-points-$i6' step='1'>";
          echo "<button class='btn btn-lg btn-primary btn-block' name='new-strafe-Owner-$i6' type='submit'>Absenden</button>";
        echo "</form>";
      echo "</div>";
      echo "<div class='modal-footer'>";
        echo "<button type='button' class='btn btn-primary' data-dismiss='modal'>Schließen</button>";
      echo "</div>";
    echo "</div>";
  echo "</div>";
echo "</div>";

if (isset($_POST["new-strafe-Owner-$i6"])) {
  $Owner_user_uuid = MojangAPI::getUuid($daten_infos_Team_Owner->name);
  $Owner_by_uuid = MojangAPI::getUuid($username);
  $Owner_user_full_uuid = MojangAPI::formatUuid($Owner_user_uuid);
  $Owner_by_full_uuid = MojangAPI::formatUuid($Owner_by_uuid);
  $Owner_date = date("d.m.y");
  $sql = "INSERT INTO strafe (name, uuid, by_name, by_uuid, grund, punkte, created_at) VALUES ('"
    . $db_Strafe->real_escape_string($daten_infos_Team_Owner->name)
    . "','"
    . $Owner_user_full_uuid
    . "','"
    . $db_Strafe->real_escape_string($username)
    . "','"
    . $Owner_by_full_uuid 
    . "','"
    . $db_Strafe->real_escape_string($_POST["Owner-grund-$i6"])
    . "','"
    . $db_Strafe->real_escape_string($_POST["Owner-points-$i6"])
    . "','"
    . $Owner_date
    . "')";
  $result = mysqli_query($conn_Strafe, $sql);
  $db_Strafe->query('SET @a = 0;');
  $db_Strafe->query('UPDATE strafe SET ID = (@a := @a +1)');
  $db_Strafe->query('ALTER TABLE strafe AUTO_INCREMENT = 1;');

  echo "<meta http-equiv='refresh' content='0; URL=zwischen.php'>";
}

Es wird nicht erkannt, ob das Formular abgesendet wurde.

Mit freundlichen Grüßen

...zur Frage

Was möchtest Du wissen?