「odbc_fetch_row関数」では、その第2引数にレコードの読み出し位置(レコード番号)を指定することができます。
- 指定された番号のレコードを1件だけ読み込みます
- 先頭レコードを「1」として指定します
- 指定された番号のレコードが存在しない場合はFalseが返されます
これを応用することによって、全レコードの中から一定件数ごとのレコードだけを読み出すことができます。たとえば100件のレコードを10件ずつ画面に出力するようなことができます。
なお、指定された読み出し位置から複数レコード読み出すために、for文によるループを使います。
<?php
$DSN = "AccessPHP"; //データソース名
$DBUSER = ""; //ログインユーザー名
$DBPASSWORD = ""; //パスワード
//Accessデータベースに接続
if (! $con = odbc_connect($DSN, $DBUSER, $DBPASSWORD)) {
exit("Accessデータベースに接続できませんでした!");
}
//仕入先テーブルから都道府県が東京都のレコードだけ読み込むSQLを組み立て
$sql = "SELECT * FROM 仕入先 WHERE 都道府県 = '東京都'";
//結果セットを取得
$rst = odbc_exec($con, $sql);
if (! isset($_GET[start])) {
//startパラメータが指定されていないときは1レコード目から
$start = 1;
}
else {
//指定されていたらそのレコード番号から
$start = $_GET[start];
}
//開始レコード番号から5レコード分の読み込みループ
for ($recno = $start; $recno < $start + 5; $recno++) {
if (! odbc_fetch_row($rst, $recno)) {
//指定レコードがなければループを抜ける
break;
}
$body .= "<TR>";
$body .= "<TD>" . odbc_result($rst, "仕入先コード") . "</TD>";
$body .= "<TD>" . odbc_result($rst, "仕入先名") . "</TD>";
$body .= "<TD>" . odbc_result($rst, "担当者名") . "</TD>";
$body .= "<TD>" . odbc_result($rst, "部署") . "</TD>";
$body .= "<TD>" . odbc_result($rst, "都道府県") . "</TD>";
$body .= "</TR>";
}
//ODBCとの接続を解除
odbc_close($con);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<META http-equiv="Content-Style-Type" content="text/css">
</HEAD>
<BODY>
<?=$start?> 件目から5レコードを表示
<TABLE border="1">
<TR>
<TH>仕入先コード</TH>
<TH>仕入先名</TH>
<TH>担当者名</TH>
<TH>部署</TH>
<TH>都道府県</TH>
</TR>
<?=$body?>
</TABLE>
| <A href="<?=$_SERVER[PHP_SELF]?>?start=1">1-5<A>
| <A href="<?=$_SERVER[PHP_SELF]?>?start=6">6-10<A>
| <A href="<?=$_SERVER[PHP_SELF]?>?start=11">11-15<A>
| <A href="<?=$_SERVER[PHP_SELF]?>?start=16">16-20<A> |
<BR>
</BODY>
</HTML>
このページをはじめて呼び出したとき:

「6-10」のリンクをクリックしたとき:

「11-15」のリンクをクリックしたとき:

|