- 2007-09-21 (金) 11:11
- Yomi-Search(PHP)modified改造










あるカテゴリなど、特定の条件からランダムでレコードを抽出したい場合が多々あります。
フォーラムなどで、ランダムジャンプを改造した物がありますが、MySQLの機能を利用すれば簡単に実現できます。
SQL文の「ORDER BY」(並び替え)指定で「rand()」と指定します。
当然「WHERE句」も指定できるので、「相互リンク」、「おすすめ」、「特定のカテゴリ」などの抽出も出来ます。
- おすすめ
- WHERE substring(replace(mark,'_',''),1,1)='1'
- 相互リンク
WHERE substring(replace(mark,'_',''),2,1)='1'- 任意のマーク
- [マーク番号]に数値を入れる
WHERE substring(replace(mark,'_',''),[マーク番号],1)='1'- 特定のカテゴリ
- [path]にパスを入れる 例:01/02/
WHERE category LIKE '%&[path]%&%'
最後にリミットを指定して表示件数を特定します。
SQL:
SELECT * FROM {$db->db_pre}log WHERE substring(REPLACE(mark,'_',''),2,1)='1' ORDER BY rand() LIMIT 15
この方法では、1つのSQL文で情報が手に入りますので、1番簡単な方法だと思います。
下記は相互リンクサイトを15件表示するサンプル
PHP:
//相互ランダム15件表示
$query = "SELECT * FROM {$db->db_pre}log WHERE substring(replace(mark,'_',''),2,1)='1' ORDER BY rand() limit 15";
$log_lines = $db->rowset_assoc($query) or $db->error("Query failed $query".__FILE__.__LINE__);
if($log_lines){
foreach($log_lines as $log_data) {
//出力したい内容
}
}
$query = "SELECT * FROM {$db->db_pre}log WHERE substring(replace(mark,'_',''),2,1)='1' ORDER BY rand() limit 15";
$log_lines = $db->rowset_assoc($query) or $db->error("Query failed $query".__FILE__.__LINE__);
if($log_lines){
foreach($log_lines as $log_data) {
//出力したい内容
}
}
検索エンジンSEO-SOのトップページなどで使用しています。
関連記事
- Newer: Yomi-Search(PHP)modifiedでカテゴリのログをマーク順に表示する方法
- Older: 検索エンジンSEO-SO開設
Comments:0
Trackback+Pingback:0
- TrackBack URL for this entry
- http://blog.seo-so.com/archives/5/trackback
- Listed below are links to weblogs that reference
- Yomi-Search(PHP)modifiedで簡単ランダム表示 from SEO-SO blog