我在我的网站上有这个表单来更改用户列表中用户的激活状态,因此管理员可以禁止人员进入管理区域。表单用于显示激活状态,然后显示0或1作为选项。如果您下拉并更改为相反的选项,它将在您更改激活编号的特定用户名下更改数据库中的激活状态编号。我遇到了问题,因为当您更改数字时,页面会在发生某些事情时刷新。但它似乎根本不发送信息或更改数据库?有没有人在这里得到任何帮助?谢谢。
$outputList .= '<tr><td>'. $id .'</td><td>'. $firstname .'</td>
<td>'. $lastname .'</td>
<td><form name="activationsend" action="admin.php?page=2" method="POST">
<input type="hidden"/>
<select name="act" onchange="this.form.submit();">
<option style="display:none">'. $activated .'</option>
<option name="0" value="0" >0</option>
<option name="1" value="1" >1</option>
</select>
</td>
<td><a href="'. $username .'">'. $username .'</a></td>
</form>
</tr>';
}
$outputList .= '</tbody>
</table>';
if (isset($_POST['activationsend'])){
$activated = $_POST['act'];
$username = $_POST['$username'];
$exists = mysql_query ("SELECT * FROM users WHERE username='$username'") or die ("not found");
if (mysql_num_rows($exists) != 0){
//update the info in database
mysql_query ("UPDATE users SET activated='$activated' WHERE username='$username'") or die ("update didn't work");
echo "worked";
} else echo "did not work";
}
答案 0 :(得分:1)
试试这个条件
if (isset($_POST['act'])){
// ...
}
我不确定,激活发送到服务器。
因此,您也可以尝试var_dump($_POST)
函数在请求后显示您的POST数据:
$outputList .= '</tbody>
</table>';
var_dump($_POST);
它将返回POST数据或NULL。
<强> UPD。强>
您还需要传递用户名数据。尝试改变
<a href="'. $username .'">'. $username .'</a>
到
<a href="'. $username .'">'. $username .'</a>
<input type="hidden" name="username" value="'.$username.'" />
答案 1 :(得分:1)
首先,用户名不会发布到服务器,而是在$username
中使用username
变量而不是$_POST
。
应该是这样的:
if (isset($_POST['activationsend'])){
$activated = $_POST['act'];
$username = isset($_POST['username'])? $_POST['username'] : '';
// Check if $username is empty or not
if($username != ""){
$exists = mysql_query ("SELECT * FROM users WHERE username='$username'") or die ("not found");
if (mysql_num_rows($exists) != 0){
//update the info in database
mysql_query ("UPDATE users SET activated='$activated' WHERE username='$username'") or die ("update didn't work");
echo "worked";
} else echo "did not work";
}
}
如果该用户名的数据库中没有记录,则会显示"did not work"
希望,它会解决你的问题。