【问题标题】:Order by DESC not working for custom variable $how按 DESC 排序不适用于自定义变量 $how
【发布时间】:2014-01-01 13:53:08
【问题描述】:

我有以下功能,我需要更新 $how 以便按 site_views DESC 对视频进行排序 我尝试了很多次,但显示相同的输出或我得到空输出。提前致谢。

function list_videos($how = 'added', $limit = '15') { // newest, top views, etc etc etc
    $query = mysql_query("SELECT * FROM pm_videos ORDER BY $how DESC LIMIT $limit");
    $result = '';
    while ($row = mysql_fetch_array($query)) {

        $results .= "
                <div class=\"item\">
                <a href=\"" . makevideolink($row['uniq_id'], $row['artist'], $row['video_title']) . "\"><img src=\"" . show_thumb($row['uniq_id']) . "\" alt=\"" . $row['video_title'] . "\" class=\"imag\" width=\"107\" height=\"72\" /></a>
                <a href=\"" . makevideolink($row['uniq_id'], $row['artist'], $row['video_title']) . "\" class=\"song_name\">
                <span class=\"artist_name\">" . fewchars($row['artist'] . " - " . $row['video_title'], 30) . "</span>
                </a>
                <span class=\"item_views\">" . pm_number_format($row['site_views']) . " views</span>
                </div>";
    }
    return $results;
}

这里的精选视频被调用,但与其他代码分开显示(与播放器一起加载)

function make_voth() {

    global $config;

    $video_id = '';

    $sql = "SELECT uniq_id 
            FROM pm_videos 
            WHERE featured = '1' 
            ORDER BY rand() 
            LIMIT 1";
    $result =  @mysql_query($sql);

    if (@mysql_num_rows($result) == 0)
    {
        $sql = "SELECT uniq_id 
                FROM pm_videos,
                ORDER BY rand() 
                LIMIT 1";

        $result = @mysql_query($sql);
        $row    = @mysql_fetch_assoc($result);
        $video_id = $row['uniq_id'];
        mysql_free_result($result);
    }
    else
    {
        $row = mysql_fetch_assoc($result);
        mysql_free_result($result);

        $video_id = $row['uniq_id'];
    }

    return $video_id;
}
function show_more_featured($mvotd = '', $limit = 3) {
    //  todo
}
function show_voth_title() {    
    //  @deprecated
}

【问题讨论】:

  • 所以.... function list_videos($how = 'site_views', $limit = '15') ?
  • 是 $how = 'add', $limit = '15'
  • 没有。阅读我刚刚放在那里的内容。这是解决方案。
  • @DigitalChris 您评论中的function 可能会混淆操作。
  • 仍然随机显示输出(视频)

标签: php mysql


【解决方案1】:

您目前有一个函数默认显示按added 排序的 15 行。您可以通过以下两种方式之一进行更改:

更改函数本身。这将使 DEFAULT 值为site_views

function list_videos($how = 'site_views', $limit = '15') { // newest, top views, etc etc etc

现在,如果您致电list_videos(),您将获得按网站浏览量降序排列的 15 个结果。

你可以改变你在某个地方调用函数的方式:

list_videos('site_views', 25);

这将按 site_views 排序并最多显示 25 个。

list_videos('video_title', 25);

另一个例子,按名称 DESC 排序可能不好,但你明白了......

【讨论】:

  • 使用 'site_views' 返回相同的结果视频是随机排序的,就像我使用 rand() 排序一样!
  • 那么您将不得不在调用它的位置显示更多代码,因为您在这里拥有的内容非常简单。 SELECT * FROM pm_videos ORDER BY site_views DESC 直接进入 mysql,如果你想查看这些结果并进行比较。
  • 我添加了另一个代码,但将 rand 更改为 desc 将始终在播放器中播放一个视频。
  • 是的,make_voth() 会随机返回一个视频。现在我什至不知道你的问题是什么。
  • 我单独使用 make_voth ,但我的问题是在“site_views” DESC 之后显示“精选”视频的问题,甚至使用 SELECT * FROM pm_videos Where features=1 ORDER BY site_views DESC 这无法正常工作并显示随机精选视频
【解决方案2】:
$featured = list_featured_videos('SELECT * FROM pm_videos  WHERE featured="1" ORDER BY site_views DESC LIMIT 10');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-13
    • 1970-01-01
    • 1970-01-01
    • 2018-04-25
    • 2017-12-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多