【问题标题】:Display Table Results Based on Dropdown Selection根据下拉选择显示表格结果
【发布时间】:2017-03-01 19:56:35
【问题描述】:

我有一个由数据库中的列填充的下拉列表。在选择时,我希望它显示列等于下拉列表中选择的值的任何表结果。每当我选择一个值时,我都可以显示表头,但没有显示其他数据。

我正在执行echo $q,它返回了正确的值。所以它似乎正在获取选定的值并将其正确传递给test1.php,所以我猜测我的test1.php 脚本中的某处一定有问题。

如何解决此问题,以便显示具有与所选内容相同的 Product Report Code 列的数据库行?

HTML/PHP:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script>
function showUser(str) {
    if (str == "") {
        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","test1.php?q="+str,true);
        xmlhttp.send();
    }
}
</script>
</head>
<body>

<form>
<section id="rep_dropdown">
    <select onchange="showUser(this.value)" name="users">       
        <option value="">Product Report Code</option>
        <?php foreach($repcode->fetchAll() as $reportcode) { ?>
            <option value="<?php echo $reportcode['Product Report Code'];?>"><?php echo $reportcode['Product Report Code'];?></option>
        <?php } ?>
    </select>
</section>
</form>
<br>
<div id="txtHint"><b>Person info will be listed here...</b></div>

</body>
</html>

test1.php:

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
</head>
<body>

<?php
$q = intval($_GET['q']);
echo $q;

  $host="xxxxxxxxx"; 
  $dbName="xxxxxxxxx"; 
  $dbUser="xxxxxxxxxxxxxx"; 
  $dbPass="xxxxxx";

  $dbh = new PDO( "sqlsrv:server=".$host."; Database=".$dbName, $dbUser, $dbPass);

$sql="SELECT * FROM vProducts WHERE [Product Report Code] = '".$q."'";
$result = sqlsrv_query($dbh,$sql);

?>



<table id="skuTable" cellspacing="5" class="sortable">
        <tr class="ui-widget-header">
            <th style="display: none">Product ID</th>
            <th class="skuRow">Major Category</th>
            <th class="skuRow">Minor Category</th>
            <th class="skuRow">Report Code</th>
            <th class="skuRow">SKU</th>
            <th class="skuRow">SKU Description</th>
            <th class="skuRow">SKU Status</th>
            <th class="skuRow">Create Date</th>
            <th class="skuRow">Group ID</th>
            <th class="sorttable_nosort">Edit</th>
        </tr>


        <?php while($row = sqlsrv_fetch_array($result)) { ?>

        <tr class="Row" data-code="<?php echo $row['Product Report Code']?>">
            <td style="display: none" class="prod_id" id="product_id-<?php echo intval ($row['Product_ID'])?>"><?php echo $row['Product_ID']?></td>
            <td class="major_cat" id="major_cat-<?php echo intval ($row['Major Category'])?>"><?php echo $row['Major Category']?></td>
            <td class="minor_cat" id="minor_cat-<?php echo intval ($row['Minor Category'])?>"><?php echo $row['Minor Category']?></td>
            <td class="rep_code" id="rep_code-<?php echo intval ($row['Product Report Code'])?>" align="center"><?php echo $row['Product Report Code']?></td>
            <td class="sku" id="sku-<?php echo intval ($row['SKU'])?>" align="center"><?php echo $row['SKU']?></td>
            <td class="sku_desc" id="sku_desc-<?php echo intval ($row['SKU Description'])?>"><?php echo $row['SKU Description']?></td>
            <td class="sku_status" id="sku_status-<?php echo intval ($row['SKU Status'])?>" align="center"><?php echo $row['SKU Status']?></td>
            <td class="create_date" id="create_date-<?php echo intval ($row['Date'])?>" align="center"><?php echo $row['Date']?></td>
            <td class="group_id" id="group_id-<?php echo intval ($row['Group_ID'])?>" align="center"><?php echo $row['Group_ID']?></td>
            <td><input type="button" class="edit" name="edit" value="Edit" onclick="enable_value(this)"></td>
        </tr>

    <?php } ?>

</table>


</body>
</html>

【问题讨论】:

    标签: php jquery html sql-server


    【解决方案1】:

    我不确定 sql server 是否接受像 Product Report Code 这样的表列名称

    如果为真,那么这里的连接有问题,

    $dbh = new PDO( "sqlsrv:server=".$host."; Database=".$dbName, $dbUser, $dbPass);
    
    $sql="SELECT * FROM vProducts WHERE [Product Report Code] = '".$q."'";
    $result = sqlsrv_query($dbh,$sql);
    

    您正在使用 PDO 扩展名和 sqlsrv 扩展名,它们完全不同。

    您必须选择一种方式连接到您的数据库。

    这是一个完整的 PDO 示例:

    $dbh = new PDO( "sqlsrv:server=".$host."; Database=".$dbName, $dbUser, $dbPass);
    
    $sql="SELECT * FROM vProducts WHERE [Product Report Code] = :placeholder";
    $stm = $dbh->prepare($sql);
    $result = $stm->execute(array("placeholder" => $q);
    

    编辑

    您还需要更新这一行:

    <?php while($row = sqlsrv_fetch_array($result)) { ?>
    

    到:

    <?php while($row = $stm->fetch()) { ?>
    

    【讨论】:

    • 有道理,但是我的表格中的结果仍然没有显示
    • 我已经更新了我的答案,如果出现任何数据库错误,请尝试调试并在此处提供
    • 嘿,它有效!惊人的!我唯一的另一个问题是,每当我在下拉列表中选择一个值时,例如04010110,它会返回401110 的值......知道为什么它会切断第一个0吗?跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2015-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多