Php 数据库条目多个记录

Php 数据库条目多个记录,php,html,Php,Html,我在mysqli数据库的表中显示了一个非活动用户表。然后,我为每一个用户创建了一个新行,并为每一行创建了一个单元格,其中包含一个下拉菜单,该菜单有3个选项:admin、delete user、activate user。 $stmt = $mysqli->prepare("SELECT username, firstname, lastname, registerdate FROM users WHERE level < 1"); $stmt->bind_param('ssss

我在mysqli数据库的表中显示了一个非活动用户表。然后,我为每一个用户创建了一个新行,并为每一行创建了一个单元格,其中包含一个下拉菜单,该菜单有3个选项:admin、delete user、activate user。
$stmt = $mysqli->prepare("SELECT username, firstname, lastname, registerdate FROM users WHERE level < 1");
$stmt->bind_param('ssss', $_GET['username'], $_GET['firstname'], $_GET['lastname'], $_GET['registerdate']);
$stmt->execute();
$stmt->bind_result($username, $firstname, $lastname, $registerdate);
?>


<table>
<tr>
<th colspan="7"><h1>Inactive Users</h1></th>
<tr>
<td><h2>Username</h2></td>
<td><h2>Firstname</h2></td>
<td><h2>Lastname</h2></td>
<td><h2>Date Registered</h2></td>
<td><h2>Days Inactive</h2></td>
<td><h2>Activate</h2></td>
<td><h2>Submit</h2></td>

<?php 

while ($stmt->fetch()){

$today = new DateTime("now");  
$registered = new DateTime($registerdate);  
$dayspassed = date_diff($registered, $today);

echo '<tr class="'.$username.'">
    <td>'.$username.'</td>
    <td>'.$firstname.'</td>
    <td>'.$lastname.'</td>
    <td>'.$registered->format("d-m-y").'</td>
    <td>'.$dayspassed->format("%a days").'</td>
    <td>
        <select name="'.$username.'" id="'.$username.'">
        <option selected>Select Action</option>
        <option value="activate">Activate User</option>
        <option value="delete">Delete User</option>
        <option value="admin">Admin</option>
        </select>
    </td>
    <td><input type="submit" name="'submit'" value="Confirm" />
    </td>';
}


$stmt->close();
?>
</table>
{


首先,当handle$var等于$\u POST时,需要检查是否设置了$\u POST,否则会出现错误

if(isset($_POST['activate'])) $activate = $_POST['activate'];
好的,然后,如果你选择4个用户,例如,如果你想处理它,你可以使用Ajax。使用js关闭提交按钮上的默认操作,然后使用所有id进行激活,所有id进行删除,所有id进行任何你想要的操作,并在数组['action_type']['user_id']上进行concat

然后,您只需通过$\u POST将其发送到另一个php进行处理

要获得更好的示例解释,您可以获得:

array['activate']['1'];
array['activate']['2'];
array['delete']['3'];
array['activate']['4'];
或者你可以

array['activate']['1,2,4'];
array['delete']['3'];
然后,您可以激活用户1、2和3,并在循环中删除用户4(使用您喜欢的。while、do while、for、foreach…)

希望对您有所帮助!

Php for select:

<select name="'.$username.'" onchange="updateUser(this)" id="'.$username.'">

为什么不在每次更改下拉列表时都进行ajax更新?我很难理解您想要什么。您能更具体一点吗?当按下提交时,选择菜单的选项将定义结果。如果我想在选择菜单中为3个用户分配管理员并单击提交时,将他们添加到我不明白AJAXAjax比一开始看起来要容易得多,我保证。
array['activate']['1,2,4'];
array['delete']['3'];
<select name="'.$username.'" onchange="updateUser(this)" id="'.$username.'">
function updateUser(param) {
    var username = $(param).attr('id');
    var action = $(param).val();
    var phpDataPrepare = [username, action];
    var phpData = JSON.stringify(phpDataPrepare);
    $.ajax({
        url:'<?php echo htmlspecialchars($_SERVER["PHP_SELF"]) . "?action=update_user"; ?>',
        data: phpData,
        type: 'POST',
        success: function(data){
            //data = response
            //put any javascript here as a success function if needed.
        }
    });
}
if(isset($_GET['action']){
    if($_GET['action'] == 'update_user'){
        $info = json_decode(file_get_contents('php://input'));
        $username = $info[0];
        $action = $info[1];
        //Do what needs to be done
        exit();
    }
}