2013-10-31 148 views
2

我正在尝试在用户可以登录和编辑用户/产品的网站上构建管理员登录部分。我希望能够使用户和产品处于活动状态或不活动状态,而不是从数据库中删除它们。让用户活跃/不活跃php mysql

我知道我可以使用tinyint(1)作为true或false值(活动或不活动)。在我的数据库中,我有一个数据类型为tinyint(1)的“isactive”字段,并将默认值设置为1.(希望这将意味着是true或active)

在我的编辑用户窗体的顶部,下面的代码:

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”

如果任何人都可以在正确的方向指向我,我会非常感激。谢谢。

回答

2

考虑:

<select name="status"> 

您应该使用

$_POST['status']; 

,因为这是特殊形式的领域正在被提交的名称。

同样,不要使用foreach()循环来重新创建extract()。这是非常糟糕的编程习惯,也非常不安全。考虑有人对你的脚本提交提交并提交_POST = foo的情况。现在你的$ _POST数组是GONE。

+0

感谢您抽出时间发表评论。我现在用'$ status = $ _POST ['status'];'但我仍然得到警告未定义索引:状态... –

+0

如果您的表单正在使用'method =“get”',并且您正在使用'$ status = $ _POST ['status'];'是的,它会报告它是未定义的。 @PhilPountney –