我在PHP中有一个从数据库中选择数据的while循环
我想为返回的每一行都有一个完整的按钮,当按下它时会运行一个SQL查询来更改该特定行的status
列的值
我的while循环是:
$stmt = $pdo_conn->prepare("SELECT * from messages where status = :status and (assigned_to = :assigned_to1 OR assigned_to = :assigned_to2) ");
$stmt->execute(array(':status' => '', ':assigned_to1' => $user_result["sequence"], ':assigned_to2' => ''));
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);
$i=0;
if(count($records) > 0) {
echo '<tr>
<td colspan="7">You have '.count($records).' Messages</td>
</tr>';
foreach($records as $Messages) {
$i++;
echo '<tr>
<td>'.AdminNameLookup($Messages["assigned_to"]).'</td>
<td>'.$Messages["caller_company"].'</td>
<td>'.$Messages["caller_telephone"].'</td>
<td>'.$Messages["caller_email"].'</td>
<td>'.$Messages["caller_message"].'</td>
<td><input type="submit" name="CompleteMessages['.$i.']" value="" /></td>
</tr>';
}
}
但我不太确定如何在提交时处理PHP?
答案 0 :(得分:0)
我会改用它:
<td><input type="submit" name="CompleteMessages" value="'.$i.'" /></td>
然后您可以使用以下内容获取ID:
$Id = $_POST['CompleteMessages'];
就我个人$i
设置为$Messages["message_id"]
而言,您可以找到您实际提交的ID。
您还需要将所有内容包装在form
标记中:
<form action="submit.php" method="POST">
...
</form>
答案 1 :(得分:0)
在发送数据之前,您需要创建html表单标记。此外,您还可以使用输入标记值传递值。
格式标记应该如下代码所示。
<form action="" method="">
<input type="" value="">
<input type="submit" name="CompleteMessages['.$i.']" value="" />
</form>
答案 2 :(得分:0)
如果您只想更改单击提交按钮的行的值, 那么每个记录都需要一个唯一的密钥。
让我们假设消息表有一个MessageID列。
一种方法是调用javascript函数。
让我们说你的javascript函数叫做UpdateColumn(ID,ColName,Index)
这里需要添加到每个输入按钮(伪代码)
onclick="UpdateColumn($Messages['MessageID'],'Status',$i)"
然后你的javascript需要从输入CompleteMessages [Index]
中查找值Javascript可以通过ajax来调用你的请求...
update.php?MessageID=MessageID&Column=Status&Value=CompleteMessages[Index].value
最后你处理提交的php将获取值
使用
$MessageID=$_REQUEST["MessageID"];
$Column=$_REQUEST["Column"];
$Value=$_REQUEST["Value"];
然后,您将需要运行一个sql查询,相应地更新您的数据库。