动态生成的复选框不会将所有值插入到数组中

时间:2015-03-01 22:20:26

标签: php mysql mysqli

我有一个查询,用于选择数据库中未批准的所有用户。

$query = "SELECT * FROM users WHERE approved = '0';
$data = mysqli_query($dbc, $query);

然后,我想要做的是在一个表格中显示该人员列表,该表格中有一个列,其中包含一个复选框以批准该人员。

<table class="table mb-none">
    <thead>
        <tr>
            <th>Picture</th>
            <th>Username</th>
            <th>Profile Type</th>
            <th>First Name</th>
            <th>Last Name</th>
            <th>Email</th>
            <th>Phone Number</th>
            <th>Approve</th>
            <th>Deny/Delete</th>
        </tr>
    </thead>
    <tbody>

  <?php
   while($row = mysqli_fetch_array($data)){
      echo '<tr>'
            echo '<td><img width="70px" height:"90px" src="' . EHS_UPLOADPATH_STUDENTS . $row['picture'] . '"/></td>';
            echo '<td>' . $row['username'] . '</td>';
            echo '<td>Student</td>';
            echo '<td>' . $row['first_name'] . '</td>';
            echo '<td>' . $row['last_name'] . '</td>';
            echo '<td>' . $row['email'] . '</td>';
            echo '<td>' . $row['phone_number'] . '</td>';
            echo '<td style="text-align:center; padding:20px; background-color:#DFF0D8;">';
            echo '<input type="checkbox" name="approve[]" value = "'.$row['user_id'].'"></td>';
            echo '<td style="text-align:center; padding:20px; background-color:#FCDEDE;"><a href="profile_delete_info.php?user_id='. urlencode($row['user_id']) . '&amp;first_name=' . urlencode($row['first_name']) . '&amp;last_name=' . urlencode($row['last_name']) .'"><button type="button" class="mb-xs mt-xs mr-xs btn btn-danger">Deny/Delete</button></a>  </td>';
       echo '</tr>';}

enter image description here

这就是我试图处理这个问题的方法:

if(isset($_POST['submit'])){
    if(!empty($_POST['approve'])){
        $users = $_POST['approve'];
        foreach($users as $user){
            $query = "UPDATE users SET approved = '1' WHERE user_id = '". $user . "'";
            mysqli_query($dbc, $query);}}} ** here goes the rest of the code

现在,我遇到的问题是当我点击&#34;批准&#34;复选框并点击&#34;提交&#34;只处理数组批准[]中的第一项而不是其余项。我不知道为什么。我在过去的2个小时里一直在考虑这个问题而无法解决这个问题。

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

if(isset($_POST['submit'])){
if(!empty($_POST['approve'])){
    foreach($_POST['approve'] as $user){
        $query = "UPDATE users SET approved = '1' WHERE user_id = '". $user . "'";
        mysqli_query($dbc, $query);}}} ** here goes the rest of the code

如果这不起作用,请执行print_r($ _ POST [&#39;批准&#39;])并查看该数组的内容。

答案 1 :(得分:0)

我找到了解决方案......我为#&#34; foreach&#34;在错误的地方。谢谢你的帮助!