在html表中显示从远程php(mysql)获取的数据

问题描述:

我有一个php页面显示来自mysql数据库的数据,基于下拉列表选择,也从一个mysql数据库。这显然使用了Java脚本。在html表中显示从远程php(mysql)获取的数据

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> 

的GetData页

<?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); 
?> 

enter image description here

+1

嗨,我不得不''java'''''''''''''' – ianace 2012-01-13 08:48:56

+0

欢迎来到堆栈溢出! SO并不意味着成为“为我编写代码”的网站 - 如果您正在寻找这个网站,您应该聘请专家为您做。如果您在处理此问题时遇到*特定技术问题,请随时编辑相应的问题。 – 2012-01-13 08:51:11

+0

嗨@皮卡,我与你100%,它不是为我写的网站。我根据我在网上找到的例子,在这个问题中编写了这段代码。它运作良好我只有一个问题,我不能工作,因此我的问题。我已经完成了研究! – Smudger 2012-01-13 09:15:37

的这里的问题是,你已经使用了两个想法,不太共同努力。此行:document.getElementById("txtHint").innerHTML=xmlhttp.responseText;将标记的内容设置为“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>"; 
} 

(代码没有测试,但它会是这样的)。

当然有其他方法可以解决这个问题,几乎可以肯定会有更好的方法,但这是我想到的第一个想法。

+0

非常感谢! – Smudger 2012-01-13 20:54:50