0

如果今天是我的第二个帖子很糟糕,我很抱歉,但我还需要一点帮助。我在 mysql DB 中有一个表,其中包含一些产品(id、name、description、price、url、CATEGORY)。现在,当我显示产品时,我需要先显示所有 category='X' 的产品(不管表中产品的实际顺序),然​​后是 category="Y" 的产品,最后是 category 的产品=“Z”。只有 3 个类别,我只是将该列添加到产品表中,而没有创建单独的“类别”表(我知道这很糟糕)。这是提取所有产品的简单代码(我不能使用 PDO,因为网站很旧并且只能使用旧/常规 mysql 完成)

while($prod = mysql_fetch_assoc($sql)) {
    $id = $prod['id'];
    $titolo = $prod['titolo'];
    $descr = $prod['descrizione'];
    $prezzo = $prod['prezzo'];
    $foto_piccola = $prod['url_foto_piccola'];
    $foto_grande = $prod['url_foto_grande'];
    $cat = $prod['categoria'];
            // display all products
}

那么有什么想法我怎样才能轻松/快速地做到这一点?我的第一个猜测是在 while() 循环中创建一个 switch('category'),但我最终得到了很多重复的代码。

非常感谢任何帮助和建议,谢谢

这是我的 $sql$sql = mysql_query(" SELECT * FROM prodotti Order BY categoria='marmellata' DESC, categoria='altro' DESC, categoria='oli' DESC")

点这种方式是行不通的。我想提取类别的名称并在其下方显示该类别的产品

4

2 回答 2

1

Order By category如果您的类别字段是 INT 并且您的类别按您想要的顺序输入,您可以这样做。

-或者-

如果您的类别是按名称输入的,您可以这样做Order BY category='X' DESC, category='Y' DESC, category='Z' DESC(尽管我建议按 ID 输入它们)

于 2013-05-03T22:08:30.303 回答
1

你甚至可以使用 SQL 的 Field() 函数

order by Field(category, X, Y, Z)
于 2016-05-29T05:43:41.587 回答