- ベストアンサー
PHPとポストグレーSQLでデータベース検索システムを作っているのですが
当方タイトル道理ポストグレーSQLを用いてHTMLとPHPで 検索フォームを作ってデーターベースを作っているのですが現在の方法では検索結果がひとつのページに全部出てしまい非常に処理が重くなってしまいますので10件づつ表示したいのですが当方まったくの初心者でうまく出来ずにいます。どこをどのようにすればうまくいきますでしょうか?一応LIMITとOFFSETというのを使えば出来ると調べることができましたができずじまいです。一応検索部分のプログラムを貼り付けておきます。ここは文字制限があるので 分割して貼り付けます
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
SQL文でLIMITとOFFSETを使うと方法は他の人にまかすとして、PHPスクリプトの方でなんとかする方法を紹介しよう。 ~10件単位で表示したい場合~ 1.検索結果のレコードセットのレコード数を10で割るとページ数がはじける。このページ数をセッションに保存。 2.ページ切り替えリンクを表示して、現在のページをセッションなりなんなりに持っておく。 3.DBからレコードセットを引っ張ってきた後に、「(ページ数-1)×10」レコード読み飛ばす。 4.10件だけ表示させて、レコードセットを閉じる ちなみに、この例の「10」という数字を変数で持っておくと、表示件数を動的に切り替える事ができる。
その他の回答 (1)
- taketan_mydns_jp
- ベストアンサー率58% (450/773)
回答No.2
とりあえず表示ページでは - for ($row = 0; $row < $maxrows; $row++) { + for ($row = 0; $row < 10; $row++) { とすれば10件まで表示になる筈ですが。
質問者
お礼
ありがとうございます 試してみます
お礼
お早い回答ありがとうございます しかしよくわかりませんです・・・ 表示部分のプログラムはこうなっておりますが //表示♪ 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>");} ?> この文に組み込むにはどのようにプログラムを書いたら よいでしょうか?重ね重ね質問申し訳ありません