我目前正在学习PHP。我用管理面板,会话等编写了一个简单的bucketlist脚本,看看我是否可以做到。
我编码的最后一页是“edit.php”& “editone.php”我有一个表格,它返回数据库中的所有数据“ID,目标和评级”我的第四列返回“编辑”作为链接,链接到:editone.php?id=xx
editone.php目前不是一个页面。对于我的生活,我无法弄清楚我如何编辑editone,所以我可以获取数据和UPDATE 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>";
}
?>
非常感谢任何帮助。
答案 0 :(得分:2)
通过POST方法将所有参数发送到editone页面。我的意思是在您的编辑页面中,您将从数据库中获取所有变量。您可以在具有提交按钮和“POST”类型的表单中显示它们。所以现在当有人提交时,它会转到editone.php页面。
首先通过$ _POST方法获取所有变量。然后写一个更新查询。
$sql = "UPDATE tablename SET goals = '$goal', rating='$rating' WHERE id = $id";
确保按照评论中的说法转义帖子变量。
这是你的PDO Update语句应该如何。
// 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));
答案 1 :(得分: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
。有long and somewhat complicated解释为什么会这样,但简化版本是您在为用户进行更改时使用POST
,而在您只是在阅读数据时使用GET
- - 有一堆浏览器和代理行为以及与这些假设有关的东西,所以在早期以正确的方式开始做事是个好主意。
当您处理POST
请求时 - 您可以在同一页面上执行此操作 - 您将获得更新的grabs表单值,您可以使用它们来更新数据库:
// 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));
在此之后,应该更新您的数据库。为了完成这些工作,您可能希望redirect back to the page确保不会意外地双重提交表单。
我没有完全覆盖所有,有点故意。当有一些空白要填写时,它会更有趣。: - )
答案 2 :(得分:-2)
最常见的解决方案是使用html表单。此表单的输入值为select
,查询字符串中包含id
。按下提交按钮进行保存时,请进行更新。但我希望与您分享a good and complete web 2.0 example。
答案 3 :(得分:-2)
您可能希望第二个<tr>
为</tr>
。