2016-12-12 18 views
2

Guten Tag alle, Ich habe ein Formular mit zwei Tasten. Ein auf "Bearbeiten" und das andere auf "Löschen" Pilot Datensätze:Formular Übermittlung für verschiedene Tasten

<form method="post" action="<?php echo adminurl('/pilotmanager/pilotsedit');?>"> 
<table class="PManager"> 
    <tr><th colspan="2">pilot edit form</th></tr> 
    <tr> 
     <td><b>First Name:</b></td> 
     <td><input type="text" name="firstname" value="<?php echo $firstname;?>" /></td> 
    </tr> 
    <tr>   
     <td><b>Last Name:</b></td> 
     <td><input type="text" name="lastname" value="<?php echo $lastname;?>" /></td> 
    </tr> 
    <tr> 
     <td><b>Airline:</b></td> 
     <td> 
      <select name="code"> 
      <?php 
      $allairlines = OperationsData::GetAllAirlines(); 
      foreach($allairlines as $airline) 
       { 
        echo '<option value="'.$airline->code.'" '.$sel.'>'.$airline->name.'</option>'; 
       } 
      ?> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td><b>Transfer Hours:</b></td> 
     <td><input type="text" name="transferhours" value="<?php echo $transferhours;?>" /></td> 
    </tr> 
    <tr> 
     <td><b>Hub:</b></td> 
     <td> 
      <select name="hub"> 
      <?php 
      $allhubs = OperationsData::GetAllHubs(); 
      foreach($allhubs as $hub) 
       { 
        echo '<option value="'.$hub->icao.'" '.$sel.'>'.$hub->icao.' - ' . $hub->name .'</option>'; 
       } 
      ?> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td><b>Total Flights:</b></td> 
     <td><input type="text" name="totalflights" value="<?php echo $totalflights;?>" /></td> 
    </tr> 
    <tr> 
     <td><b>Total Pay:</b></td> 
     <td><input type="text" name="totalpay" value="<?php echo $totalpay;?>" /></td> 
    </tr> 
    <tr> 
     <td><b>Pilot active:</b></td> 
     <td> 
     <?php 
     if(intval($pilot->retired) == 1) 
      { 
       $retsel='selected'; 
       $activesel = ''; 
      } 
     else 
      { 
       $activesel = 'selected'; 
       $retsel = ''; 
      } 
     ?> 
      <select name="retired"> 
       <option value="0" <?php echo $activesel?>>Active</option> 
       <option value="1" <?php echo $retsel?>>Inactive</option> 
      </select> 
     </td> 
    </tr> 
    <tr> 
     <td><b>Email Address:</b></td> 
     <td><input type="text" name="email" value="<?php echo $email;?>" /></td> 
    </tr> 
    <tr> 
     <td colspan="2"> 
      <input type="hidden" name="pilotid" value="<?php echo $pilotid;?>"> 
      <input type="hidden" name="action" value="saveprofile"> 
      <input type="hidden" name="action" value="deletepilot"> 
      <input type="submit" value="Save Changes" style="width:200px;"> 
      <input type="submit" value="Delete" style="width:200px;"> 
     </td> 
    </tr> 

In meinem Modul habe ich die folgende Funktion:

public function pilotsedit() { 
    $pilotid = $_POST['pilotid']; 
    $action = $_POST['action']; 
    switch($action) { 
     case 'saveprofile': 
      $this->savepro($pilotid); 
      echo '<script type="text/javascript">alert("Profile Updated!");</script>'; 
      $url = $_SERVER['HTTP_REFERER']; // right back to the referrer page from where you came. 
      echo '<meta http-equiv="refresh" content="5;URL=' . $url . '">'; 
      break; 
     case 'deletepilot': 
      $this->deletePilot($pilotid); 
      echo '<script type="text/javascript">alert("Pilot Deleted!");</script>'; 
      $url = $_SERVER['HTTP_REFERER']; // right back to the referrer page from where you came. 
      echo '<meta http-equiv="refresh" content="5;URL=' . $url . '">'; 
      break; 
    } 
} 

trenne ich bin versucht zu Die Schaltfläche wird mit der "case" -Anweisung in meinem Modul gesendet, aber wenn ich das Formular über die Schaltfläche "Bearbeiten" absende, wird der Datensatz gelöscht. Bitte hilf mir herauszufinden, was ich falsch mache. Danke

+1

Entfernen Sie die 2 versteckten Eingänge mit dem gleichen Namen (da dies absolut keinen Sinn macht) und setzen Sie stattdessen Namen und Wert auf jede Senden-Schaltfläche. Nur die Schaltfläche, die zum Senden verwendet wird, hat ihren Namen/Wert an $ _GET/$ _ POST übergeben. – apokryfos

+0

Nun, Sie haben zwei versteckte Eingabefelder, die dieselbe POST-Variable "action" definieren. Das bedeutet, dass der zweite gewinnt. – arkascha

+0

Bereits beantwortet: http://stackoverflow.com/questions/2129346/if-an-html-form-has-two-input-type-submit-button-how-do-i-know-which-got-c – Yoleth

Antwort

3

Die Antwort ist zu verwenden Knopf anstelle von Eingang Tag. Was ich tat, war die folowing:

<td colspan="2"> 
    <input type="hidden" name="pilotid" value="<?php echo $pilotid;?>"> 
    <button type="submit" name="action" value="saveprofile" style="width:200px;">Save Changes</button> 
    <button type="submit" name="action" value="deletepilot" style="width:200px;">Delete Pilot</button> 
</td> 

Und in meinem PHP-Modul:

public function pilotsedit() { 
    $pilotid = $_POST['pilotid']; 
    $action = $_POST['action']; 
    switch($action) { 
     case 'saveprofile': 
      $this->savepro($pilotid); 
      break; 
     case 'deletepilot': 
      $this->deletePilot($pilotid); 
      break; 
    } 
} 

Und es funktionierte wie ich es erwartet hatte, es zu tun.

0

Sie senden diese beiden Aktionen auf save und deletepilot

<input type="hidden" name="action" value="saveprofile">

<input type="hidden" name="action" value="deletepilot">

Sie sollten sie trennen.

Verwandte Themen