質問: "select name,age from search where name like '%$name%' and age between '$age_min' and '$age_max' limit $next_pos,$ln"; $res =mysql_query($sql); if (mysql_num_rows($res) > 0) { echo("[次ヘ]"); } ?> ----------------------------------------------------------------------------------- うまく表示されないというのは具体的に言いますと、例えば 検索結果が何百件ある場合でも、いつも「10件ヒットしました」と表示され、その上[次ヘ]をクリック しても「該当するデータはありません」と表示されてしまいます。ちなみにエラー等は出ません。私が書いた上のコードは私なりに色々な参考ページを 参照してのものなのですが。どなたか、上のコードでおかしい箇所などご指摘頂けましたら、幸いでございます。どうぞアドバイスの程よろしくお願い致します。
回答: 前回の質問を削除依頼しているということですので、こちらに書きます。 なぜ10件しかヒットしないかは、limitで10件にしぼっているsqlで 行数を数えたら何件?という命題ですから10件になります。 やり方は2つ。 一つはlimitをつかわないで、mysql_num_rowで行数をひっぱれば ただしい行数がえられ、whileで必要な部分だけ抜き出せばよいでしょう。 しかし使用しないデータを抽出するのは無駄がおおいためお勧めはできません。 もう一つは以下のように、limitをしないカウントでsqlを発行して、 実際のデータ抽出はlimitをつけてやるという2段形式 前回の回答者さんがやった方式ですね $sql_0 = "from search where name like '%{$name}%' and age between '$age_min' and '$age_max'"; $sql= "select count(*) as count {$sql_0}"; $res = mysql_query($sql); $row = mysql_fetch_array($res); $num_rows = $row["count"]; $sql= "select name,age {$sql_0} limit $offset,$ln"; $res = mysql_query($sql); while($row = mysql_fetch_array($res)){ ・・・ }