Php 基于下拉选择显示表格结果
我有一个下拉列表,由数据库中的一列填充。在选择时,我希望它显示列等于下拉列表中所选值的任何表格结果。每当我选择一个值时,我都可以得到要显示的表标题,但是没有显示其他数据 我正在执行一个Php 基于下拉选择显示表格结果,php,jquery,html,sql-server,Php,Jquery,Html,Sql Server,我有一个下拉列表,由数据库中的一列填充。在选择时,我希望它显示列等于下拉列表中所选值的任何表格结果。每当我选择一个值时,我都可以得到要显示的表标题,但是没有显示其他数据 我正在执行一个echo$q,它正在返回正确的值。因此,它似乎获得了所选的值并将其正确地传递给test1.php,因此我猜我的test1.php脚本中一定有什么地方出错了 如何修复此问题,以便显示具有与所选内容相等的列产品报告代码的数据库行 HTML/PHP: <html> <head> <scrip
echo$q
,它正在返回正确的值。因此,它似乎获得了所选的值并将其正确地传递给test1.php
,因此我猜我的test1.php
脚本中一定有什么地方出错了
如何修复此问题,以便显示具有与所选内容相等的列产品报告代码
的数据库行
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>
函数showUser(str){
如果(str==“”){
document.getElementById(“txtHint”).innerHTML=“”;
回来
}否则{
if(window.XMLHttpRequest){
//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}否则{
//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
document.getElementById(“txtHint”).innerHTML=this.responseText;
}
};
open(“GET”、“test1.php?q=“+str,true”);
xmlhttp.send();
}
}
产品报告代码
人员信息将在此处列出。。。
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>
我不确定sql server是否接受这样的表列名称
产品报告代码
如果是真的,那么你的连接有问题
$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示例:
$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)) { ?>
致:
这是有道理的,但是我的表中的结果仍然没有显示我已经更新了我的答案,如果出现任何数据库错误,请尝试调试,并在此处提供它。嘿,它工作了!令人惊叹的我唯一的另一个问题是,每当我在下拉列表中选择一个值,例如0401
或0110
,它就会返回401
和110
的值……你知道为什么它会切断前一个0吗?
<?php while($row = $stm->fetch()) { ?>