2011-01-17 9 views
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; 
"); 

はここで、私は、これは= "ランドBYファイルORDERから選択* 5つのランダム動画

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

$のSQLを表示するために5回を貼り付けているテンプレートのCSS、HTMLのブツコード()0を制限です5 "。 $ res = @ mysql_query($ sql); $ data = @ mysql_result($ res、0、 'filename'); $ id = @ mysql_result($ res、0、 'file_id'); $ title = @ mysql_result($ res、0、 'title'); $ title2 = str_replace( ""、 " - "、$ title); $ path = "{$ siteurl}/media/{$ file.random.file_id}/{$ file.random.title_seo} /"; $ img = "{$ siteurl}/thumbs/{$ file.random.thumb}"; は "
{$ file.random.title}"

答えて

1

あなたはそれを貼り付けることはできません5回エコー。また、クエリを5回実行する必要があります。しかし、これは正しい方法ではありません。クエリーは一度実行し、LIMIT 0,1LIMIT 0,5またはLIMIT 5に変更する必要があります。スマートなテンプレートで5つのランダムな結果をループします。

相続人は、あなたはSmartyの連想配列(別名CSSのHTMLブツコード)をループする方法:

[OK]を

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

編集、そのコードはあまり良く見えません。それをちょっと分解してください。 phpmyadminやそのようなツールの中でクエリを実行して、あなたが望むものを返すことを確認しましたか?最初に、クエリが良好であることを確認します。

第2に、スマートでも使用していますか?私はちょうどそれがそうであったので推測した。

第3に、smartyに送信する配列が正しく形成され、必要なすべてのデータが含まれていることを確認します。 PHP側で変数を割り当てる前にprint_rを実行してください。

それが実際のSmartyのであれば最後に、ここにいくつかの擬似コードは、これは動作するはずですどのように伝えるために、次のとおりです。あなたがいるので、SQL文でORDER BYRAND()を避けるべき一般的なルールとして

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回印刷します。 – profitphp

+0

質問を編集して2番目の部分を作成し、コードを投稿してください。 – profitphp

+0

完了...私が更新したものを参照してください..私はあなたのリンクに基づいてそれを変更しました...それは私に何度も同じビデオを繰り返し表示します。 – Birk

0

結果を並べ替えたりランダム化したりする非効率的な方法です。

5つの結果すべてを取得し、array_rand()のようなものを使用してランダムに選択する方がよい場合があります。

注意してください。

関連する問題