我在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"));
答案 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>