プロが教える店舗&オフィスのセキュリティ対策術

当方タイトル道理ポストグレーSQLを用いてHTMLとPHPで
検索フォームを作ってデーターベースを作っているのですが現在の方法では検索結果がひとつのページに全部出てしまい非常に処理が重くなってしまいますので10件づつ表示したいのですが当方まったくの初心者でうまく出来ずにいます。どこをどのようにすればうまくいきますでしょうか?一応LIMITとOFFSETというのを使えば出来ると調べることができましたができずじまいです。一応検索部分のプログラムを貼り付けておきます。ここは文字制限があるので
分割して貼り付けます

A 回答 (2件)

 SQL文でLIMITとOFFSETを使うと方法は他の人にまかすとして、PHPスクリプトの方でなんとかする方法を紹介しよう。



~10件単位で表示したい場合~
1.検索結果のレコードセットのレコード数を10で割るとページ数がはじける。このページ数をセッションに保存。
2.ページ切り替えリンクを表示して、現在のページをセッションなりなんなりに持っておく。
3.DBからレコードセットを引っ張ってきた後に、「(ページ数-1)×10」レコード読み飛ばす。
4.10件だけ表示させて、レコードセットを閉じる

ちなみに、この例の「10」という数字を変数で持っておくと、表示件数を動的に切り替える事ができる。
    • good
    • 0
この回答へのお礼

お早い回答ありがとうございます
しかしよくわかりませんです・・・
表示部分のプログラムはこうなっておりますが
//表示♪
echo("<P align=\"center\">");
echo("$_POST[kigyoumei]");
echo("について検索しました。");
echo("</p>");
if($maxrows==0){
echo("<P align=\"center\">");
echo("残念ながら当データーベースには該当の企業はありませんでした。");
echo("</p>");
echo("</FORM>");
echo("</BODY>");
echo("</HTML>");
}else{
echo("<P align=\"center\">");
echo("$maxrows");
echo("社の登録を発見しました。");
echo"</p>";
for ($row = 0; $row < $maxrows; $row++) {
$rowdata = pg_fetch_row($rs, $i);
echo"<TABLE BORDER=\"1\" WIDTH=\"700\">\n";
echo"<tr>";

if($cheacka==0){
echo"<td width=\"20\"></td>";
echo"<td width=\"80\">";
echo"会社コード";
echo"</td>";
echo"<td width=\"145\">";
echo"会社名";
echo"</td>";
echo"<td width=\"145\">";
echo"カイシャ名";
echo"</td>";
echo"<td width=\"200\">";
echo"ホームページ";
echo"</td>";
echo"</tr>";}
echo"<td width=\"20\"><input type=radio name=kensaku value=$rowdata[0]></td>";
echo("<td width=\"80\">".htmlspecialchars($rowdata[0])."</td>");
echo("<td width=\"145\">".htmlspecialchars($rowdata[1])."</td>");
echo("<td width=\"145\">");
echo("$rowdata[2]");
echo("</td>");
if($rowdata[27]==NULL){
echo("<td width=\"200\">");
echo("登録されていません");
echo("</td>");
}else{
echo("<td width=\"200\">");
echo("<A href=\"$rowdata[27]\">");
echo("$rowdata[27]");
echo("</a>");
echo("</td>");}
echo("</tr>");
echo"</TABLE>";
$cheacka = $cheacka+1;}
echo("<br><center><INPUT type=\"submit\" name=\"送信\" value=\"詳細検索\"></center></CENTER></FORM></BODY></HTML>");}
?>
この文に組み込むにはどのようにプログラムを書いたら
よいでしょうか?重ね重ね質問申し訳ありません

お礼日時:2004/11/26 19:11

とりあえず表示ページでは



- for ($row = 0; $row < $maxrows; $row++) {
+ for ($row = 0; $row < 10; $row++) {

とすれば10件まで表示になる筈ですが。
    • good
    • 0
この回答へのお礼

ありがとうございます
試してみます

お礼日時:2004/12/03 02:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!