我是PHP新手,我正在寻找一种方法来区分使用循环语句创建的按钮。我的任务是这样的:表中的每个数据都将被显示,每个数据的相应更新按钮将通过循环跟随。如果点击更新按钮,数据将被更新。
这是我的代码:
<?php
$query=mysqli_query($con,"SELECT * FROM POSTS where `post_status`= 1 order by `post_date` DESC");
while($data = mysqli_fetch_array($query))
{
$ID=$data['post_id'];
echo"<tr>";
echo"<td>".$ID ."</td>";
echo"</tr>";
echo"<tr>";
echo"<td>"."on ".$data['post_date'] ."</td>";
echo"</tr>";
echo"<tr>";
echo"<td>".$data['post_title']."</td>";
echo"</tr>";
echo"<tr>";
echo"<td>" .htmlspecialchars_decode($data['post_body'])."<br/>"."</td>";
echo"</tr>";
echo"<tr>";
echo"<td rowspan=1>"."<input type='"submit'" value='"Approve'" name='"$ID'">"."</td>";
echo"</tr>";
echo "<tr>";
echo "<td colspan=4>"."<hr/>"."</td>";
echo"</tr>";
if(isset($_POST['Approve']))
{
$a=$ID;
$query2 = mysqli_query($con, "UPDATE POSTS SET post_status = '2' WHERE post_id='$a'");
}
}
?>
为我糟糕的编程技术感到抱歉。希望你们能帮助我。谢谢!
您可以使用button
html:
while($data = mysqli_fetch_array($query)) {
....
echo '<button type="submit" name="btn_update" value="'. $ID. '">Update</button>';
}
这样,需要更新的行id将在$_POST['btn_update']
中;不要忘记通过
因为您需要在循环之外执行var验证。
哦,使用filter_has_var而不是isset,如果可能的话,只让php做php的事情。
为什么要使用filter_*而不是isset()?使用filter_has_var()比isset()有什么好处
<?php
$query=mysqli_query($con,"SELECT * FROM POSTS where `post_status`= 1 order by `post_date` DESC");
while($data = mysqli_fetch_array($query))
{
$ID=$data['post_id'];
?>
<tr><td><?php echo $ID; ?></td></tr>
<tr><td>on <?php echo $data['post_date']; ?></td></tr>
<tr><td><?php echo $data['post_title']; ?></td></tr>
<tr><td><?php echo htmlspecialchars_decode($data['post_body']); ?><br/></td>
</tr>
<?php // and so on..
echo"<tr>";
echo"<td rowspan=1>"."<input type='"submit'" value='"Approve'" name='"$ID'">"."</td>";
echo"</tr>";
?>
<tr><td colspan=4>.<hr/>.</td></tr>
<?php
}
if(filter_has_var(INPUT_POST,'Approve')) {
$a=$ID;
$query2 = mysqli_query($con, "UPDATE POSTS SET post_status = '2' WHERE post_id='$a'");
}
?>
如果我是你,我会使用get方法这样做:
<?php
$query=mysqli_query($con,"SELECT * FROM POSTS where `post_status`= 1 order by `post_date` DESC");
while($data = mysqli_fetch_array($query))
{
$ID=$data['post_id'];
echo"<tr>";
echo"<td>".$ID ."</td>";
echo"</tr>";
echo"<tr>";
echo"<td>"."on ".$data['post_date'] ."</td>";
echo"</tr>";
echo"<tr>";
echo"<td>".$data['post_title']."</td>";
echo"</tr>";
echo"<tr>";
echo"<td>" .htmlspecialchars_decode($data['post_body'])."<br/>"."</td>";
echo"</tr>";
echo"<tr>";
echo"<td rowspan=1>"."<a href='"your current page url?action=update&id=".$ID."'">Approve</a>"."</td>";
echo"</tr>";
echo "<tr>";
echo "<td colspan=4>"."<hr/>"."</td>";
echo"</tr>";
}
?>
然后在你的页面顶部写上这段代码:
<?php
if(isset($_GET['action']) && $_GET['action']==update){
if(isset$_GET['id']){
$a=$_GET['id'];
$query2 = mysqli_query($con, "UPDATE POSTS SET post_status = '2' WHERE post_id='$a'");
}
}
?>