Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在有序列表中输出数据库_Php_Html_Mysql_Html Lists - Fatal编程技术网

Php 在有序列表中输出数据库

Php 在有序列表中输出数据库,php,html,mysql,html-lists,Php,Html,Mysql,Html Lists,我的MySQL数据库中有这个表(只是一个示例) 我使用PHP将数据提取到我的网页,并希望它按如下类型显示在有序列表中 果 香蕉农场100000 苹果园10万 蔬菜 茄子街500号 苦瓜|村| 2000 有人能帮我写代码吗?我的数据库里有很多类型。我已经能够从数据库获取数据到我的网页 使用此代码,但我希望以与上面相同的方式输出数据 <?php $result = mysql_query("SELECT * FROM table;"); while($row = mysql_f

我的MySQL数据库中有这个表(只是一个示例)

我使用PHP将数据提取到我的网页,并希望它按如下类型显示在有序列表中

    • 香蕉农场100000
    • 苹果园10万
  • 蔬菜

    • 茄子街500号
    • 苦瓜|村| 2000
有人能帮我写代码吗?我的数据库里有很多类型。我已经能够从数据库获取数据到我的网页

使用此代码,但我希望以与上面相同的方式输出数据

<?php

$result = mysql_query("SELECT * FROM table;");

while($row = mysql_fetch_array($result)) {
    $id = $row['id'];   
    $name = $row['name'];
    $type = $row['type'];   

    echo "
        <tr>
            <td>$id</td>
            <td>$name</td>
            <td>$type</td>
        </tr>
"; 

?>

添加order by子句

select * from table order by type, name;
接下来,将类型放入变量中。对照结果中新行的新类型检查类型。如果相同,则渲染新行,否则关闭该行并插入新行

<?php
$result = mysql_query("SELECT * FROM table order by type, name;");
$oldtype = "";
while($row=mysql_fetch_array($result))
{

    $id = $row['id'];   
    $name = $row['name'];
    $type = $row['type'];   

    if ($type != $oldtype)
    {
        echo "
            <tr>
                <td>$type</td>
            </tr>
        ";
        $oldtype = $type;
    }

    echo "
            <tr>
                <td>$name</td>
            </tr>
    ";
    } ?>

我没有运行代码,但逻辑是正确的


请使用css将样式应用于缩进值。

SQL允许您使用“ORDER BY”子句对数据进行排序

例如,按您所做的编号/数量对数据进行排序

SELECT * FROM table ORDER BY number;
这将按数量从最小值或最大值对结果进行排序。而且

SELECT * FROM table ORDER BY number DESC;
将按数量从大到小对结果进行排序

在你的情况下,似乎你想按他们排序,然后按数量排序。那样的话你可以

SELECT * FROM table ORDER BY type ASC, number DESC;
根据您的选择,相应地修改行中的SQL查询。例如:

$result = mysql_query("SELECT * FROM table;");


就我个人而言,我更喜欢以我将首先显示数据的方式重新组织数据,这使得代码在结果上循环并显示它们更具可读性,例如:

<?php
$result = mysql_query("SELECT * FROM table ORDER BY number;");

$produceByType = array();

while ($row = mysql_fetch_array($result)) {
    $produceByType[ $row['type'] ][] = $row;
}
?>

<table>
<?php
foreach ($produceByType as $type => $produce):
?>
    <tr>
        <th colspan="3"><?= $type ?></th>
    </tr>
    <?php
    foreach ($produce as $row): ?>
        <tr>
            <td><?= $row['name'] ?></td>
            <td><?= $row['place'] ?></td>
            <td><?= $row['number'] ?></td>
        </tr>
    <?php
    endforeach;
endforeach; ?>
</table>

这可能会对您有所帮助

<?php
$result = mysql_query("SELECT DISTINCT(type) FROM table");
while($row=mysql_fetch_array($result))
{
    echo "<ul>
            <li>$row['type']
                <ul>";
    $result1 = mysql_query("SELECT * FROM table WHERE type=$row['type']");
    while($row1=mysql_fetch_array($result1))
    {
        echo "<li>$row1['name'] | $row1['place'] | $row1['number']</li>";
    }
    echo "</ul></li></ul>"
?>

你所需要做的就是跟踪类型更改的时间Hanks Dagon回答,我现在正在处理。还感谢Leushenko编辑了这个问题,感谢Matt现在正在做这个问题。你有其他更简单的方法吗?@sbjumani的回答可以说是一种更简单的方法。我刚刚编辑了答案中看起来像bug的内容,所以请再试一次,看看它是否适合您。我仍然喜欢我的方法,但是我是一个更有经验的PHP开发人员,所以我可以看到更多的代码总量可能会降低对PHP新手的期望。请注意,对于更复杂的情况,我的方法实际上会减少代码总量,并使其更具可读性。好的,谢谢Matt。我现在就试试,以后会给你反馈。谢谢Sunil的回答。我知道SQL中的ORDERBY方法。我想知道的是关于如何使用PHP使用orderd列表输出网页中数据的代码。我明白你的逻辑。但当我尝试代码时,输出结果如下所示*水果香蕉|农场| 100000苹果|公园| 100000茄子|街| 500苦瓜|村| 2000蔬菜字不输出手帕编辑。被接受的答案是,这不会导致多个查询而不是一次数据调用吗?哪种方法会导致反应较慢?还有一个问题。使用MYSQL和MYSQLI有什么区别@莫希特:基本上,它有助于阻止你。
<?php
$result = mysql_query("SELECT * FROM table ORDER BY number;");

$produceByType = array();

while ($row = mysql_fetch_array($result)) {
    $produceByType[ $row['type'] ][] = $row;
}
?>

<table>
<?php
foreach ($produceByType as $type => $produce):
?>
    <tr>
        <th colspan="3"><?= $type ?></th>
    </tr>
    <?php
    foreach ($produce as $row): ?>
        <tr>
            <td><?= $row['name'] ?></td>
            <td><?= $row['place'] ?></td>
            <td><?= $row['number'] ?></td>
        </tr>
    <?php
    endforeach;
endforeach; ?>
</table>
<?php
$result = mysql_query("SELECT DISTINCT(type) FROM table");
while($row=mysql_fetch_array($result))
{
    echo "<ul>
            <li>$row['type']
                <ul>";
    $result1 = mysql_query("SELECT * FROM table WHERE type=$row['type']");
    while($row1=mysql_fetch_array($result1))
    {
        echo "<li>$row1['name'] | $row1['place'] | $row1['number']</li>";
    }
    echo "</ul></li></ul>"
?>