当我点击提交它应该更改文本并更新行有问题

时间:2012-09-24 09:25:04

标签: php forms mysqli

早上好,程序员, 我有这个小代码,内容是一个新闻控制面板,我在那里设置了一个提交按钮来激活或激活新闻行,所以如果我点击这个按钮它应该改变,如果它是活动的它将是不活动它工作但是那里有什么不对的地方我点击第一项,它更新了桌子上的最后一个,而不是第一个,因为它应该做。 这是我使用的代码

<?php
$getNewsData="select * from news";
    $QgetNewsData=$db->query($getNewsData)or die($db->error);
    $count=mysqli_num_rows($QgetNewsData);
while($newsRow = mysqli_fetch_array($QgetNewsData)) {
$getActivityStatus=$newsRow['news_activity']; 
    switch($getActivityStatus){
    case 1: echo"<input style='color:red; font-weight:bold; background:none; border:0;' name='inactive' type='submit' value='تعطيل' /><input name='inActive' type='hidden' value='".$newsRow['news_id']."'/>"; 
    break; 
    case 0: echo"<input style='color:green; font-weight:bold; background:none; border:0;' name='active' type='submit' value='تفعيل' /><input name='Active' type='hidden' value='".$newsRow['news_id']."'/>"; break;}
    }
if(isset($_POST['inactive'])){
            $inActive=$_POST['inActive'];
            echo $inActive;
        $updateStatus="UPDATE news SET news_activity=0 WHERE news_id='".$inActive."' ";
        $QupdateStatus=$db->query($updateStatus)or die($db->error);
        if($QupdateStatus){ 
            }
        }

        if(isset($_POST['active'])){
            $Active=$_POST['Active'];
            echo $Active;
        $updateStatus="UPDATE news SET news_activity=1 WHERE news_id='".$Active."' ";
        $QupdateStatus=$db->query($updateStatus)or die($db->error);
        if($QupdateStatus){
        header("Location:CpanelHome.php?id=7"); 
            }
        }
    ?>

请任何想法来解决这个问题。 谢谢, 问候

1 个答案:

答案 0 :(得分:1)

您创建了许多<input name='inActive'<input name='Active'字段。请注意,点击任何提交按钮时,会提交所有。我能想到的最简单的解决方案是将每对提交按钮和隐藏的输入放在单独的<form>中。

备注

您的代码非常糟糕,您应该考虑进行一些改进。对于初学者:

  • 请正确格式化您的代码或找一个可以帮您完成的编辑器。
  • 请在查询中使用之前验证POST数据。
  • 请不要粘合字符串中的查询,而是使用prepared statements