php - 正在使用数据库中的最后一条记录,而不是所需的记录

标签 php jquery mysql ajax forms

我创建了一个批准/拒绝用户系统,但遇到了问题。

我首先必须批准或拒绝用户。如果该用户获得批准,他们的姓名将被放置在页面的另一个部分,称为“批准的用户”。在此区域中,我更改用户的权限/组级别。但是,如果我在已批准的用户部分中有多个用户,则如果我尝试更新用户,则无论我尝试更改哪个用户,它都会更新显示的最后一条记录。

例如,如果我有这个并尝试更新 Rick 的记录,Bob 的记录也会被更新。鲍勃的记录将是我数据库中的最后一条记录。

-Bob
-Tony
-Rick

每当我批准该记录时,正确的用户记录就会更改。只有当我尝试更改组/权限部分时,它才无法正常工作。

从这里开始它可以工作..

    $con = mysqli_connect("localhost", "", "", "");
$run = mysqli_query($con,"SELECT * FROM user_requests ORDER BY id DESC");
$numrows = mysqli_num_rows($run);

    if( $numrows ) {
        while($row = mysqli_fetch_assoc($run)){
            if($row['status'] == "Pending"){

                $pending_id        = $row['id'];
                $pending_user_id   = $row['user_id'];
                $pending_firstname = $row['firstname'];
                $pending_lastname  = $row['lastname'];
                $pending_username  = $row['username'];
                $pending_email  = $row['email'];
?>
        <form action="" method="POST" id="status">
             <input type='hidden' name='id' value='<?php echo $pending_id; ?>' id='pending_id'/>
<?php
        if ($pending_firstname == true) {
            echo "Name - ". $pending_firstname . " " . $pending_lastname . "</br>" . 
                "Username - ". $pending_username . "</br></br>"
                //echo print_r($_POST);
?>


                        <button class="approve" type="submit" form="status" name="approve" value="<?=$pending_id;?>">Approve</button>
                        <button class="deny" type="submit" form="status" name="deny" value="<?=$pending_id;?>">Deny</button>
                        </form><br><br><br>
<?php   
                    ;} else {
                        echo "There are no Pending Requests at this time.";
                    }
                }
            }
        }
?>
<hr><br>

结束待处理用户,到目前为止,它可以正常工作并使用单击的正确用户。现在,当我尝试更新用户信息时,它更新了显示的第一个用户......

        <h2>Approved User Requests</h2><br>
        <div id="success" style="color: red;"></div><br>
<?php
    $con2 = mysqli_connect("localhost", "", "", "");
    $run2 = mysqli_query($con2,"SELECT * FROM user_requests ORDER BY id DESC");
    $runUsers2 = mysqli_query($con2,"SELECT * FROM users ORDER BY id DESC");
    $numrows2 = mysqli_num_rows($run2);

        if( $numrows2 ) {
            while($row2 = mysqli_fetch_assoc($run2)){
                if($row2['status'] == "Approved"){
                //var_dump ($row2);

                    $approved_id        = $row2['user_id'];
                    $approved_firstname = $row2['firstname'];
                    $approved_lastname  = $row2['lastname'];
                    $approved_username  = $row2['username'];
                    $approved_email  = $row2['email'];

        if ($approved_firstname == true) {
            echo "Name - ". $approved_firstname . " " . $approved_lastname . "</br>" . 
                "Username - ". $approved_username . "</br></br>"
?>
<div class="change_group_button"> 
     <a class="change_group" href="javascript:void(0)">Change User Permission</a>
</div><br>
<div id="light" class="change_group_popup">
    <a class="close" href="javascript:void(0)">Close</a>
 <div class="group_success" style="color: red;"></div><br>
    <form id="update_group" action="" method="POST" accept-charset="utf-8">
       <div class="field">
        <label for="group">Group</label>
        <input type="hidden" value="<?php echo $approved_id; ?>" id="approved_id" name="id" />
        <input type="hidden" value="<?php echo $approved_firstname; ?>" id="approved_firstname" name="firstname" />
        <input type="hidden" value="<?php echo $approved_lastname; ?>" id="approved_lastname" name="lastname" />
        <input type="hidden" value="<?php echo $approved_username; ?>" id="approved_username" name="username" />
        <input type="hidden" value="<?php echo $approved_email; ?>" id="approved_email" name="email" />
        <select id='group_id' name='group' required>
            <option value=''><?php echo htmlentities($group); ?></option>
            <option value="1">Bench</option>
            <option value="2">Spectator</option>
            <option value="3">Team Member</option>
            <option value="4">Commissioner</option>
        </select>
    </div>
    <input type="submit" value="submit" name="group">
    </form>

我用来更新信息的 AJAX..

//AJAX call for Approving the status
$(document).ready(function () {

    $('.approve').click(function () {
        $.ajax({
            url: 'userRequest_approve.php',
            type: 'POST',
            data: {
                id: $(this).val(), //id
                status: 'Approved' //status
            },
            success: function (data) {
                //do something with the data that got returned
                $("#success").fadeIn();
                $("#success").show();
                $('#success').html('User Status Changed!');
                $('#success').delay(5000).fadeOut(400);
            },
            //type: 'POST'
        });
        return false;
    });
});


//AJAX call for updating the group
$(document).ready(function () {


    $('#update_group').on('submit', function (event) {
    event.preventDefault();
        $.ajax({
            url: 'user_group_update.php',
            type: 'POST',
            data: {
            id: $("#approved_id").val(), //id
            firstname: $("#approved_firstname").val(), //firstname
            lastname: $("#approved_lastname").val(), //lastname
            username: $("#approved_username").val(), //username
            email: $("#approved_email").val(), //email
           // update_group: $("#group_id").val() //group level
          update_group: $(this).find( "#group_id option:selected" ).val()
        },
            success: function (data) {
                //do something with the data that got returned
                $(".group_success").fadeIn();
                $(".group_success").show();
                $('.group_success').html('User Permission Level Changed!');
                $('.group_success').delay(5000).fadeOut(400);
                alert(data);
            },
             error: function(jqXHR, textStatus,errorThrown )
            {
              // alert on an http error 
              alert( textStatus +  errorThrown );
            }
        });
        return false;
    });
});

我相信整个问题都与 id 有关,但我不明白我得到的 id 有什么问题。有人看到我做错了什么导致了这个吗?

最佳答案

在代码的第一部分中,我发现了一些语法错误。更正为:

<?php
$con = mysqli_connect("localhost", "", "", "");
$run = mysqli_query($con,"SELECT * FROM user_requests ORDER BY id DESC");
$numrows = mysqli_num_rows($run);
if( $numrows ) {
    while($row = mysqli_fetch_assoc($run)){
        if($row['status'] == "Pending"){
            $pending_id        = $row['id'];
            $pending_user_id   = $row['user_id'];
            $pending_firstname = $row['firstname'];
            $pending_lastname  = $row['lastname'];
            $pending_username  = $row['username'];
            $pending_email     = $row['email'];
            echo "<form action='' method='POST' id='status'>\r\n";
            echo "<input type='hidden' name='id' value='$pending_id' id='pending_id' />\r\n";
            if ($pending_firstname == true) {
                echo "Name - $pending_firstname $pending_lastname</br>\r\n";
                echo "Username - $pending_username</br></br>\r\n";
                echo "<button class='approve' type='submit' form='status' name='approve' value='$pending_id'>Approve</button>\r\n";
                echo "<button class='deny' type='submit' form='status' name='deny' value='$pending_id'>Deny</button>\r\n";
                echo "</form><br><br><br>\r\n"; 
            } else {
                echo "There are no Pending Requests at this time.";
            }
        }
    }
}
?>

其次,我担心您的双重查询。我建议运行查询,迭代结果,然后运行第二个查询。为了安全起见,还应该在每次查询后释放结果。如果这是在同一页面中,我也不会创建新连接。

如果您可以从控制台发布任何错误或结果,可以扩展我的答案。

关于php - 正在使用数据库中的最后一条记录,而不是所需的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32208672/

相关文章:

php - 如何确保MySQL中基于日期和时间的正确排序

javascript - 重新对齐按钮 InnerText 以获得更大的数字。

javascript - bootstrap 3 datepicker(eonasdan 版本)提供了一个带有 getDate() 的日期时间对象。不是字符串

mysql - SQL 设置日期戳

用于按组和总计数获取计数的mysql查询

php - mysql缓存和memcached的区别

php - WordPress 只能使用 777 权限

php - 如何在 $_POST 上散列 SHA2?

javascript - Highcharts - 如何在悬停时将工具提示放在每个饼图切片的图标后面?

mysql - 获取相互连接的MySQL