【问题标题】:HTML Form button in PHP While loopPHP While循环中的HTML表单按钮
【发布时间】:2014-06-09 21:40:25
【问题描述】:

我在 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?

【问题讨论】:

  • 试试array_keys($_POST['CompleteMessages'])[0](假设 PHP 5.4 或更新版本)

标签: php mysql sql


【解决方案1】:

在发送数据之前,您需要创建 html 表单标签。而且您还可以使用输入标签值传递值。

格式标签应该像下面的代码。

 <form action="" method="">
 <input  type="" value="">
 <input type="submit" name="CompleteMessages['.$i.']" value="" />
 </form>

【讨论】:

    【解决方案2】:

    我会改用这个:

    <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>
    

    【讨论】:

      【解决方案3】:

      如果您只想更改单击提交按钮所在行的值, 那么您将需要为每条记录设置一个唯一键。

      让我们假设消息表有一个 MessageID 列。

      一种方法是调用 javascript 函数。

      假设您的 javascript 函数名为 UpdateColumn(ID,ColName,Index)

      这是需要添加到每个输入按钮的内容(伪代码)

      onclick="UpdateColumn($Messages['MessageID'],'Status',$i)"
      

      那么您的 javascript 将需要从输入 CompleteMessages[Index] 中查找值

      Javascript 可以通过 ajax 调用您的请求 php ...

      update.php?MessageID=MessageID&Column=Status&Value=CompleteMessages[Index].value
      

      最后,处理提交的 php 将采用值

      使用

      $MessageID=$_REQUEST["MessageID"];
      $Column=$_REQUEST["Column"];
      $Value=$_REQUEST["Value"];
      

      然后您将需要运行一个 sql 查询来相应地更新您的数据库。

      【讨论】:

        猜你喜欢
        • 2017-10-19
        • 2012-12-02
        • 1970-01-01
        • 2018-03-19
        • 2019-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多