Попытка получить несколько случайных видео из базы данных, но он все время показывает одно и то же

0

Я пытаюсь захватить несколько случайных видео из моей базы данных и показать их на странице. Тем не менее, он просто продолжает захватывать одно и то же видео, а не несколько разных. Таким образом, я получаю 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 thingy code, который я вставлял 5 раз, чтобы показать 5 случайных видео

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

$sql = "select * from files 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}"

Теги:
random

2 ответа

1

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

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

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

Изменить

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

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

В-третьих, убедитесь, что массив, который вы отправляете в 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
    Вы не можете просто напечатать его 5 раз, вы должны использовать цикл в шаблоне. В противном случае его просто собираются напечатать один и тот же 5 раз.
  • 0
    отредактируйте свой вопрос и сделайте вторую часть, и отправьте код.
Показать ещё 1 комментарий
0

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

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

Позаботьтесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню