更改选择选项时如何更新数据库 - PHP,AJAX

时间:2016-05-22 02:13:42

标签: php jquery html ajax select

我有一个用PHP制作的表,现在我想让用户使用下拉菜单(select / option)更改每个用户的访问级别。例如:

enter image description here

一旦用户按下常规,它就会将请求发送到ajax,立即更改/更新数据库。

admin.php的

Settings → Mirror Repository

changeLevel.php

    <?php
//database connection
include("db_conn.php");
include("session.php");

session_start();

$username = $_SESSION['logged_in']; //set the current user
$query = "SELECT `ID`, `Username`,`Name`, `DOB`, `Email`, `Access` FROM `users`";

$result =   $mysqli->query($query);
$row=$result->fetch_array(MYSQLI_ASSOC);


    function show_table($myData)
    {
        echo "<table border=1 id='staff_table'>
        <tr>
        <th>ID</th>
        <th>Username</th>
        <th>Name</th>
        <th>DOB</th>
        <th>Email</th>
        <th>Access</th>
        </tr>";
        while ($row = $myData->fetch_array(MYSQLI_ASSOC))
        {   
            $access= $row['Access'];
            $access2;


              $access_data = 1; //admin = level 1
              $access_data2 = 2; //general = 2
            if($access == 1)
            {
                $access = "Admin";
                $access2 = "General";

                $access_data = 1; //change when the page loads (depending what access level they are)
                $access_data2 = 2; //change when the page loads
            }
            else
            {

                $access = "General";
                $access2 = "Admin";

                $access_data = 2; //the reason i have these values is they 
                $access_data2 = 1; //change depending on what the user's access level is once the page loads
            }

            echo "<tr>";
            echo "<td>" . $row['ID'] . "</td>";
            echo "<td>" . $row['Username'] . "</td>";
            echo "<td>" . $row['Name'] . "</td>";
            echo "<td>" . $row['DOB'] . "</td>";
            echo "<td>" . $row['Email'] . "</td>";
            echo "<td id='" . $row['ID'] .  "'>";
            echo "<select name='admin_menu' class='admin_menu'>"; 
            echo '<option class="admin_option" value="' . $access_data2. '">' . $access . '</option>';
            echo '<option class="admin_option" value="' . $access_data. '">' . $access2 . '</option>';
            echo "</select>";
            echo "</td>";
            echo "</tr>";
        }
        echo "</table>";
    }

?>
<html>
    <head>
        <title>Admin Table</title>
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.2/jquery.min.js"></script>
        <script>
            $(document).ready(function(){
                $('.admin_menu').change(function() {
                    id = $(this).parent().attr('id');
                    level = $('.admin_menu  option:selected').val();
                    var request = $.ajax({
                      url: "changeLevel.php",
                      method: "POST",
                      data: { id : id, level: level },
                      dataType: "html"
                      });

                    request.done(function() {
                       //location.reload(); //reload page (if it actually updates)
                    });

                    });
                });
        </script>   
    </head>


    <body>
        <h1>Admin Table</h1>
        <?php show_table($result); ?>
    </body>
</html>

用户表没有更新,还有其他解决方案吗?或者任何人都可以看到问题?在此先感谢,我是AJAX的新手,所以所有的帮助都值得赞赏:)

2 个答案:

答案 0 :(得分:2)

当使用

对字段进行更改时,您可以触发表单帖子
  

平变化=&#39; this.form.submit()&#39;

所以您的选择框可能看起来像这样

  <form action='' method='post'>
      <select name="dropdown" onchange='this.form.submit()'>
          <option name="option1" value="option1">This is Option 1</option>            
          <option name="option2" value="option2">This is Option 2</option>            
      </select>
  </form>

答案 1 :(得分:1)

首先改变这一行

echo "<select name='admin_menu' class='admin_menu'>"; 
echo '<option class="admin_option" value="' . $access_data2. '">' . $access . '</option>';
echo '<option class="admin_option" value="' . $access_data. '">' . $access2 . '</option>';
echo "</select>";

echo "<select name='admin_menu' class='admin_menu' id='Selectid' onchange='postlist();'>"; 
echo '<option class="admin_option" value="'.$access_data2.'-'.$access.'">'.$access.'</option>';
echo '<option class="admin_option" value="'.$access_data.'-'.access2 .'">'.$access2.'</option>';
echo "</select>";

在更改后的行中,我在更改onchange=""后,将id=""函数和"select"添加到<option value="">标记; "$access_data""$access"与&#34; - &#34;一起添加爆炸的价值。

的JavaScript

<script>
    function postlist() {
    $.ajax({
        type: 'POST', 
        url: 'changeLevel.php', // here posting value to your php file
        data: $('#Selectid').val(), // here get the option value from select
        success: function (answer) {
            $("#ReportResult").html(answer) // here you can define an alert function for after success or you can use it with an id for showing the response
        }
    })
}
</script>  
在changeLevel.php中

<?php
include("db_conn.php");

$id = $_POST['id']; //here we get value like (13-Admin);
$ids = explode("-", $id); //and here we explode the $id value (explode mean split the value with "-" or you can define "space",",","." or another sign)

    $queryUpdate="UPDATE users SET Access='$ids[1]' WHERE ID='$ids[0]'";
    $update = $mysqli->query($queryUpdate);
?>
  

PS = $ ids [0] eq到id和$ ids [1] eq到Level

     

您可以轻松更改此订单