
はじめまして。PHPとMySQLとPEARのPagerを使った質問なのですが、過去レス等を参考にしながらやってみました。
「form.html」から社員の年齢の最低と最高を入力し、それを「search.php」にgetで渡し、ヒットしたデータの名前と年齢を表示したいのです。
データが多いのでページを1ページに何件かずつ分けて表示したいのですが、「Pager」を使ったやりかたを以下のように書いてみました。
どうしても「Pager」を使ってやってみたいのですが、うまくいきません。
MySQL には(id ,name ,age の3カラムのデータが格納されています)
form.html----------------------------------
<html>
<head>
<title>社員の名前と年齢について</title>
</head>
<body>
<form method="get" action="search.php">
<input type="text" name="age_min"> 歳 ~ <input type="text" name="age_max" > 歳
<input type="submit" name="submit" value="検索">
</form>
</body>
</html>
----------------------------------------------
search.php---------------------------------------
<html>
<head>
<title>社員の名前と年齢について</title>
</head>
<body>
<?
//ここから http://oshiete1.goo.ne.jp/qa4155006.htmlを参考
$search="";
$age_min=$_REQUEST["age_min"];
$age_max=$_REQUEST["age_max"];
if(is_numeric($age_min) and is_numeric($age_max)) $search.=($search==""?"":"&")."age_min={$age_min}&age_max={$age_max}";
//ここまで http://oshiete1.goo.ne.jp/qa4155006.htmlを参考
//DB接続
require_once ('Pager/Pager.php');
$conn = mysql_connect ("サーバー名", "ユーザー名", "パスワード")
or die ('接続できませんでした');
mysql_select_db ("search",$conn);
//MySQLのクライアントの文字コードをsjisに設定
mysql_query("SET NAMES sjis")
or die("can not SET NAMES sjis");
$sql_1= mysql_query("select count(*) as max from search where age between '$age_min' and '$age_max'");
$row1 = mysql_fetch_array($sql_1);
if($row1[max] == 0) $message = "該当者なし";
else $message = $row1["max"] . "人ヒット";
$row1_max = $row1["max"];
echo "検索結果<br>";
echo "$message";
$sql_2= mysql_query("select name,age from search where age between '$age_min' and '$age_max'");
$row2 = mysql_fetch_array($sql_2);
//Pagerの導入
$params = array(
'itemData' => $row2,
'mode' => 'Jumping',
'perPage' => 10,
'delta' => 6,
'totalItems' => $row1_max
);
//Pagerのインスタンスを生成
$pager = & Pager::factory($params);
$links = $pager->getLinks();
$data = $pager->getPageData();
$c_pager = $pager->getCurrentPageID();
$e_pager= $pager->numPages();
print $data["all"];
print $links["all"];
?>
</body>
</html>
-------------------------------------------------------------------
ページ分割しなければ、「Pager」を使わずに、上のデータ表示箇所を
while($row2 = mysql_fetch_array($sql_2)){
echo "<table border='1' cellpadding='0' cellspacing='0'>";
echo "<tr>";
echo "<td>".$row2["name"]."</td>";
echo "<td>".$row2['age']."</td>";
echo "</tr>";
echo "</table>";
}
みたいな感じで書き換えればうまく表示されるのですが、「Pager」を使う場合は
$data = $pager->getPageData();
でページのデータを返してくれると書いてあったもので、使ってみました。おそらく、
(1)'itemData' => $row2,
(2)$data = $pager->getPageData();
(3)print $data["all"];
の3箇所あたりがおかしいかと思っております。どうかよろしくお願いします。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
ページング処理をするなら最初からLIMITを利用する。
PEAR::Pagerはページングのリンクの処理だけに専念させる。
元々使い道が違う機能。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像ファイルの名前をそのままU...
-
PHP8でWarning:Undefined varia...
-
phpの問い合わせフォームを作っ...
-
BASIC認証のフォームをデザイン...
-
composerをインストールしたい...
-
HTML PHP ラジオボタンのイベント
-
PHP8を使うと、大量のWarningが...
-
ファイルアップロードに関して...
-
PHPのエラーの解消法について教...
-
$_SESSIONに渡した後はそのまま...
-
marginの値でマイナス値を設定...
-
submitで思うようにページが遷...
-
php でqiitaのサイトにあったフ...
-
SplFileObject を利用したとき...
-
PHPの勉強してます。 配列のと...
-
アップロードファイルを表示す...
-
複数のパソコンの中の1つのパソ...
-
返信機能のツリー構造の深さを...
-
PHPについて。
-
phpのheader("Location:#pos")...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
dbに登録したデータをphpのプル...
-
DBで検索結果に該当するデータ...
-
アラートでyes noを作りたいです。
-
PHPの画像表示関連(?)プログラ...
-
データの取得方法
-
配列で指定した値のみをMySQLか...
-
警告を出さないコードの書き方
-
PHPで[]の使い方について
-
ループ文で呼び出したデータの...
-
DBからSelectしたレコードのデ...
-
mySQLで結果が無いときの処理
-
データベースのページング出力...
-
PHP セレクトメニューの呼び出...
-
PHP 10件表示 "前へ" "次へ"
-
mySQLからデータを取り出す
-
データベースサーバーにあるデ...
-
PHPのプルダウンメニューにDBの...
-
mysql>PHPにデータ表示、10件ご...
-
テーブル<TR></TR>の処理について
-
php テーブルが作成できない
おすすめ情報