【问题标题】:updating a record based on id and checkboxes根据 id 和复选框更新记录
【发布时间】:2014-03-04 22:01:46
【问题描述】:

基本上,我正在尝试显示有关用户拥有的信息,它列出了他们的

BookID date time confirmed

已确认是 0 或 1,0 未确认 1 已确认,因为这是一张表,我假设需要使用 $_GET 来完成,否则它不会更新正确的表。

目前我有这个用于列出事物的表格

<?php
while($row = mysqli_fetch_array($result))
  { ?>
  <tr>
  <td><?php echo $row['BookID']?></td>
  <td>  <?php echo $row['date']?>  </td>
  <td>  <?php echo $row['time']?>  </td>
  <td> <input type="checkbox" name="Confirmed" value="1" <?php echo ($row['Confirmed'] == 1) ? 'checked="checked"' : ''; ?>/> </td>
  <td><a href="delete.php?BookID=<?php echo $row['BookID']; ?>">Delete</a></td>
  <td><a href="update.php?BookID=<?php echo $row['BookID']; ?>">Update</a></td>
  </tr>
  </table> 

update.php 包含这个

<?php
// Your database info
$db_host = 'localhost';
$db_user = 'root';
$db_pass = '';
$db_name = 'smithrwg_database';

$Confirmed = $_POST['Confirmed'];

if (!isset($_POST['Confirmed']))
{
    echo 'No ID was given...';
    exit;
}

$con = new mysqli($db_host, $db_user, $db_pass, $db_name);
if ($con->connect_error)
{
    die('Connect Error (' . $con->connect_errno . ') ' . $con->connect_error);
}
$sql = mysql_query("UPDATE tbl_booking SET Confirmed = '$Confirmed' WHERE BookID = ?");

//$sql = "UPDATE tbl_booking SET Confirmed='$Confirmed' WHERE BookID == ?";
if (!$result = $con->prepare($sql))
{
    die('Query failed: (' . $con->errno . ') ' . $con->error);
}

if (!$result->bind_param('i', $_GET['BookID']))
{
    die('Binding parameters failed: (' . $result->errno . ') ' . $result->error);
}

if (!$result->execute())
{
    die('Execute failed: (' . $result->errno . ') ' . $result->error);
}

if ($result->affected_rows > 0)
{
    echo "The ID was updated with success.";
}
else
{
    echo "Couldn't update the ID.";
}
$result->close();
$con->close();

我主要关注 $sql,因为它实际上并没有从 get 函数中获取 id。

复选框正在从数据库中获取值以查看它是否应该已经被选中,我希望能够再次单击它并“取消确认”或者如果它没有勾选则确认它。

【问题讨论】:

  • 为什么是 $_POST['Confirmed'] 而不是 $_GET['Confirmed']?
  • 将其更改为 $_GET 它并没有真正做任何事情。也将&lt;td&gt;&lt;a href="update.php?BookID=&lt;?php echo $row['BookID']; ?&gt;"&gt;Update&lt;/a&gt;&lt;/td&gt; 更改为&lt;td&gt;&lt;a href="update.php?BookID=&lt;?php echo $row['BookID']; ?&gt;?Confirmed=&lt;?php echo $row['Confirmed']; ?&gt;"&gt;Update&lt;/a&gt;&lt;/td&gt;
  • 还有这条线? if (!isset($_POST['Confirmed']))
  • 更改第二个?到 &: 更新

标签: php mysql get


【解决方案1】:

您在表单标签中使用了什么方法属性?如果您使用 GET,则使用 GET 来获取它。如果您使用 POST,则使用 POST。顺便说一句,首先尝试回显所有已发布的变量,以便您知道您正在传递正确的变量。它始终是一种很好的调试方法。希望这可以帮助。谢谢。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-12
    • 2018-04-28
    • 2011-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-11
    相关资源
    最近更新 更多