从两个表创建一个列表

时间:2014-06-28 00:06:03

标签: php mysql database list

我的数据库中有两个表:

table name:    Table1     Table2
columns        id1;name1  id2;name2;id1

我想使用PHP输出一个嵌套的项目列表:

<ul>
    <li>item1 (from t1)</li>
    <li>item2 (from t1)</li>
    <li>item3 (from t1)
            <ul>
            <li>item1 (from t2 where id1 -> item3)</li>
            <li>item2 (from t2 where id1 -> item3)</li>
            </ul>
        </li>
    <li>item4 (from t1)</li>
    ...
</ul>

我想在服务器端执行此操作,但也欢迎使用CSS的任何建议。 非常感谢你的时间。

汤姆

2 个答案:

答案 0 :(得分:0)

我会引用此站点通过PHP打印出SQL查询的结果:

http://www.siteground.com/tutorials/php-mysql/display_table_data.htm

对于SQL查询,您建议的查询与您想要的输出不匹配,因为建议的HTML列表有来自table1的3个项目,但您建议的table1只有2个项目。

也许看起来像这样?

SELECT     T1.id1, T1.name1, T2.id2, T2.name2
FROM         dbo.table1 as T1 LEFT OUTER JOIN dbo.table2 as T2 ON T1.Id1 = T2.Id1

那会给你一个&#34;网格&#34;输出可以由PHP读取并格式化为列表,如您所建议的那样。它实际上只有4列,因为其中一个是多余的。

答案 1 :(得分:0)

好吧,我现在明白了:

查询是:

SELECT name1,name2 
FROM Table1 left join Table2 on Table1.id1=Table2.id1 
ORDER by Table1.id
表2中的

id1是外键= Table1.id1

然后是这个PHP代码生成html列表:

echo "<ul>";

    $a ="";  // helpers
    $b = 0;

    while($row = mysqli_fetch_array($result)) {

            if (isset($row['name2']) and $row['name1'] != $a and $b == 0) {

                echo "<li>".$row['name1']."<ul>";
                echo "<li>".$row['name2']."</li>";
                $a = $row['name1'];
                $b = 1;

            } 

            elseif (isset($row['name2']) and $row['name1'] == $a and $b == 1) {

                echo "<li>".$row['name2']."</li>";

            }

            elseif (isset($row['name2']) and $row['name1'] != $a and $b == 1) {

                echo "</ul>";
                echo "<li>".$row['name1']."<ul>";
                echo "<li>".$row['name2']."</li>";
                $a = $row['name1'];
                $b = 1;

            }

            elseif (!isset($row['name2']) and $row['name1'] !=$a and $b == 1) {

                echo "</ul>";
                echo "<li>".$row['name1']."</li>";
                $a = $row['name1'];
                $b = 0;

            }

            else {
                echo "<li>".$row['name1']."</li>";
                $a = $row['name1'];
                $b = 0;

            }
        }

    echo "</ul>";

只是要补充一点,没有名称1没有名称2,名称1就没有名称2。