0

早些时候我发布了一个关于从循环中获取单个常量值并在循环之外使用它的问题(参考:问题)。现在我面临另一个while循环的问题。它是这样的:我有一个查询:

$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 循环中分配了一个按钮:

      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)

问题是这样的。如何让每个删除按钮识别它的行 ID?

在此先感谢 - 干杯。

4

3 回答 3

1

您需要为每条记录使用单独的表格。

 While ($row=mysql_fetch_array($result)){

  <form method="post" .....>
   .....
   <select>
         <option value="'.$value.'">title</option>
   </select>
   .....

  </form>
 }
于 2012-05-25T18:00:31.400 回答
1

为每个按钮添加一个 id。并使用该 ID 调用它,这可能是使用 jQuery 的最佳选择。这样您就可以知道按钮的确切编号 :)

看看这个 - 这是同样的问题 - PHP - 使用表单输入中的 id 制作 switch 语句

于 2012-05-25T18:00:50.213 回答
1

我建议稍微改变一下你的流程。将删除按钮更改为复选框,并允许用户一次删除多个。

改变

<td><input type='submit' name='delete' value='delete' /></td>

<td><input type='checkbox' name='ids_to_delete[]' value='<?php echo $row['id']; ?>' /></td>

Delete然后在表格末尾添加一个新按钮

<input type='submit' name='delete' value='Delete selected rows' />

现在更改您的 PHP 以处理一组值

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函数以处理数组并一次删除它们。

于 2012-05-25T18:05:57.890 回答