数据库输入多条记录

时间:2016-07-01 09:29:29

标签: php html

我有一个mysqli数据库表中显示的非活动用户表。然后,我为每个用户创建了一个新行,每行包含一个包含dropmenu的单元格,其中包含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>

我正在尝试编写一些类似于foreach dropmenu的基本代码,其值为“activate”,将用户插入到激活的表中。每个选择菜单都具有从db表中收集的$username名称。到目前为止,我有类似的东西。

  if(isset($_POST['submit']))

{

$activate = $_POST["activate"];
$delete = $_POST["delete"];
$admin = $_POST["admin"];

foreach ($username == $_POST["activate"]{

2 个答案:

答案 0 :(得分:0)

首先,当handle $ var等于$ _POST时,你需要检查是否设置了$ _POST,否则你会收到错误。

if(isset($_POST['activate'])) $activate = $_POST['activate'];

好吧,那么,如果你选择4个用户,如果你想处理它,你可以使用Ajax。使用js关闭提交按钮上的默认操作,然后将所有ID用于激活,删除所有ID以及所有任何ID,并在阵列上连接[&#39; action_type&#39;] [&# 39; USER_ID&#39;];

然后,你只需将$ _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 ......)

希望它有所帮助!

答案 1 :(得分:0)

Php for select:

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

然后javascript(使用jQuery):

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.
        }
    });
}

然后只需编写PHP即可接收此信息(靠近同一页面的顶部)

获取您的信息:

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();
    }
}