mySQL ORDER BY ASC работает, DESC - нет - PullRequest
0 голосов
/ 07 мая 2010

Я «интегрировал» SMF в Wordpress, запросив на форуме список последних видео с определенной доски объявлений и выложив их на домашней странице Wordpress. Однако, когда я добавляю предложение ORDER BY, запрос (который я успешно тестировал на других частях этой же страницы) прерывается.

Чтобы добавить к миксу, я использую плагин Auto Embed, позволяющий воспроизводить видео на домашней странице, а также функцию jCarousel для их поворота. Люди были достаточно любезны, чтобы помочь мне здесь в последний раз с помощью регулярного выражения для фильтрации URL-адресов видео, я надеюсь, что на этот раз удача будет такой же!

Вот вся функция (удалите DESC, и она работает ...):

function SMF_getRecentVids($limit=10){
global $smf_settingsphp_d;

if(file_exists($smf_settingsphp_d)) include($smf_settingsphp_d);

include "AutoEmbed-1.4/AutoEmbed.class.php";
$AE = new AutoEmbed();
$connect = new wpdb($db_user,$db_passwd,$db_name,$db_server);
$connect->query("SET NAMES 'UTF8'");

$sql = "SELECT m.subject, m.ID_MSG, m.body, m.ID_TOPIC, m.ID_BOARD, t.ID_FIRST_MSG
FROM {$db_prefix}messages AS m
LEFT JOIN {$db_prefix}topics AS t ON (m.ID_TOPIC = t.ID_TOPIC)
WHERE (m.ID_BOARD = 8)
ORDER BY t.ID_FIRST_MSG DESC";

$vids = $connect->get_results($sql);

$c = 0;
$content = "imageCarousel_itemList = [";
foreach ($vids as $vid) {
    if ($c > $limit) continue;
    //extract video code from body
    $input = $vid->body;
    $regexp = "/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i";
    if(preg_match_all($regexp, $input, $matches)) { 
        $AE->parseUrl($matches[0][0]);
        $imageURL = $AE->getImageURL();
        $AE->setWidth(290);
        $AE->setHeight(240);            
        $content .= "{url: '".$AE->getEmbedCode()."', title: '".$vid->subject."', caption: '', description: ''},";                      
    }
    $c++;
}
$content .= "]";
echo $content;

$wpdb = new wpdb(DB_USER, DB_PASSWORD, DB_NAME, DB_HOST);   

}

Ответы [ 4 ]

1 голос
/ 07 мая 2010
$sql = SELECT

Я думаю, вам не хватает вводной двойной кавычки.

0 голосов
/ 07 мая 2010

для интеграции SMF в Wordpress существует плагин, который может помочь вам сделать это, он называется: WP-Forum

найдите плагин под названием WP-Forum и установите оттуда.

Вот сайт http://www.fahlstad.se и их пример форума http://www.fahlstad.se/wp-forum/

Есть небольшой трюк, после того как вы установите плагин, зайдите в свой файловый / файловый менеджер, перейдите к wp-content / plugins и переименуйте wpforum в wp-forum, затем включите плагин, иначе вы получите сообщение об ошибке

надеюсь, что это поможет

0 голосов
/ 07 мая 2010

Оказывается, это был не запрос, а результаты.Я не избежал апострофа.Обновлено с помощью addlashes (), чтобы решить проблему:

$content .= "{url: '".$AE->getEmbedCode()."', title: '".addslashes($vid->subject)."', caption: '', description: ''}";

Отключение к кроватиСпасибо за быстрый ответ!

0 голосов
/ 07 мая 2010

Да, это может быть ваша проблема, используйте вот так

$sql = "SELECT m.subject, m.ID_MSG, m.body, m.ID_TOPIC, m.ID_BOARD, t.ID_FIRST_MSG
FROM {$db_prefix}messages AS m
LEFT JOIN {$db_prefix}topics AS t ON (m.ID_TOPIC = t.ID_TOPIC)
WHERE (m.ID_BOARD = 8)
ORDER BY t.ID_FIRST_MSG DESC";
...