Verwenden Sie mehrere Senden-Buttons, um angepasste PHP-functionen auszulösen

Ich gehe vielleicht völlig falsch herum, aber ertragen Sie mit mir … Ich habe eine lange Gästeliste, die automatisch mit einer foreach Tabelle ausgefüllt wird.

Ich möchte einen “No Show” Button auf dieser Gästeliste setzen, so dass der Gastgeber des Events, ohne Admin zu sein, (clientseitig) auf “No Show” klicken und das Ticket (Custom Post) meta auf State: ‘noshow’ updaten kann

Viele der Beispiele, die ich gefunden habe, bedeuten, eine neue .php-Seite für den Submit-Button zu erstellen, um den Code zu verlinken und auszuführen [offensichtlich, weil es serverseitige Sprache ist] – das erste Problem ist dann, nachdem sie auf den Submit-Button geklickt haben. es geht auf eine leere Seite (keine echte HTML-Ausgabe), anstatt zu ihrem Event zurückzukehren … Das ist kein so großes Problem – ich kann eine Weiterleitung in ich nehme, aber scheint ein bisschen klobig.

Das zweite Problem ist auch, dass viele dieser Beispiele nicht berücksichtigen A) Mehrere Submit-Buttons, die automatisch erzeugt werden müssen B) Unterschiedlicher PHP-Code, der für jeden ausgetriggers wird …

Hier ist der Jist von dem, was ich unten tun muss:

  <form onsubmit="return confirm('Do you want to mark  as a 'No Show' - this cannot be undone unless you are an admin');" method="post" action=""> <input name="NoShow" type="submit" value="No Show" class="button" /> //$IDuser is their user ID to give the values something different on the page. Could also be ticket [post] numbers?  

Jetzt auf der Serverseite brauche ich so etwas zum Ausführen:

  $tixID = $ticket['id']; //This gets the ticket [custom post] ID number $StateKey = state; //This is the meta_key that needs changing $NoShowing = noshow; //This is what it needs to change to. update_post_meta($tixID , $StateKey , $NoShowing ); #This is the code to change the State: to No Show ?> 

Ich muss also sagen, dass ich etwas nach dem Vorbild von

 if(isset($_POST['SUBMIT-BUTTON'])) { some_function_called_here(); } 

Aber das ist fest und sucht nach einem bestimmten Namen – Es wäre physisch unmöglich für mich, die verschiedenen Sendbutton-Namen einzugeben, da es einzelne Tickets ändern würde – von denen etwa 6.000 bereits auf der Site verkauft wurden … Auch die aufgerufene function müsste für den Knopf, der sie aufgerufen hat, eindeutig sein.

Jedes leuchtende Licht wäre großartig, da ich das Gefühl habe, dass ich mit einigen dieser Blogposts im Kreis herumlaufe.

EDIT: Entschuldigung – zur Klärung.

Was ich tun muss, ist …

  1. Auslöser – Benutzer drückt eine Schaltfläche in einer Liste von Schaltflächen clientseitig. Es wird in einer Tabelle mit php und einer foreach erzeugt, die die für dieses Ereignis gekauften Tickets auflistet. <input name="noshow" type="submit" value="No Show" class="button" />

  2. Aktion – Jede bestimmte Schaltfläche entspricht einem bestimmten Ticket. Sobald auf die Schaltfläche für das Ticket geklickt wird, wird der Code zum Bearbeiten dieser Ticketpost-Metadaten serverseitig ausgeführt. update_post_meta($ticketID , 'state' , 'noshow' ); Dies aktualisiert den Schlüsselstatus State: noshow

  3. Ergebnis – Die Seite wird neu geladen und Sie bleiben auf der gleichen Ereignisseite

Hier ist ein visuelles Beispiel für den Screenshot

Screenshot Beispiel eines Szenarios

Solutions Collecting From Web of "Verwenden Sie mehrere Senden-Buttons, um angepasste PHP-functionen auszulösen"

Anstatt auf eine neue Seite umzuleiten, können Sie die, auf der Sie bereits arbeiten, mit einer ähnlichen grundlegenden Logik verwenden:

 if ( !empty( $_POST['ticket_action'] && ( $_POST['ticket_action'] == 'noshow' ) ) { $ticket_post_id = $_POST['ticket_post_id']; ... you probably want to check if the user is logged in or check for a valid nonce here ... // do whatever it is with the ticket post that you wanted to do here ?> 

Success!! Or Error, or some other message dependent on what happened in form processing

< ?php } .... later on ... ?>
... you should probably put a nonce here too, search this site for examples and explanations on what they are ...
< ?php

Vielleicht haben Sie ein Formular für jede Schaltfläche oder ein einzelnes Formular, dieser Teil ist eine generische PHP / HTML-Frage, die über den scope dieser Site hinausgeht (Stack-Überlauf wäre der geeignete Ort)