【发布时间】:2017-04-27 03:20:34
【问题描述】:
大家好, 我有一个带有两个按钮的表单。一个用于“编辑”,另一个用于“删除”试点记录:
<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>
在我的模块中,我有以下功能:
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;
}
}
我试图在我的模块中使用“case”语句分隔按钮提交,但是当我使用“Edit”按钮提交表单时,记录被删除。请帮我找出我做错了什么。谢谢
【问题讨论】:
-
移除两个具有相同名称的隐藏输入(因为这完全没有意义),并将名称和值放在每个提交按钮上。只有用于提交的按钮的名称/值才会传递给
$_GET/$_POST -
好吧,您有两个隐藏的输入字段,定义了相同的 POST 变量
action。这意味着第二个将获胜。 -
谢谢大家。我还需要“case”语句吗?