以下代码在tag_show.php中。我必须显示数据库中的所有数据,我正在尝试从php代码编辑数据库,所以我在html表的所有行的末尾形成编辑按钮。
echo"<br><br><br><br>
<table border='6' style= 'background-color: #FFFFE0; color: #761a9b; margin: 2 auto;'>
<thead>
<tr>
<th>tag_title</th>
<th>description</th>
<th>show_in_welcome</th>
<th>status</th>
</tr>
</thread>
<tbody>";
while($row = mysqli_fetch_assoc($get_detail))
{
$_SESSION['tag_title'] =$row['tag_title'];
$_SESSION['description'] =$row['description'];
$_SESSION['show_in_welcome'] =$row['show_in_welcome'];
$_SESSION['status']=$row['status'];
echo
"<tr>
<td>{$_SESSION['tag_title']}</td>
<td>{$_SESSION['description']}</td>
<td>{$_SESSION['show_in_welcome']}</td>
<td>{$row['status']}</td>
<td><form action='edit.php' method='POST'><input type='hidden' name='tag_title' value='".$row["tag_title"]."'/><input type='submit' name='submit-btn' value='edit' /></form></td>
</tr>\n";
}
并且edit.php是
<?php
session_start();
echo"<form action='tag_show.php' method='post'>
<br><br><br>
Tag Title<br><input name='tag_title' type='text' value='{$_SESSION['tag_title']}'><br><br>
Description <br><input name='description' type='text' value='{$_SESSION['description']}'><br><br>
Show in welcome<br><input name='show_in_welcome' type='text' value='{$_SESSION['show_in_welcome']}'><br><br>
Status<br><input name='status' type='text' value='{$_SESSION['status']}'> <br><br>
<input name='submit1' type='submit' value='Update'>
</form>";
?>
但$ _SESSION返回HTML表格中的最后一行值。但是当我点击编辑按钮时,我想要接受的行值。
答案 0 :(得分:0)
看起来您永远不会使用从表单收到的信息更新会话数据。你需要在代码中的某个地方使用这样的东西。
$_SESSION['tag_title'] = $_POST['tag_title'];
$_SESSION['description'] = $_POST['description'];
$_SESSION['show_in_welcome'] = $_POST['show_in_welcome'];
$_SESSION['status']= $_POST['status'];
需要考虑的一些事项。
答案 1 :(得分:0)
这里的会议毫无意义。每次循环运行前一个值被替换,因此您获得最后一个值。而不是你可以使用查询字符串的概念。而不是打印表格打印锚标记
<a href='file.php?id='.$row["tag_title"]>Edit</a>
成为您的tag_title唯一。
if(isset($_GET['id))
{
$id = $_['id']
// Your code based on id
}
现在使用id运行mysql查询并选择所需数据并以表格显示
答案 2 :(得分:0)
当然,您的代码将返回最后一行,因为会话数组会在每次迭代后覆盖前一行的值。 使会话数组像$ _SESSION [$ id] [&#34; tag_title&#34;]一样多维,然后在你的edit.php中使用id值引用会话数组。
$_SESSION[$id] = array('tag_title' => $row['tag_title'], 'description' => $row['description'], 'show_in_welcome' => $row['show_in_welcome'], 'status' => $row['status'])
然后在每次迭代后递增$ id。
答案 3 :(得分:0)
您不需要会话变量来将值传递给edit.php
文件。
希望有一个唯一的密钥来识别数据库中的记录。我认为它是recordid
。将此值作为查询字符串传递给edit.php
<强> tag_show.php 强>
$output = '';
while($row = mysqli_fetch_assoc($get_detail)){
$output '<tr>
<td>'.$row['tag_title'].'</td>
<td>'.$row['description'].'</td>
<td>'.$row['show_in_welcome'].'</td>
<td>'.$row['status'].'</td>
<td><a href="edit.php?editid='.$row['recordid'].'">edit</a></td>
</tr>';
}
在 edit.php 中,您可以从查询字符串中获取recordid
并从数据库中检索数据以填充表单
<?php
if($_GET['editid']!=''){
//get record corresponding to the 'editid' from database
//I assume the record is for and store in a variable $editdata
?>
<form action="tag_show.php" method="post">
<br><br><br>
Tag Title<br><input name="tag_title" type="text" value="<?=$editdata['tag_title']?>"><br><br>
Description <br><input name="description" type="text" value="<?=$editdata['description']?>"><br><br>
Show in welcome<br><input name="show_in_welcome" type="text" value="<?=$editdata['show_in_welcome']?>"><br><br>
Status<br><input name="status" type="text" value="<?=$editdata['status']?>"> <br><br>
<input name="submit1" type="submit" value="Update">
</form>
<?php
}
?>