表单中的多个按钮

时间:2012-12-02 02:53:22

标签: php forms submit

我在php中有一些行。每行包含一个带id的数据集。 任务是根据id跳过数据库中的字段。身份证是未知的。

我打算用提交按钮跳过数据集。每个数据集也有一个按钮。表单将发送到PHP_SELF,在函数中我对数据库进行更新。

现在的挑战是找出按下哪个按钮。不能通过case块运行,因为id在1到99999之间。

有人可以帮助我。我可以重命名buton的类型,名称,id。 id已经在行集中。

非常感谢! 弗兰克

<form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">
<fieldset><legend>Ihnen zugewiesene Services</legend>
<table width="100%" border="1">
  <tr>
    <th>Schalter</th>
    <th width="100%">Servicename</th>
    <th width="50">Status</th>
  </tr>
  <?php do { ?>
    <tr>
      <?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?>
        <td><input type="submit" name="<?php $row_Recordset1['service_id']; ?>" id="btnOn" value="Voicebox ein" /></td>
      <?php } else { ?>
        <td><input type="submit" name="<?php $row_Recordset1['service_id']; ?>" id="btnOn" value="Voicebox aus" /></td>
      <?php } ?>          

      <td><?php echo $row_Recordset1['service_id']; ?></td>

      <?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?>
      <td><img src="images/VoiceboxOff.png" width="64" height="64" alt="pause" /></td>  
      <?php } else { ?>
      <td><img src="images/VoiceboxOn.png" width="64" height="64" alt="pause" /></td>   
      <?php } ?>          
    </tr>
    <?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
</table>
</fieldset>
<input type="hidden" name="MM_update" value="form1" />
<input name="service_id" type="hidden" value="<?php echo $row_Recordset1['service_id']; ?>" />

<?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?>
    <input name="update" type="hidden" value="1" /> 
<?php } else { ?>
    <input name="update" type="hidden" value="0" /> 
<?php } ?>          

</form>

我怎样才能在我的函数中捕获id?

if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
  $updateSQL = sprintf("UPDATE acdbasis SET userfield_2=%s WHERE service_id=%s",
                       GetSQLValueString($_POST['update'], "text"),
                       GetSQLValueString($_REQUEST['submit'], "int"));

2 个答案:

答案 0 :(得分:0)

您可以使用数组

<?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?>
<td><input type="submit" name="button[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox ein" /></td>
<?php } else { ?>
<td><input type="submit" name="button[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox aus" /></td>
<?php } ?>

<?php
if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form1")) {
$service_id = array_keys($_POST["button"]);
$service_id = $service_id[0]; //older php versions don't allow direct function...)[key]
$updateSQL = sprintf("UPDATE acdbasis SET userfield_2=%s WHERE service_id=%s",
                   GetSQLValueString($_POST['update'], "text"),
                   GetSQLValueString($service_id, "int"));

虽然它不是非常优雅的解决方案,但我仍然认为它比迭代$ _POST并检查密钥是否为数字更好。

答案 1 :(得分:0)

如何使用PHP $_GET数组功能:

  <?php if ($row_Recordset1['sendToVoicebox'] == 0) { ?>
    <td><input type="submit" name="service_id[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox ein" /></td>
  <?php } else { ?>
    <td><input type="submit" name="service_id[<?php echo $row_Recordset1['service_id']; ?>]" id="btnOn" value="Voicebox aus" /></td>
  <?php } ?>

表单帖子页面:

$serviceId = $_POST['service_id'][0]; // Do the work with the service id

或者,您是否可以使用按钮的value属性来传达您想要的内容?此外,您可以使用<button />标记向客户显示与提交给后端的值不同的值:

<button type="submit" name="service_submit_id" value="<?php echo $row_Recordset1['service_id'];?>">Text Here</button>