我创建了一个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>' ;
}
这显示正确但我的问题是:
用户如何选择单个行以便他/她可以编辑它。我希望用户可以选择他们想要的行,然后他们将被带到另一个可以进行更改的屏幕。我可以弄清楚如何做可以更新数据的部分。但是选择行并收集正确的数据我不明白该怎么做。
答案 0 :(得分:0)
在其中的某处嵌入<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'
答案 1 :(得分:0)
id
。例如:update.php
id
参数(确保它是有效的ID,而不是SQL注入尝试,并且用户具有编辑此ID的权限)SELECT fields FROM table WHERE id = $id
UPDATE table SET field1=newVal WHERE id = $ID
答案 2 :(得分:0)
首先,您需要在表中创建主键,在这种情况下假设为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']."');