PHP HTML表单未将数据发布到数据库?
我在我的网站上有这个表单来更改用户列表中用户的激活状态,因此管理员可以禁止用户进入管理员区域。该表单用于显示激活状态,然后显示0或1作为选项。如果您下拉并更改为相反的选项,它将更改数据库中您更改激活号的特定用户名下的激活状态号。我遇到了一个问题,因为当您更改号码时,页面会随着某些事情的发生而刷新。但它似乎根本不发送信息或更改数据库?这里有人帮忙吗?谢谢PHP HTML表单未将数据发布到数据库?,php,html,mysql,forms,Php,Html,Mysql,Forms,我在我的网站上有这个表单来更改用户列表中用户的激活状态,因此管理员可以禁止用户进入管理员区域。该表单用于显示激活状态,然后显示0或1作为选项。如果您下拉并更改为相反的选项,它将更改数据库中您更改激活号的特定用户名下的激活状态号。我遇到了一个问题,因为当您更改号码时,页面会随着某些事情的发生而刷新。但它似乎根本不发送信息或更改数据库?这里有人帮忙吗?谢谢 $outputList .= '<tr><td>'. $id .'</td><td>'. $fi
$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";
}
$outputList.=''$身份证$名字。”
“.$lastname。”
“.$已激活。”
0
1.
';
}
$outputList.='
';
如果(isset($_POST['activationsend'])){
$activated=$_POST['act'];
$username=$_POST['$username'];
$exists=mysql_查询(“从用户名为“$username”的用户中选择*)或die(“未找到”);
如果(mysql_num_rows($exists)!=0){
//更新数据库中的信息
mysql_查询(“更新用户集激活=“$activated”,其中用户名=“$username”)或死亡(“更新不起作用”);
回声“工作”;
}否则回声“不起作用”;
}
试试这个条件
if (isset($_POST['act'])){
// ...
}
我不确定,激活发送到服务器。
因此,您也可以尝试使用var\u dump($\u POST)
函数在请求后显示您的POST数据:
$outputList .= '</tbody>
</table>';
var_dump($_POST);
$outputList.='
';
变量转储($\u POST);
它将返回POST数据或NULL
UPD.
您还需要传递用户名数据。尝试改变
<a href="'. $username .'">'. $username .'</a>
进入
首先,用户名不会发布到服务器上,您使用的是
$username
变量,而不是$\u POST
中的username
应该是这样的:
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";
}
}
若数据库中并没有该用户名的记录,它将显示“未工作”
希望,它能解决您的问题。表单现在正在启动,但它回显“不起作用”不知道为什么?在发送时,Var_转储会说“array(1){[“act”]=>string(1)“1”}不起作用”哦。您有一个错误:
$username=$\u POST['$username']代码>更改为$username=$\u POST['username']
您不需要将$
写为数组索引:$username=$\u POST['username'];/'username'是表单字段的名称,但不是“$username”
array(1){[“act”]=>string(1)“1”}不起作用,仍然给我这个名称代码>用户名也从来没有发布过,没有这样的字段,那么如何根据单击的用户名将用户名设置为字段?请记住,这是一个用户名列表,每个单独的用户名上都有表单?好吧,在提交的用户名之前做一个下拉列表
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";
}
}