Попытка получить несколько случайных видео из базы данных, но он все время показывает одно и то же - PullRequest
0 голосов
/ 17 января 2011

Я пытаюсь получить несколько случайных видео из моей базы данных и показать их на странице. Однако он просто продолжает захватывать одно и то же видео, а не несколько разных. В итоге я получаю 5 одинаковых видео, а не 5 разных.

Вот файл произвольного PHP-кода для захвата ... и после него выходной файл шаблона.

//=====================================================
// Random | Previous | Next
//=====================================================
$show['random'] = $db->quick_fetch(
   "SELECT file_id, title, title_seo, category_id, thumb FROM files 
      WHERE files.category_id = '".$show['main']['category_id']."'
            AND files.verified=1 ORDER BY RAND() LIMIT 0,1;
");

Вот шаблон CSS html штуковинный код, который я вставил 5 раз, чтобы показать 5 случайных видео

            <td  valign="top" width="53%"><?

$ sql = "выбрать * из файлов ORDER BY rand () limit 0,5"; $ Рез = @ mysql_query ($ SQL); $ данных = @ mysql_result ($ Рез, 0, 'имя файла'); $ ID = @ mysql_result ($ Рез, 0, 'file_id'); $ Название = @ mysql_result ($ Рез, 0, 'название'); $ title2 = str_replace ("", "-", $ title); $ PATH = "$ {SITEURL} / медиа / {$ file.random.file_id} / {$ file.random.title_seo} /"; $ IMG = "{$ SiteURL} / палец / {$ file.random.thumb}"; echo "
{$ file.random.title}"

Ответы [ 2 ]

1 голос
/ 17 января 2011

Вы не можете просто вставить его 5 раз. Вы также должны выполнить запрос 5 раз. Но это тоже не правильный способ сделать это. Вы должны выполнить запрос один раз и изменить LIMIT 0,1 на LIMIT 0,5 или просто LIMIT 5. Затем переберите 5 случайных результатов в шаблоне smarty.

Вот как вы перебираете ассоциативный массив в smarty (он же CSS html штуковинный код):

http://www.smarty.net/docsv2/en/language.function.section.tpl

Редактировать

Хорошо, этот код выглядит не намного лучше. давайте разберемся с этим немного. Вы выполняете свой запрос в phpmyadmin или каком-либо другом инструменте, чтобы убедиться, что он возвращает то, что вы хотите? Сначала сделайте это, убедитесь, что запрос правильный.

Во-вторых, вы используете умный даже? Я только догадался, потому что это то, на что это было похоже.

В-третьих, убедитесь, что массив, который вы отправляете в smarty, правильно сформирован и содержит все необходимые данные. на стороне PHP сделайте print_r перед тем, как назначить переменную.

Наконец, вот некоторый псевдокод, который расскажет вам, как это должно работать, если это действительно умно:

Run the query

Loop through the results, building an associative array of the data you want to send to smarty
(print it out and make sure its correct, for debugging purposes)

Assign the created array to a variable available to the smarty template

In the smarty template, use the section (loop) code and loop over the array of results to display it.
0 голосов
/ 17 января 2011

Как правило, вам следует избегать ORDER BY и RAND() в операторах SQL, поскольку они неэффективны для сортировки и рандомизации результатов.

Вам лучше получить все 5 результатов и случайным образом выбрать их, используя что-то вроде array_rand () .

Береги себя.

...