获取的下拉菜单中选择项目,并在PHP

问题描述:

使用它,我已经从数据库中获取列表联盟(如预期该列表中填充)下面的下拉列表获取的下拉菜单中选择项目,并在PHP

<form style = "display: inline-block;" > 
     <select class="form-control" name ="coalition_select" onchange = "showCandidates(this.value)" method="GET"> 
      <option id = "coalition_id" value="coalition">Coalitions</option> 
       <?php 
        include_once 'connection.php'; 
        $sql_coalition = mysqli_query($conn, "SELECT coalition FROM candidates"); 
        while ($row = $sql_coalition->fetch_assoc()) { 
         echo "<option value=\"coalition\">" . $row['coalition'] . "</option>"; 
        } 
       ?> 
     </select> 
</form> 

问题开始这里。在这里,我试图首先从下拉列表中获取选定的值(这是联盟的),然后使用该值显示具有类似联盟属性的用户。

这里是脚本来从下拉列表中值:

<script> 
    function showCandidates (str) { 
     if (str.length == "") { 
      document.getElementById("txtHint").innerHTML = ""; 
      return; 
     } else { 

      if (window.XMLHttpRequest) { 
      // code for IE7+, Firefox, Chrome, Opera, Safari 
      xmlhttp = new XMLHttpRequest(); 
      } else { 
       // code for IE6, IE5 
       xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xmlhttp.onreadystatechange = function() { 
       if (this.readyState == 4 && this.status == 200) { 
        document.getElementById("txtHint").innerHTML = this.responseText; 
       } 
      }; 
      xmlhttp.open("GET","includes/admin.users.list.inc.php?q="+str,true); 
      xmlhttp.send(); 
     } 
    } 
</script> 

这里是admin.users.list.inc.php文件

<body> 
    <?php 
     $q = $_GET['q']; 
     $conn = mysqli_connect('localhost','root','','voting'); 
     if (!$conn) { 
      die('Could not connect: ' . mysqli_error($conn)); 
     } 

     mysqli_select_db($conn,"osako_Voting"); 
     $sql="SELECT * FROM candidates WHERE coalition = '".$q."'"; 
     $result = mysqli_query($conn,$sql); 

     echo "<table> 
     <tr> 
     <th>Firstname</th> 
     <th>Lastname</th> 
     <th>Coalition</th> 
     <th>Email</th> 
     </tr>"; 
     while($row = mysqli_fetch_array($result)) { 
      echo "<tr>"; 
      echo "<td>" . $row['firstname'] . "</td>"; 
      echo "<td>" . $row['lastname'] . "</td>"; 
      echo "<td>" . $row['coalition'] . "</td>"; 
      echo "<td>" . $row['email'] . "</td>"; 
      echo "</tr>"; 
     } 
     echo "</table>"; 
     mysqli_close($conn); 
     ?> 
</body> 

的问题似乎因为我无法设置变量$q以便捕获选定的值。现在,因为它被设置好了,它似乎捕获索引而不是价值本身。这怎么能正确完成?如果是的任何帮助,我用这个教程作为指导 https://www.w3schools.com/php/php_ajax_database.asp

IN夏日: 如果我们有一个已被动态填充使用PHP脚本一个下拉列表。如何可以使用ajax获取选定的值,并在另一个php脚本中使用该值。

感谢

+0

不明白的问题,在我看来。请让它易于理解并清除“你的问题是什么” – vietnguyen09

+0

@ vietnguyen09如果我们有一个使用php脚本动态填充的下拉列表。如何可以使用Ajax获取选定的值,并在另一个PHP脚本中使用所述值 – jimiss

+0

所以,你只是想要在'选择框'中的javascript选择值? – vietnguyen09

看来问题是此行中:

echo "<option value=\"coalition\">" . $row['coalition'] . "</option>"; 

你传递的选择值showCandidates(),通过AJAX传递,但你设置选项值始终是静态的“联盟”,而不是你从数据库中获取的动态值。 也许你应该行更改为

echo "<option value=\"" . $row['coalition'] . "\">" . $row['coalition'] . "</option>"; 
+0

谢谢你是正确的! – jimiss

你不设置valuevalue attribute。您只需设置所有选项常量字符串值coalition

while ($row = $sql_coalition->fetch_assoc()) { 
    echo "<option value=\"$row['coalition']\">" . $row['coalition'] . "</option>"; 
} 

我知道你已经接受一个答案,但我困惑的是这一点; 在你的函数你有这样的

document.getElementById("txtHint").innerHTML = "";

但你没有任何形式的元素与ID "txtHint"

那么哪些因素正在排序与ID?