1

我目前正在学习 PHP。我用管理面板、会话等编写了一个简单的桶列表脚本,只是为了看看我能不能做到。

我正在编码的最后一页是“edit.php”和“editone.php”我有一个表,它返回数据库“ID、目标和评级”中的所有数据我的第四列返回“EDIT”作为链接前往:editone.php?id=xx

editone.php 当前不是一个页面。对于我的一生,我无法弄清楚我是如何编写editone的,所以我可以获取数据并更新mysql。我快到了,只是无法拼凑这个谜题。

这是我的编辑页面代码的核心。

<?php
    while ($query_row = mysql_fetch_array($query)) 
    { 
        echo "<tr>";
        echo "<td>".$query_row['id']."</td><td>". $query_row['goals']."</td><td><span class='label label-inverse'>". $query_row['rating']."</span></td><td><a href='editone.php?id=".$query_row['id']."'>Edit</a></td>"; 
        echo "<tr>";
    }
?>

任何帮助将不胜感激。

4

4 回答 4

2

通过 POST 方法将所有参数发送到editone页面。我的意思是在您的编辑页面中,您正在从数据库中获取所有变量。您可以在具有提交按钮且类型为“POST”的表单中显示它们。所以现在当有人提交时,它会转到 editone.php 页面。

首先通过 $_POST 方法获取所有变量。然后写一个更新查询。

$sql = "UPDATE tablename SET goals = '$goal', rating='$rating' WHERE id = $id";

确保按照评论中的说明转义您的帖子变量。

这应该是您的 PDO 更新声明。

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// new data
$goals = 'Some goals';
$rating = 'whatever rating';
$id = 3;
// query
$sql = "UPDATE tablename 
        SET goals=?, rating=?
        WHERE id=?";
$q = $conn->prepare($sql);
$q->execute(array($goals,$rating,$id));
于 2012-10-29T20:11:57.627 回答
0

如果我对您的理解正确,您想要的是一个首先显示单行的页面(以便可以对其进行编辑),然后在完成后保存它。因此,您首先编写没有数据的 HTML 表单。

接下来,您从查询字符串中读取 ID:

<?php 
    $rowId = $_GET['id'];

然后查询数据:

// database connection example borrowed from Abhishek
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$sql = "SELECT goals, rating FROM tablename WHERE id = ?";
$query = $conn->prepare($sql);
$query->execute(array($rowId));
$row = $query->fetch();

现在,您可以使用这些数据来填充您的表单。这让你大约成功了一半。:-)

您会希望实际保存响应POST请求,而不是GET. 关于为什么会这样,有一个冗长且有些复杂的解释,但简化版本是POST您在为用户进行更改时使用,并且GET当您只是读取数据时 - 有一堆浏览器和代理行为等等与这些假设相关,因此最好尽早开始以正确的方式做事。

当您处理POST请求时 - 您可以在同一页面上执行此操作 - 您将获得用于抓取的更新表单值,并且您可以使用它们来更新您的数据库:

// This can be a hidden field on the form...
$rowId = $_POST['id'];
$goals = $_POST['goals'];
$rating = $_POST['rating'];

// database connection example borrowed from Abhishek
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

$sql = "UPDATE tablename SET goals = ?, rating = ? WHERE id = ?";
$query = $conn->prepare($sql);
$query->execute(array($goals, $rating, $rowId));

在此之后,您的数据库应该被更新。为了完成任务,您可能需要重定向回页面以确保表单不会被意外重复提交。

我没有在这里涵盖所有内容,有点故意。当有一些空白要填写时会更有趣。:-)

于 2012-10-29T21:21:17.953 回答
-2

最常见的解决方案是使用 html 表单。此表单的输入值是select带有idin 查询字符串的 a。当按下提交按钮来保存它时,进行更新。但是我想和你分享一个好的和完整的 web 2.0 例子

于 2012-10-29T20:16:32.377 回答
-2

你可能希望你的第二个<tr></tr>.

于 2012-10-29T20:20:18.517 回答