问题描述
限时送ChatGPT账号..早些时候我发布了一个关于从循环中获取单个常量值并在循环外使用它的问题(参考:问题).现在我面临另一个while循环的另一个问题.它是这样的:我有一个疑问:
earlier i posted a question about getting a single constant value from a loop and use it outside of the loop (reference : Question). now i'm facing another problem with another while loop. it goes like this: i have a query:
$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 循环中分配了一个按钮:
and for each row i have assinged a button in the while loop:
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 循环都在一个表单标签中,所以输入很酷.反正.我想做这样的事情:
so far so good. The rows are displayed fine and the button's there. (all of the while loop is in a form tag so inputs are cool. any way. i want to make something like this:
}
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)
my problem goes like this: each row has an id but setting it as a variable will always overwrite until he puts in the variable the last id the loop reached. (meaning every delete button of each row will simply delete the last id each page load)
问题是这样的.我怎样才能让每个删除按钮识别它的行 ID?
the question is like this. how can i make each delete button recognize it's row id?
提前致谢 - 干杯.
推荐答案
我建议您稍微改变一下流程.将删除按钮更改为复选框,并允许用户一次删除多个.
I suggest changing your process up a bit. Change the delete buttons to check boxes and allow the user to delete more than one at a time.
改变
<td><input type='submit' name='delete' value='delete' /></td>
到
<td><input type='checkbox' name='ids_to_delete[]' value='<?php echo $row['id']; ?>' /></td>
然后在表格末尾添加一个新的Delete
按钮
Then add a new Delete
button at the end of the table
<input type='submit' name='delete' value='Delete selected rows' />
现在更改您的 PHP 以处理一组值
Change your PHP to handle an array of values now
if (isset($_POST['ids_to_delete']) && count($_POST['ids_to_delete']) > 0) {
foreach($_POST['ids_to_delete'] as $alarmid) {
delete_alarm_from_database($alarmid)
}
}
甚至更好 - 更改您的 delete_alarm_from_database
函数以处理数组并一次性删除它们.
or even better - change your delete_alarm_from_database
function to handle an array and delete them all at once.
这篇关于PHP 在 while 循环之外获取变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
更多推荐
[db:关键词]
发布评论