2

ユーザーがログインしてユーザー/製品を編集できる Web サイトに管理者ログイン セクションを構築しようとしています。ユーザーと製品をデータベースから削除するのではなく、アクティブ/非アクティブにできるようにしたいと考えています。

true または false の値 (アクティブまたは非アクティブ) に tinyint(1) を使用できることを理解しています。私のデータベースには、データ型 tinyint(1) の「isactive」フィールドがあり、デフォルト値を 1 に設定しています (これが true またはアクティブを意味することを願っています)。

ユーザー編集フォームの上部に、次のコードがあります。

if (isset($_GET['id'])) {
$_SESSION['editId'] = $_GET['id'];
$status = $_GET['isactive']; 
} else {
$_SESSION['editId'] = 0;    
}

ユーザーを編集する私の機能は次のとおりです。

function db_updateUser($user, $id, $connection) {

foreach ($user as $key => $value) {
    $$key = $value;                         
}   
$sql = "UPDATE  tbl_users SET name='$name', username='$username',password='$password', email='$email', level='$level', isactive='$isactive' WHERE id='$id'";
$result = mysqli_query($connection, $sql);  
$numRows = mysqli_affected_rows($connection);
if ($numRows >= 1) {
    return true;    //user updated
} else {
    return false;   //user not updated
}   
}

フォーム選択は次のようになります。

<label>Active : </label>
<select name="status">
<option value="Active" <?php if ($status=="Active" || !isset($status)) echo "selected='selected'"; ?>>Active</option>
<option value="Inactive" <?php if ($status=="Inactive") echo "selected='selected'"; ?>>Inactive</option>
</select>

「未定義のインデックス: isactive」というエラーが表示される

誰かが私を正しい方向に向けることができれば、私はとてもうれしいです. ありがとう。

4

1 に答える 1

2

与えられた:

<select name="status">

あなたが使用している必要があります

$_POST['status'];

これは、特定のフォーム フィールドが送信される名前だからです。

同様に、その foreach() ループを使用して を再作成しないでくださいextract()。これは非常に貧弱なプログラミング手法であり、非常に安全ではありません。誰かがあなたのスクリプトへの提出物をハックして提出した場合を考えてみてください_POST = foo。これで $_POST 配列はなくなりました。

于 2013-10-31T21:45:03.077 に答える