0

アカウントのリストが表示される管理システムを作成しようとしています。「アカウントステータス」という列の下に、取得したアカウントステータスが非アクティブの場合に「ACTIVATE」を示すボタンを配置したいと思います (私はそれを行いました) 1 がアクティブで 0 が非アクティブであるブール値を使用します)。

ただし、表示されたボタンが配置されている特定の行を更新することはできず、機能しない更新クエリを使用しようとしました。私の考えは可能ですか、それともテキストフィールドの入力を使用して手動で更新する必要がありますか? PHP初心者なので教えていただけると幸いです。

これが私のコードです:

    <?php
//FETCH DATA
$query=mysql_query("SELECT * FROM accounts");
    while($fetch=mysql_fetch_array($query)){

                $accountupdate = $fetch["accountid"];

                echo" <tr>
                <td><font face='verdana,arial' size=-1>".$fetch["accountid"]."</td>
                <td><font face='verdana,arial' size=-1>".$fetch["username"]."</td>
                <td><font face='verdana,arial' size=-5>".$fetch["password"]."</td>
                <td><font face='verdana,arial' size=-1>".$fetch["firstname"]."</td>
                <td><font face='verdana,arial' size=-1>".$fetch["lastname"]."</td>                  
                <td><font face='verdana,arial' size=-1>".$fetch["email"]."</td>
                <td><font face='verdana,arial' size=-5>".$fetch["salt"]."</td>";

                    if($fetch["account_status"] == 0){
                        echo "<form action='' method='post'>
                             <td><input type='submit' name='activate' value='Activate'></td>
                             </form>";
                    }
                    else{
                        echo "<td><font face='verdana,arial' size=-1>".$fetch["account_status"]."</td>";
                    }
    }

if (isset($_POST['activate'])){
    mysql_query("UPDATE accounts SET account_status=1 WHERE accountid='$accountupdate'") or die(mysql_error());
    header("Location:admin_accounts.php");
}
?>
4

2 に答える 2

0

フォームに更新する ID を持つ隠しフィールドを追加します。

if($fetch["account_status"] == 0){
    echo "<form action='' method='post'>
        <td><input type='submit' name='activate' value='Activate'>
        input type='hidden' name='upd_id' value='{$fetch['accountid']}'</td>
        </form>";
}

送信後、非表示フィールドから ID を読み取ります。

if (isset($_POST['activate'])){
    mysql_query("UPDATE accounts SET account_status=1 WHERE accountid='{$_POST['ups_id']}' LIMIT 1") or die(mysql_error());
    header("Location:admin_accounts.php");
}
于 2013-02-26T08:20:16.677 に答える
0

いくつかのフォームを使用する代わりに、ハイパーリンクを使用できます。コードを少し変更する必要があります

<td><input type='submit' name='activate' value='Activate'></td>
 TO 
 <td><a href='yourfilename.php?acctid='.$accountupdate >Activate</a></td>


      if (isset($_POST['activate'])){
      TO
      if (isset($_GET['acctid'])){
     $acctid = $_GET[acctid];
     mysql_query("UPDATE accounts SET account_status=1 WHERE accountid='$acctid '")         or            

死にます(mysql_error()); }

最後に、提案されたように、コードを mysqli* に変更します :-)

于 2013-02-26T08:22:06.143 に答える