SQL数据:包含多行的列数据的HTML表格显示

时间:2013-11-25 22:05:58

标签: php html mysql database html-table

我甚至不确定如何正确地提出问题,否则我可能会找到答案。所以,我会尽力解释。

我正在使用一个名为SLDB的脚本(我没有编写这些脚本),而且就目前而言,脚本的功能与广告一样。我存储的数据,我希望回调到网站表(不是脚本的设计目的)。

目前,SLDB的设置方式,它以这种方式存储字段:

    ID     Field    Value
    001     name    name1      
    001     size    size1   
    002     name    name2       
    002     size    size2      
    003     name    name3
    003     size    size3

在将变量传递给database.php脚本的主脚本中,它将名称和大小作为“字段”传递,然后将每个值作为“值”传递。

我想在网页上显示的内容是:

    ID      Name    Size    
    001     name1   size1       
    002     name2   size2            
    003     name3   size3

事实上,我更倾向于重写原始脚本和database.php脚本以这种方式创建和更新表,但在我进入之前,我宁愿找到一种方法来完成我的任务而不需要重写,如果可能的话。

我对mySQL的熟练程度不足以了解如何使用多个变量获取字段(字段,值)以在单行中单独显示。目前,这是打印出来的方式:

http://wickednight.net/contests/photo-december/results.php

这是我编写的用于在html中显示表格的简单php脚本:

    <?php
    $con=mysqli_connect("localhost","***","***","***");
    // Check connection
    if (mysqli_connect_errno())
      {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
      }

    $result = mysqli_query($con,"SELECT * FROM sldb_data");

    echo "<table border='1' class='db-table' align='center'>
    <tr>
    <th>Name</th>
    <th>Size</th>
    </tr>";

    while($row = mysqli_fetch_array($result))
      {
      echo "<tr>";
      echo "<td>" . $row['field'] . "</td>";
      echo "<td>" . $row['value'] . "</td>";
      echo "</tr>";
      }
    echo "</table>";

    mysqli_close($con);
    ?>

我意识到,正如所写的那样,这个脚本完全按照要求去做。我想,我需要完成的事情是显而易见的。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

这应该有效:

SELECT t1.uuid, t1.value AS name, t2.value AS size FROM sldb_data t1, sldb_data t2
WHERE t1.uuid = t2.uuid AND t1.field = "name" AND t2.field = "size"

简短说明:

您可以为查询中的表指定其他名称。当你的表有长或无意义的名字时,这很好。这是在FROM部分中完成的。 “sldb_data t1”将名称“t1”赋予表“sldb_data”。

由于我们想要从同一个表中获取两个不同的行,我们必须使用相同的表两次,但我们必须给它两个不同的名称,否则mysql不知道你想要什么。您可以将其视为两个相同的表格。

现在我们在t1中找到一行,其中field =“name”,在t2中,field =“size”,但只与那些uuid匹配。

在SELECT之后,我们只在结果中列出我们想要的字段。我们再次给这些字段命名。但是对于字段,您必须使用“as”。

答案 1 :(得分:0)

我不确定你想要什么,但我可以说存储表单字段名称及其每个值都不是一个好主意。可能你已经知道我们使用post / get方法使用名称和值来插入目的。

你的sldb_data表可能有

id(PK) name( varchar) size(int) 

在三列中,然后更改您的查询,如

SELECT name,size FROM sldb_data 

并且您的代码应该

while($row = mysqli_fetch_array($result))
      {
      echo "<tr>";
      echo "<td>" . $row['name'] . "</td>";
      echo "<td>" . $row['size'] . "</td>";
      echo "</tr>";
      }