>我创建了一个while循环
while($row = mysql_fetch_Array($result)) {
echo '<tr class="record"> <td></td><td>'
. $row['company'] .'</td><td>'
. $row['project'].'</td><td>'
. $row['assignee']. '</td><td>'
. $row['current_milestone'] . '</td><td>'
. $date=date("d-m-Y", strtotime($row['start_date'])).'</td><td>' ..'</td><td>'
. $row['next_milestone'] . '</td><td>'
. $date=date("d-m-Y", strtotime($row['next_date']))
.'</td></tr>' ;
}
这显示正确,但我的问题是:
用户如何选择单个行以便他/她可以对其进行编辑。我希望用户可以选择他们想要的行,他们将被带到另一个屏幕,在那里他们可以进行更改。我可以弄清楚如何做我可以更新数据的部分。但这是选择行并收集正确的数据,我不知道该怎么做。
在其中的
某个位置嵌入一个<a href='update.php?id=>
,它将记录 ID 作为查询字符串中的参数携带到更新脚本:
while($row = mysql_fetch_Array($result)) {
echo '<tr class="record"> <td></td><td>'
// Insert a link with an id parameter.
// Use whatever column value uniquely identifies your row
. '<a href="update.php?id=' . $row['id'] . '"> Edit this! </a>'
// etc...
// etc...
// etc...
.'</td></tr>' ;
}
并通过以下方式在更新脚本上检索它:
// Assuming an integer id was passed...
// if it is some other string value, escape and quote it accordingly.
$id = intval($_GET['id']);
您将需要检查进行编辑的用户是否有权编辑该记录。 换句话说,验证记录是否由用户拥有 已登录,因为从技术上讲,任何人都可以使用任何 ID 访问 URL,无论它是否属于他们。如:
UPDATE yourtable SET col1 = 'whatever', col2 = 'whatever' WHERE id = $id AND user_id = 'logged_in_user'
- 在数据库中创建某种主键(每个行/条目都不同的新字段(。示例:ID 字段
- 创建一个单独的更新页面,该页面接受 GET 参数
id
。例如:update.php
- 验证并清理
id
参数(确保它是有效的 ID,而不是 SQL 注入尝试,并且用户有权编辑此 ID( - 从数据库中加载该 ID 的信息。例如:
SELECT fields FROM table WHERE id = $id
- 显示表单,以便用户可以编辑信息。
- 验证表单输入并更新表。例如:
UPDATE table SET field1=newVal WHERE id = $ID
首先,您需要在表中创建一个主键,假设在这种情况下primary_key
,以便访问具有明确且唯一 ID 的特定行。
其次,在表中再添加一列:
while($row = mysql_fetch_Array($result)){
echo '<tr class="record"> <td></td><td>'
. $row['company'] .'</td><td>'
. $row['project'].'</td><td>'
. $row['assignee']. '</td><td>'
. $row['current_milestone'] . '</td><td>'
. $date=date("d-m-Y", strtotime($row['start_date'])).'</td><td>' ..'</td><td>'
. $row['next_milestone'] . '</td><td>'
. $date=date("d-m-Y", strtotime($row['next_date']))
.'</td>' ;
?>
<td>
<form action='update.php' method='post'>
<input type="hidden" name="id" value="<?php echo $row['primary_key']; ?>">
<input type="submit" value="Edit">
</form>
</td>
<?php
echo "</tr>";
}
?>
现在您知道需要在表单中显示的哪一行的详细信息update.php
update.php
上的代码是这样的:
<?php
$id = $_POST['id'];
$result = mysql_query("SELECT * FROM table WHERE primary_key = '$id'");
$info = mysql_fetch_array($result);
?>
<form action='target.php' method='post'>
Company: <input type="text" name="company" value="<?php echo $info['company']; ?>">
Project: <input type="text" name="project" value="<?php echo $info['project']; ?>">
.
.
<input type="hidden" name="id" value="<?php echo $info['primary_key']; ?>">
<input type="submit" value="Save Changes">
</form>
然后target.php
您所要做的就是使用以下命令:
mysql_query("UPDATE table SET company='".$_POST['company']."' AND project='".$_POST['project']."' WHERE primary_key='".$_POST['id']."');