2015-08-25 27 views
0

我有一個批准/拒絕用戶系統,我創建並且遇到了問題。正在使用數據庫中的最後一條記錄而不是所需的記錄

我首先必須批准或拒絕用戶。如果該用戶被批准,他們的名字將被放置在頁面的另一個名爲「Approved Users」的部分。在此區域內,我更改了用戶的權限/組級別。但是,如果我在批准的用戶部分中有多個用戶,如果我嘗試更新用戶,它會更新顯示的最後一條記錄,而不管我嘗試更改哪個用戶。

例如,如果我有這個並試圖更新瑞克的記錄,鮑勃的將被更新。 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有什麼問題。有沒有人看到我做錯了,這是造成這種情況?

+0

我看不到'$ group'的定義。 – Twisty

回答

0

在代碼的第一部分中,我發現了一些語法錯誤。更正如下:

<?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."; 
      } 
     } 
    } 
} 
?> 

其次,我擔心你的雙重查詢。我會建議運行查詢,迭代結果,然後運行第二個查詢。在每個查詢之後還應該釋放結果以保證安全。如果這是在同一頁面中,我也不會創建一個新的連接。

如果您可以發佈任何錯誤或結果形式您的控制檯,可以擴大我的答案。

+0

我不太清楚你的解釋是什麼意思「我會建議運行查詢,迭代結果,然後運行第二個查詢。還應該在每個查詢之後釋放結果以保證安全」....截至目前,我沒有任何錯誤。這有效,但它沒有得到我點擊的用戶正確的ID。它只使用該表中數據庫中的第一個。 – Becky

+0

好的,所以當你通過POST傳遞'id'時,PHP收到什麼值?我也從來沒有看到你調用'$ _POST ['id']'。還有'value =「<?= $ pending_id;?>」'是不正確的語法。應該是'value =「<?php echo $ pending_id;?>」'這是我在我發佈的代碼中糾正的。 – Twisty

相關問題