PHP HTML表单未将数据发布到数据库?

PHP HTML表单未将数据发布到数据库?,php,html,mysql,forms,Php,Html,Mysql,Forms,我在我的网站上有这个表单来更改用户列表中用户的激活状态,因此管理员可以禁止用户进入管理员区域。该表单用于显示激活状态,然后显示0或1作为选项。如果您下拉并更改为相反的选项,它将更改数据库中您更改激活号的特定用户名下的激活状态号。我遇到了一个问题,因为当您更改号码时,页面会随着某些事情的发生而刷新。但它似乎根本不发送信息或更改数据库?这里有人帮忙吗?谢谢 $outputList .= '<tr><td>'. $id .'</td><td>'. $fi

我在我的网站上有这个表单来更改用户列表中用户的激活状态,因此管理员可以禁止用户进入管理员区域。该表单用于显示激活状态,然后显示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";
}
$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";
  }
}