4.9 レコードを一定件数ごとに読み込む

「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」のリンクをクリックしたとき:

| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved