Я пытаюсь захватить несколько случайных видео из моей базы данных и показать их на странице. Тем не менее, он просто продолжает захватывать одно и то же видео, а не несколько разных. Таким образом, я получаю 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}"
Вы не можете просто вставить его 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.
Как правило, вы должны избегать ORDER BY
и RAND()
в операторах SQL, потому что они являются неэффективными способами сортировки и рандомизации результатов.
Вам лучше получить все 5 результатов и случайным образом выбрать их, используя что-то вроде array_rand().
Позаботьтесь.