よろしくお願いします。
このようなテーブルがあります。
テーブル名GAME
id name price genre_id comment
1 FF1 100 1 おもしろい
2 カービー 200 3 丸い赤
3 バイオ 250 2 怖い
: : : : :
テーブル名GENRE
genre_id genre_name
1 RPG
2 ホラー
3 バイオ
このようなテーブルがあるとして、
検索したいカラム(id,name,g_id,comment)に対して検索キーワードに部分一致をしたものデータからソートしたいカラムと昇順降順のようにソートしページ数から
(ページ数-1)*10+1 ~ ページ数*10
最終ページのときは
(ページ数-1)*10+1 ~ 最終ページ
の部分のデータを取得する関数を作りたいです。表示するデータは
id name genre_name
です。
ページャーも使うので検索カラムにたいして検索ワードに部分一致した結果件数も戻り値として返したいです。
上記のsql文を教えてください。
またデータと結果件数を返す関数を作ることは可能でしょうか?
関数の引数は以下のように5つにするつもりです。
function getList($search_column,$search_word,$sort_column,$sort_order,$page_number)
どうかご教授ください。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
FOUND_ROWS()は確かに便利だけど
http://kdl.weblogs.jp/open/2008/07/found_rows-48 …
の様な結果も出ているので私は利用していません。
ただし実際に自分のDBでの検証をしてはやい方を利用した方が良いでしょう。
No.4
- 回答日時:
limit 付きSQL文にSQL_CALC_FOUND_ROWS を入れておけば、次に SELECT FOUND_ROWS();で、最初の SELECT が返したLIMIT 句なしで書かれた行数が得られます。
http://dev.mysql.com/doc/refman/5.1/ja/informati …
参考リンク内 FOUND_ROWS(); 関数参照
参考URL:http://dev.mysql.com/doc/refman/5.1/ja/informati …
No.3
- 回答日時:
>件数を返すだけの関数なら、mysql_num_rows があります。
たしかこれって取得した結果の件数だから質問者がやっている
ページング処理時にLIMITを使った場合、取得した件数だけで全体の件数を取得できません。count(*)も似たような物ですけど
mysql_num_rowsを受けるだけでLIMITを利用していないSQLを発行するのは無駄ですので
Where句を同じにしたcount(*)を発行した方がスマートでしょう。
結局質問者は「最終ページ」を知るために全体での件数が必要でしょうから
No.2
- 回答日時:
件数を返すだけの関数なら、mysql_num_rows があります。
http://www.php.net/manual/ja/function.mysql-num- …
phpで件数毎にページングしたいなら、urlから、"表示開始行番号(以下例だとstart)"と、"何件表示するか(以下例だとnum)"、検索用語が必要ならそれも(以下例ならq)、またカラム名も必要ならそれもgetして、その分、select文でとってきて表示するのがセオリーな気がしますが・・・
例)ttp://aaa.jp/search?q=テスト&start=10&num=20&colm1=id name・・・
これを関数化してもあまりオトクな感じが・・・。方向性が間違ってたらすいません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- PHP PHP MySql ページング 2 2022/09/20 06:38
- Excel(エクセル) エクセルの印刷範囲をページ単位で可変にする方法 3 2022/05/23 13:04
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Oracle sqlで質問です。 idを元にidに紐付くデータで住所コードがjpのみのデータ以外のidを取得したい 4 2023/03/20 17:41
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
phpにて出欠登録管理を作成して...
-
PHPでPostgreSQLのテーブルを表...
-
csvをDBへ読み込んだら、NULLが...
-
ランダム文字列をDBにINSERT
-
変数にNULLを代入したい
-
SQL CASE 文について
-
外部結合で参照列が複数あるSQL
-
エクセルVBAについて
-
VBAをつかってクエリの情報を抽...
-
実行時エラー3131 FROM 句の構...
-
円マークが付加されて保存され...
-
VBA ACCESS SQL...
-
DBで検索結果に該当するデータ...
-
insert1つの処理でもトランザ...
-
Pro*Cの構文エラー
-
phpのエラーについてです
-
sortable ギブアップです…助け...
-
テキストボックスに入れた内容...
-
php データ削除
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLでデータベースにデータin...
-
変数にNULLを代入したい
-
phpにて出欠登録管理を作成して...
-
phpでテーブルを作る際変数によ...
-
csvをDBへ読み込んだら、NULLが...
-
SQLで返り値が空とでる
-
ヒアドキュメントでSQLを書く事...
-
php sqlite count 列数取得
-
OracleからAccessへのインポート
-
変数を組み入れたい
-
日またぎの計算
-
Accessへ日付をINSERT
-
任意の値の取得
-
クエリObjectをforeachで回す時...
-
PHPでいいね機能を作りたいので...
-
会員番号等に利用するダブらな...
-
PHP PDOを利用してカラムの削除...
-
SQL CASE 文について
-
phpを使用し、カテゴリー別に表...
-
トランザクション処理
おすすめ情報