• 締切済み

MySQL,PHPを使いデータとデータ件数を取得する関数

よろしくお願いします。 このようなテーブルがあります。 テーブル名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) どうかご教授ください。

みんなの回答

  • tom233
  • ベストアンサー率17% (61/352)
回答No.5

FOUND_ROWS()は確かに便利だけど http://kdl.weblogs.jp/open/2008/07/found_rows-485b.html の様な結果も出ているので私は利用していません。 ただし実際に自分のDBでの検証をしてはやい方を利用した方が良いでしょう。

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.4

limit 付きSQL文にSQL_CALC_FOUND_ROWS を入れておけば、次に SELECT FOUND_ROWS();で、最初の SELECT が返したLIMIT 句なしで書かれた行数が得られます。 http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html 参考リンク内  FOUND_ROWS(); 関数参照

参考URL:
http://dev.mysql.com/doc/refman/5.1/ja/information-functions.html
  • tom233
  • ベストアンサー率17% (61/352)
回答No.3

>件数を返すだけの関数なら、mysql_num_rows があります。 たしかこれって取得した結果の件数だから質問者がやっている ページング処理時にLIMITを使った場合、取得した件数だけで全体の件数を取得できません。count(*)も似たような物ですけど mysql_num_rowsを受けるだけでLIMITを利用していないSQLを発行するのは無駄ですので Where句を同じにしたcount(*)を発行した方がスマートでしょう。 結局質問者は「最終ページ」を知るために全体での件数が必要でしょうから

  • task2easy
  • ベストアンサー率20% (5/25)
回答No.2

 件数を返すだけの関数なら、mysql_num_rows があります。 http://www.php.net/manual/ja/function.mysql-num-rows.php  phpで件数毎にページングしたいなら、urlから、"表示開始行番号(以下例だとstart)"と、"何件表示するか(以下例だとnum)"、検索用語が必要ならそれも(以下例ならq)、またカラム名も必要ならそれもgetして、その分、select文でとってきて表示するのがセオリーな気がしますが・・・ 例)ttp://aaa.jp/search?q=テスト&start=10&num=20&colm1=id name・・・  これを関数化してもあまりオトクな感じが・・・。方向性が間違ってたらすいません。

  • tom233
  • ベストアンサー率17% (61/352)
回答No.1

count(*)

関連するQ&A

専門家に質問してみよう