MySQLからのデータを「Pager」を使って分割表示する
はじめまして。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箇所あたりがおかしいかと思っております。どうかよろしくお願いします。
補足
言葉足らずで申し訳御座いません。 Twitterのウィジェットを設置したいのではなく、 自身が運営しているサイトのページングをなくし、 オートページャライズにしようと考えております。 > http://usy.jp/twitter/index.php?Twitter%20API 上記URLにアクセスできませんでした。