【问题标题】:Display data fetched from remote PHP (mysql) in html table [closed]在 html 表中显示从远程 PHP(mysql)获取的数据[关闭]
【发布时间】:2018-06-23 16:16:28
【问题描述】:

我有一个 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);
?> 

【问题讨论】:

  • 嗨,我不得不将 java 重新标记为 javascript
  • 欢迎来到 Stack Overflow! SO 并不是一个“为我编写代码”的网站——如果这就是你要找的东西,你可能应该聘请专家为你做这件事。如果您在处理该问题时遇到具体技术问题,请随时相应地编辑问题。
  • 嗨@Pekka,我100% 支持你,因为它不是为我写的网站。我根据在网上找到的示例在问题中编写了此代码。它运作良好我只是遇到一个我无法解决的问题,因此我提出了问题。我已经完成了研究!

标签: javascript php mysql html-table


【解决方案1】:

这里的问题是您使用了两个不能完全协同工作的想法。这一行:document.getElementById("txtHint").innerHTML=xmlhttp.responseText; 将 id 为“txtHint”的标签的内容设置为您的 php 脚本返回的内容。这意味着当您的 php 返回时,例如: &lt;td&gt;blah&lt;/td&gt;&lt;td&gt;blah&lt;/td&gt;&lt;td&gt;blah&lt;/td&gt;
然后你的页面结束:

<div id="txtHint">
    <td>blah</td>
    <td>blah</td>
    <td>blah</td>
</div>

你看到这里发生了什么吗?您没有向现有行添加更多单元格,而是在已有的单元格中创建另一个表格(而且是一个糟糕的表格,没有 &lt;table&gt;&lt;tr&gt; 标记...)。

要解决此问题,请将 id 为“txtHint”的元素更改为您正在编辑的行的&lt;tr&gt; 标签,并更新 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>";
}

(代码未经测试,但会是这样)。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2013-03-27
    • 1970-01-01
    • 2020-12-14
    • 1970-01-01
    相关资源
    最近更新 更多