【问题标题】:How to send specific database records to other files如何将特定的数据库记录发送到其他文件
【发布时间】:2016-04-07 22:33:16
【问题描述】:

我的问题是关于通过从表中选择一条记录并使用完整数据转到另一个页面中的选定记录来更新某条记录的能力。我知道我必须用我需要的所有输入字段创建另一个文件,但我的问题是我如何到达那里并发送我选择的数据信息,然后我如何回显该信息并允许记录被更新?

假设我有一个名为“Products”的表,如下所示:

ID Name Amount

1 Shoes $10 Edit

2 Hats $5 Edit

如果我单击“鞋子”旁边的“编辑”按钮,我想转到另一个页面,该页面允许我编辑所选记录的所有信息。

  <form method="POST">
   <input name="first" placeholder="First Name">
   <input name="last" placeholder="Last Name">
   <input name="product" placeholder="Product">
   <button name="add" type="submit">Add</button>
</form>
</div>
<hr>
<table>
<thead>
   <tr>
      <th>ID</th>
      <th>Name</th>
      <th>Amount</th>
      <th></th>
   </tr>
</thead>
<tbody>
   <?php
      $stmt = $dbc->query("SELECT * FROM users");
      $stmt->setFetchMode(PDO::FETCH_ASSOC);

      while($row = $stmt->fetch()) {
      ?>
   <form method="POST">
      <tr>
         <td><?php echo $row['id'];?></td>
         <td><?php echo $row['name'];?></td>
         <td><?php echo $row['amount'];?></td>
         <td><button name="edit" type="submit">Edit</button></td>
      </tr>
   </form>
   <?php } ?>
</tbody>

【问题讨论】:

  • 您可以使用隐藏字段发送数据!喜欢&lt;input name="name" type="hidden"&gt;
  • 不能把信息发到下一页吗?
  • 我不知道该怎么做,这就是我问的原因。
  • 在 PHP 中,您会得到一张包含帖子信息的地图。它被称为 $_POST。您可以使用它来收集您发送的参数,例如 $_POST["first"]。 php.net/manual/en/reserved.variables.post.php
  • @ShayminGratitude 你能告诉我你的意思吗?我猜你是说这就是我获取信息的方式,但我不确定如何发送。

标签: php html mysql pdo


【解决方案1】:

您可以使用隐藏字段将表单数据发送到下一页

<form method="POST" action="edit_page.php">// add action here
        <tr>
            <td><?php echo $row['id'];?></td>
            <td><?php echo $row['name'];?></td>
            <td><?php echo $row['amount'];?></td>
            <input name="name" type="hidden" value="<?php echo $row['name'];?>">
            <input name="id" type="hidden" value="<?php echo $row['id'];?>">
            <input name="amount" type="hidden" value="<?php echo $row['amount'];?>">
            <td><button name="edit" type="submit">Edit</button></td>
        </tr>
    </form> 

并在edit_page.php 中使用

$name=$_POST['name'];
$id=$_POST['id'];
$amount=$_POST['amount'];

【讨论】:

  • @Saty 我可以这样做吗? &lt;td&gt;&lt;input name="name" value="&lt;?php echo $row['name'];?&gt;" type="hidden"&gt;&lt;/td&gt; ...那我实际上是如何获取和使用其他文件的信息的呢?
  • 在我的回答中查看我在表单标签中的添加操作。您需要创建一个文件名为 edit_page.php 并在此页面内使用 print_r($_POST) 检查您的帖子数据
  • 好的。我让数据显示在 print_r($_POST) 中,但我将如何具体使用它。假设我想输入名称?我会这样做吗? &lt;input name="name" value="&lt;?php echo $row['name'];?&gt;"&gt;
  • 太棒了,谢谢!如果我要写一个UPDATE 查询,我需要写什么特别的东西来更新选定的记录吗?
  • 不,你可以写你的更新查询!!我们使用的是 post 方法,所以浏览器中没有任何参数!
【解决方案2】:
<form method="POST" action="other_page.php">
        <tr>
           <input type="hidden" name="id" value="<?php echo $row['id'] ?>" />
           <input type="hidden" name="name" value="<?php echo $row['name'] ?>" />
           <input type="hidden" name="amount" value="<?php echo $row['amount'] ?>" />

            <td><?php echo $row['id'];?></td>
            <td><?php echo $row['name'];?></td>
            <td><?php echo $row['amount'];?></td>
            <td><button name="edit" type="submit">Edit</button></td>
        </tr>
</form> 

然后在 other_page.php 中:

<?php

    $stmt = $dbc->query("SELECT * FROM products WHERE `id`=".$_POST['id'].";");
    $stmt->setFetchMode(PDO::FETCH_ASSOC);
    ?>


    <form method="POST" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
        <input type="text" name="id" value="<?php echo $row['id'] ?>" />
        <input type="text" name="name" value="<?php echo $row['name'] ?>" />
        <input type="text" name="amount" value="<?php echo $row['amount'] ?>" />
        <button name="update" type="submit">Edit</button>
    </form>

    <?php
    if (isset($_POST['update'])){ // if the update button is clicked
        // write your update query here, with $id = $_POST['id'] and so on...
    }

【讨论】:

  • 谢谢!我在编辑页面中收到此查询错误。 Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING
猜你喜欢
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2017-01-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多