早些时候,我发布了一个关于从循环中获取单个常量值并在循环之外使用它的问题(参考:Question)。 现在我正面临着另一个while循环的另一个问题。 它是这样的: 我有一个查询:PHP在循环之外获取变量
$sql = "
SELECT alarms.id, alarms.date, clients.name, clients.number, alarms.controller,
alarmstype.type, alarms.alarmstatus, alarms.starttime, alarms.endtime
FROM alarms
INNER JOIN clients ON alarms.clientid = clients.id
INNER JOIN alarmstype ON alarms.typeid = alarmstype.id
WHERE alarms.alarmstatus = 'ON' ORDER BY alarms.date ASC";
$result = mysql_query($sql);
,并为每一行我已经在while循环assinged按钮:
while ($row = mysql_fetch_array($result)) {
print "<tr>
<td>" . $row['date'] . "</td>
<td>" . $row['number'] . " | " . $row['name'] . "</td>
<td>" . $row['controller'] . "</td>
<td>" . $row['type'] . "</td>
<td style='color: red'>
<select name = 'statusupdate' style='font-size:10px;'>
<option> " . $row['alarmstatus'] . " </option>
<option> OFF </option>
</select>
</td>
<td>" . $row['starttime'] . "</td>
<td>" . $row['endtime'] . "</td>
<td><input type='submit' name='delete' value='delete' /></td>
到目前为止好。行显示正常,按钮在那里。 (所有while循环是一种形式标记,以便投入凉爽 任何方式 我要让这样的事:。
}
if (isset($_POST['delete'])) {
delete_alarm_from_database($alarmid)
}
和功能是这样的:
function delete_alarm_from_database($id) {
//find alarm by id and delete:
$sql = "SELECT * FROM alarms WHERE id = " . $id;
$result = mysql_result($sql);
if (!$result) {
print "couldn't find record.";
}
//delete record from database:
else {
$sql = "DELETE FROM alarms WHERE id = " . $id;
$result = mysql_result($sql);
}
}
我的问题是这样的: 每一行都有一个id,但将它设置为一个变量将始终覆盖,直到他将最后一个循环到达的变量放入变量中(意味着每一行的每个删除按钮将简单地删除最后一个id页面加载)
问题是这样的。我怎样才能让每个删除按钮识别它的行ID?
在此先感谢 - 干杯。
感谢您的回复,您的方法就是我的解决方案。认为它有一个小问题。如果你按下删除按钮而没有检查任何东西,它会产生一个错误casue,它甚至没有设置$ _POST ['id ...'],所以它输出了一个不明的索引。所以我改变了你的PHP想法一点,所以它会工作:而不是计数我处理isset的Isset提交内的isset。欢呼声谢谢你。 – FedeSc