从" GET"编辑mysql数据库的index.php?ID = XX

时间:2012-10-29 20:06:23

标签: php mysql edit

我目前正在学习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>";
    }
?>

非常感谢任何帮助。

4 个答案:

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