繁体   English   中英

如何从下拉列表中获取选定的值并在查询中使用它而不单击提交?

[英]How to get the selected value from dropdown and use it in query without clicking submit?

我正在制作一个图表,该图表将根据从下拉列表中选择的年份显示其结果。 是否可以从下拉列表中获取变量并在查询中使用它而不单击提交按钮? 我试过这段代码,但没有成功:

<?php
                    require '../includes/dbheader.php';
                    $query = "SELECT DISTINCT DATE_FORMAT(orderdate, '%Y') AS year
                              FROM prodsoldmonthly 
                            ";
                    $result = mysqli_query($conn, $query);  
                    echo "<select id='selectyear[]' name='selectyear' class='cd-select filter-input'>";
                    echo "<option class='dropdown' value='' selected>Choose Year</option>";
                    while($row = mysqli_fetch_assoc($result)) {
                    echo "<option class='dropdown' value='{$row['year']}'>".htmlspecialchars($row["year"])."</option>";
                    }
                    echo "</select>";

              ?> 
              <script>
              $yearselected = $("#selectyear option:selected").text(); 
              </script>
                  <!-- Products Sold per Category -- YEAR -->
                <?php  
                include('../includes/dbheader.php');
                  $query = "SELECT categoryName, qty, DATE_FORMAT(orderdate, '%Y') AS year
                            FROM prodsoldmonthly WHERE year = '$yearselected'
                            ";
                  $result = mysqli_query($conn, $query);  
                ?>   

                <script type="text/javascript">  
                   google.charts.load('current', {'packages':['corechart']});  
                   google.charts.setOnLoadCallback(drawChart);  
                   function drawChart()  
                   {  
                        var data = google.visualization.arrayToDataTable([  
                            ['categoryName', 'qty'],  
                              <?php  
                                while($row = mysqli_fetch_array($result))  
                                {  
                                echo "['".$row["categoryName"]."', ".$row["qty"]."],";  
                                }  
                                ?>  
                             ]);  
                        var options = {  
                              title: 'Products Sold Per Category by Year',  
                              is3D:true,  
                              pieHole: 0.4  
                             };  
                        var chart = new google.visualization.PieChart(document.getElementById('piechartyear'));  
                        chart.draw(data, options);  
                   }  
               </script> 

您可以使用 AJAX 来启动带有年份的请求,而无需提交整个页面:

function queryProducts(yearselected) {

   var xmlhttp = new XMLHttpRequest();

   xmlhttp.onreadystatechange = function() {
      if (this.readyState == 4 && this.status == 200) {
         // this line will be called when the query finishes successfully
         document.getElementById("products").innerHTML = this.responseText;
      }
    };

    // set url with parameter
    xmlhttp.open("GET", "products.php?yearselected=" + selectedyear, true);
    xmlhttp.send();

}

将“onchange”侦听器添加到您的选择以在传递所选年份时调用该函数:

<select id='selectyear[]' name='selectyear' onchange="queryProducts(this.value)" class='cd-select filter-input'>";

最后,添加一个占位符以显示查询结果:

<div id="products"></div>

编辑:

对于 select 语句,将代码放在另一个页面中,例如 products.php 并在 AJAX 函数中调用该页面:

<?php

    // products.php

    include('../includes/dbheader.php');

    // get url parameter
    $yearselected = intval($_GET['yearselected']);

    $query = "SELECT categoryName, qty, DATE_FORMAT(orderdate, '%Y') AS year 
              FROM prodsoldmonthly WHERE year = '".$yearselected."'";

    $result = mysqli_query($conn, $query);

    echo "<table>
             <tr>
                <th>Category</th>
                <th>Qty</th>
                <th>Order date</th>
             </tr>";
    while($row = mysqli_fetch_array($result)) {
        echo "<tr>";
        echo "<td>" . $row['categoryName'] . "</td>";
        echo "<td>" . $row['qty'] . "</td>";
        echo "<td>" . $row['orderdate'] . "</td>";
        echo "</tr>";
    }
    echo "</table>";

    mysqli_close($conn);

?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM