【问题标题】:How to sort and display database results with MySQL/PHP如何使用 MySQL/PHP 对数据库结果进行排序和显示
【发布时间】:2013-12-08 19:08:27
【问题描述】:

我正在使用 PHP 将我网站上的项目分类到不同的位置/不同的 div 中。我在每个 div 中都有一个脚本,我希望在其中显示结果所以如果有 4 个 div,则有 4 个脚本。 (4 类)每个脚本在我的页面头部都有一个查询。

类别/div 1 的 MySQL 查询

$sql_category1 = <<<SQL
  SELECT *
  FROM `list_items`
  WHERE `category` = 1 
  ORDER BY `rating` ASC;
SQL;

if(!$category1 = $db->query($sql_category1 )){
    die('There was an error running the query [' . $db->error . ']');
}

类别/div 1 的我的 PHP:

<?php 
    while($row = $category1->fetch_assoc()) {

    '<div class="list-item-container">'
    . '<a href="' . $row['url'] . '"><img title="' . $row['title'] . '" class="favicon" src="http://www.google.com/s2/favicons?domain='. $row['fav_url'] . '" /></a>'
    . '</div>';

}
?>

我的目标:当我在表格中输入数据时,有两个项目可以归类为两个不同的东西,所以两个不同的类别,我必须制作两个副本。这样一个项目将出现在两个类别中。同一项目两个不同的类别。我将其中一个项目的类别值指定为 1,将另一个项目的类别值指定为 2。

除了为同一个项目创建两个单独的条目之外,有没有一种方法可以为该项目提供两个单独的类别值?这样,当我的脚本运行并对它们进行排序时,该项目将出现在两个类别中。

我尝试了 1,2 1:2 和 1;2 作为项目的值。我敢肯定它甚至不接近那个。

提前致谢!

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    制作 3 张桌子:

    类别(id、名称、...)

    项目(id,名称,...)

    item_category (id_item, id_category)

    他们在您的查询中加入它们,例如您的第一个查询将变为

    SELECT *
    FROM `list_items` t,`item-category`
    WHERE `id_category` = 1
      and `id_item` = t.`id`
    ORDER BY `rating` ASC;
    

    获得连接表后,您可以在其中放入任何您想要的连接

    【讨论】:

    • 编辑:不知道你在做什么。抱歉,这很新鲜。 .好吧,我列出的示例几乎是我在生产中使用它的方式,但是,我使用的列远不止 3 列,有 30 列。我刚刚从上面的示例中删除了其余的代码,只包含了 3 列。你的方法仍然有效吗?而不是我必须制作 30 张新桌子?我真正需要做的就是给项目类别两个值或 3 个值或 4。取决于项目。
    • 这是一个有效的方法。请参阅从en.wikipedia.org/wiki/First_normal_form 开始到所有正常形式,以了解应如何制作表格。这是一篇关于您的案例的文章
    • 现在我正坐在有 500 个表的 Oracle 数据库前 :)
    • 嗯,我可能不得不重做我的整个数据库,或者至少我创建要放入其中的内容的方式。我使用电子表格。我在类别列 1-4 值中给出一行,而不是输入 4 个条目,然后将其上传到数据库。有什么想法吗?
    • 您根本无法在关系数据库中做到这一点。至少,这将是一种非常奇怪的方式
    猜你喜欢
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2021-06-29
    • 2021-04-06
    • 2017-08-30
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    相关资源
    最近更新 更多