php - 按特色排序 - php mysql

标签 php mysql

我有一个产品表,其中有一列名为“featured”(int,默认为 0)。当我在第一个位置添加特色产品时,它将在此列中添加值“1”,第二个位置添加值“2”,依此类推。 。 我的问题是,当我在第一或第二位置上没有产品,但只有第三或第二位置上有产品时,它会在第一位置上“推广”第三个产品。 有没有办法用默认选择查询中的产品填充非促销位置(例如:第一或第二),并在第三个位置上显示“特色”值为 3 的特色产品?

最佳答案

基本上,您需要跟踪已填充的特色空位以及需要填充的空位。您可能还需要担心您的列表是否不够长,无法容纳所有特色老虎机...因此您可以执行以下操作:

$qh = mysql_query('SELECT featured, ... FROM products ORDER BY featured DESC');

//get the featured rows first;
while($row = mysql_fetch_assoc($qh)) {
    if($row['featured'] > 0) {
        $featured[$row['featured']] = $row;
    } else {
        break;
    }
}
//values were inserted in reverse, so reorder them.
ksort($featured);

$idx = 1;
//make sure there was a next row from above while loop
if($row) {
    do {
       //print any featured rows that should appear at position $idx
        while(isset($featured[$idx])) {
            printRow($featured[$idx]);
            $idx++;
        }
        //$idx doesn't have a featured row, so print a non-featured one
        printRow($row);
        $idx++;
    } while($row = mysql_fetch_assoc($qh));
}

//print any remaining featured rows
foreach($featured as $key => $value) {
    if($featured >= $idx) {
         printRow($value);
    }
}

关于php - 按特色排序 - php mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5229576/

相关文章:

MySQL 错误 1118 行大小太大 (> 8126)

php - 我的自定义 Drupal 站点无法正确解析 URI

php - 如何将 LDAP 时间戳转换为 Unix 时间戳

mysql - 如何使用 MySQL 用一个不同的特定列显示行两次?

php - 如何从数据库中的数据打印列表

php - 在哪里回滚 PDO 中的事务?

PHP获取数组中出现次数最多的第5个元素

php - 未打印 FPDF A4 尺寸

php - 反射(reflect)列表而不刷新php中的页面

MySql 通过 ODBC 到 SPSS - 无法检索字符串