Ich habe mehrere Schaltflächen auf meiner Seite, bin mir aber nicht sicher, wie ich feststellen soll, auf welche geklickt wurde. Hier ist das Markup für meine beiden Schaltflächen:
<input type="submit" id="btnSubmit" value="Save Changes" />
<input type="submit" id="btnDelete" value="Delete" />
Antworten:
Mit einem HTML-Formular wie:
<input type="submit" name="btnSubmit" value="Save Changes" /> <input type="submit" name="btnDelete" value="Delete" />
Der zu verwendende PHP-Code würde folgendermaßen aussehen:
if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Something posted if (isset($_POST['btnDelete'])) { // btnDelete } else { // Assume btnSubmit } }
Sie sollten immer davon ausgehen, dass die erste Schaltfläche zum Senden im HTML-Quellcode des Formulars angezeigt wird . In der Praxis senden die verschiedenen Browser zuverlässig den Namen / Wert einer Senden-Schaltfläche mit den Post-Daten, wenn:
Es gibt andere Möglichkeiten, ein Formular zu senden , und einige Browser / Versionen entscheiden sich in einigen dieser Situationen , den Namen / Wert von Senden-Schaltflächen nicht zu senden . Beispielsweise senden viele Benutzer Formulare durch Drücken der TasteEnter Taste, wenn sich der Cursor / Fokus auf einem Textfeld befindet. Formulare können auch über JavaScript sowie einige weitere undurchsichtige Methoden eingereicht werden.
Es ist wichtig, auf dieses Detail zu achten, da Sie sonst Ihre Benutzer beim Senden eines Formulars wirklich frustrieren können, aber "nichts passiert" und ihre Daten verloren gehen, weil Ihr Code eine Formularübermittlung nicht erkannt hat, weil Sie die Tatsache nicht vorausgesehen haben dass der Name / Wert einer Senden-Schaltfläche möglicherweise nicht mit den Post-Daten gesendet wird.
Der obige Rat sollte auch für Formulare mit einer einzigen Schaltfläche zum Senden verwendet werden, da Sie immer von einer Standardschaltfläche zum Senden ausgehen sollten .
Mir ist bewusst, dass das Internet mit unzähligen Formular-Handler-Tutorials gefüllt ist, und fast alle von ihnen tun nichts weiter, als den Namen und den Wert einer Senden-Schaltfläche zu überprüfen. Aber sie sind einfach falsch!
quelle
In HTML:
<input type="submit" id="btnSubmit" name="btnSubmit" value="Save Changes" /> <input type="submit" id="btnDelete" name="btnDelete" value="Delete" />
In PHP:
if (isset($_POST["btnSubmit"])){ // "Save Changes" clicked } else if (isset($_POST["btnDelete"])){ // "Delete" clicked }
quelle
Alles, was Sie brauchen, um jeder Schaltfläche das Namensattribut zu geben. Und Sie müssen jeden Tastendruck aus dem PHP-Skript adressieren. Achten Sie jedoch darauf, jeder Schaltfläche einen eindeutigen Namen zu geben. Weil sich das PHP-Skript die meiste Zeit nur um den Namen kümmert
<input type="submit" name="Submit_this" id="This" />
quelle
Fragen Sie in PHP oder Javascript.
Wenn es in PHP ist, geben Sie den Namen an und verwenden Sie die Post- oder Get-Methode. Danach können Sie die Option isset verwenden oder dieser bestimmte Schaltflächenname wird auf diesen Wert überprüft.
Wenn es in js ist, verwenden Sie dafür getElementById
quelle