我有一个PHP页面,它显示来自mysql数据库的数据,基于下拉列表选择,也来自mysql数据库。这显然使用了JavaScript。
PHP和mysql集成工作正常,但我需要改变数据的显示方式。
目前返回的mysql数据显示在一个表格单元格中,我希望每个返回的mysql字段都显示在自己的表格单元格中。
我添加了输出的照片,我希望它显示在每个表格单元格中,而不是一个。
我已经附加了我的PHP文件和查询数据库的PHP文件的代码。
非常感谢任何帮助!
的index.php
<html>
<head>
<script type="text/javascript">
function showUser(str)
{
if (str=="")
{
document.getElementById("txtHint").innerHTML="";
return;
}
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 (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","getdata.php?q="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>
<?php
$con = mysql_connect('localhost', 'unilever_root', 'Unilever2011');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("unilever_unilever", $con);
$skusql="SELECT packcode from skudata";
$resultsku=mysql_query($skusql);
$optionssku="";
while ($row=mysql_fetch_array($resultsku))
{
$sku=$row["packcode"];
$optionssku.="<OPTION VALUE=\"$sku\">".$sku;
}
?>
<table border=1>
<tr>
<td>SKU</td>
<td>Description</td>
<td>SU</td>
<td>Points</td>
<td>Category</td>
<td>Grouping</td>
</tr>
<tr>
<td>
<select name="users" onchange="showUser(this.value)">
<OPTION VALUE=0>
<?=$optionssku?>
</SELECT>
</td>
<td>
<div id="txtHint"><b>SKU Details will be seen here</b></div>
</td>
</tr>
</table>
</body>
</html>
获取数据页
<?php
$q=$_GET["q"];
$con = mysql_connect('localhost', 'dbuser', 'password');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("unilever_unilever", $con);
$sql="SELECT * FROM skudata WHERE packcode = '".$q."'";
$result = mysql_query($sql);
while($row = mysql_fetch_array($result))
{
echo "<td>" . $row['Description'] . "</td>";
echo "<td>" . $row['SellingUnits'] . "</td>";
echo "<td>" . $row['EOTTPoints'] . "</td>";
echo "<td>" . $row['Category'] . "</td>";
echo "<td>" . $row['Grouping'] . "</td>";
}
mysql_close($con);
?>
答案 0 :(得分:1)
这里的问题是你使用了两个不太合作的想法。这一行:document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
将id为“txtHint”的标记内容设置为php脚本返回的内容。这意味着当你的php返回时,例如:
<td>blah</td><td>blah</td><td>blah</td>
然后您的页面最终会显示:
<div id="txtHint">
<td>blah</td>
<td>blah</td>
<td>blah</td>
</div>
你看到这里发生了什么吗?您没有向现有行添加更多单元格,而是在您已经拥有的单元格中创建另一个表格(在此单独创建一个表格,没有<table>
或<tr>
标记......)
要解决此问题,请将ID为“txtHint”的元素更改为您正在编辑的行的<tr>
标记,并更新php以返回该行的第一个单元格,例如:
HTML:
<table border=1>
<tr>
<td>SKU</td>
<td>Description</td>
<td>SU</td>
<td>Points</td>
<td>Category</td>
<td>Grouping</td>
</tr>
<tr id="txtHint">
<td>
<select name="users" onchange="showUser(this.value)">
<OPTION VALUE=0>
<?=$optionssku?>
</SELECT>
</td>
<td colspan="5">SKU Details will be seen here</td>
</tr>
PHP:
while($row = mysql_fetch_array($result))
{
echo "<td><select name='users' onchange='showUser(this.value)'><OPTION VALUE=0>";
echo $optionssku; //Not sure where this variable comes from, so I'll leave getting it from wherever necessary to you
echo "</SELECT></td>";
echo "<td>" . $row['Description'] . "</td>";
echo "<td>" . $row['SellingUnits'] . "</td>";
echo "<td>" . $row['EOTTPoints'] . "</td>";
echo "<td>" . $row['Category'] . "</td>";
echo "<td>" . $row['Grouping'] . "</td>";
}
(代码未经过测试,但它会是这样的。)
当然还有其他方法可以解决这个问题,几乎肯定是更好的方法,但这是第一个出现在我身上的想法。