PHP / MYSQL下拉列表中的错误显示正确的项目信息

时间:2017-10-23 11:16:46

标签: php html mysql

目前我正在练习HTML / PHP / MySQL,我正在开展一个小项目。

我创建了一个页面,允许用户从MySQL表中找到的记录中读取数据。用户可以通过PHP表单单击值下拉列表。

该数据库适用于商店,有1张桌子。该表称为“产品”。当我单击产品ID的下拉列表时,产品ID中的数据将显示在页面上。

我试图将这个PHP代码嵌入到php文件中。它显示了所有数据,这不是我想要的。我想允许用户从下拉列表中选择任何项目,然后当用户选择其中一个项目时,它将在PHP页面上显示该表格。

以下是代码:

<div class="container">
        <br>
        <br>
        <?php
        //load_data_select  
        function fill_settlement($conn) {
            $output = '';
            $sqlDropDownSettlementID = "SELECT  * FROM `settlements` where total_amount";
            $DropDownSettlementID = mysqli_query($conn, $sqlDropDownSettlementID);
            while ($row = mysqli_fetch_array($DropDownSettlementID)) {
                $output .= '<option value="' . $row["settlement_id"] . '">' . $row["settlement_id"] . '</option>';

            }
            return $output;
        }
        function fill_product($connect) {
            $output = '';
            $sql = "SELECT * FROM `settlements` where total_amount";
            $dropdownresult = mysqli_query($connect, $sql);
            while ($row = mysqli_fetch_array($dropdownresult)) {
                $output .= '<table class="table table-bordered table-striped table-hover table-condensed table-responsive">';
                $output .= '<tr>';
                $output .= '<td>' . $row["sku"] . '</td>';
                $output .= '<td>' . $row["settlement_start_date"] . '</td>';
                $output .= '<td>' . $row["settlement_end_date"] . '</td>';
                $output .= '<td>' . $row["currency"] . '</td>';
                $output .= '<td>' . $row["total_amount"] . '</td>';
                $output .= '</tr>';
                $output .= '</table>';

            }
            return $output;
        }

        ?>  

        <div class="container">  
            <label class="col-sm-3 control-label">Settlement ID</label>
             <div class="col-sm-3">
            <select class="form-control" name="Settlement" id="Settlement">  
                <option value="">Show All Product</option>  
                <?php echo fill_settlement($conn); ?>  
            </select> 
             </div>
            <br><br>  
            <div class="row" id="show_product">  
                <?php echo fill_product($conn); ?>  
            </div> 

        </div> 

screenshot here

我能够获取下拉列表中的数据,但是当我从下拉列表中单击某个项目时,我无法获得正确的数据,我希望在屏幕上填充正确的数据。

我在Google上搜索过帮助或建议,但我找不到合适的信息。

2 个答案:

答案 0 :(得分:0)

您有两种可能性:

  • 您将SELECT放在表单中。用户选择一个值并按下提交。这会将选择发送到您在表单中定义的操作页面。该操作页面进行选择,构建查询以从数据库中提取数据并向用户显示结果。
  • 当您的用户选择一个值时,您可以执行AJAX来动态更新页面。用户无需按提交按钮。 AJAX调用PHP脚本。该PHP脚本从数据库中提取数据,并以显示详细信息所需的格式返回结果。

这两种方法都在这里解释:
表格:https://www.w3schools.com/php/php_forms.asp
AJAX:https://www.w3schools.com/js/js_ajax_intro.asp

答案 1 :(得分:0)

仔细查看您的代码。第一个红旗应该是您使用相同的查询来获取所有选项以及单个产品。

您的fill_product方法没有参数来识别您想要的产品。

首先,我建议你查看html表单的工作原理。 页面的基本工作流程应该是:

  1. 从选择框中选择结算。你得到了这个,但没有表格可以将用户选择发送回服务器。
  2. 将选择内容发送到服务器并处理表单。表格数据将由超级全球以$ _POST [&#34;结算&#34;]或$ _GET [&#34;结算&#34;]的形式传递到您的PHP脚本,您可以阅读差异在POST和GET之间。
  3. 在您的fill_product方法中为settlement_id添加一个参数,并更改查询where子句以获取用户选择的单行。
  4. 有关如何将选择传递到服务器的详细信息,您有多种选择 - POST / GET表单是最简单的选择。或者如果你想要看上去,你可以查看更高级的javascript和AJAX。