スレッド表示 | フラット表示〕 全トピック 920 件中 771 番目 次≫ ≪前

PHP一覧表示の改ページ方法について

created: 2003-08-28 21:41 | modified: 2003-10-30 00:06 | reply: 7

[558] PHP一覧表示の改ページ方法について

user: たろー | created: 2003-08-28 21:41
こんばんは。 いつもお世話になっています。

データ件数が多い場合、1ページあたり25行で次ページに記憶させたいのですが何かサンプルはありますでしょうか?
よくあるパターンなのですが。
こんな感じです。

   ◆◆◆ 一覧 ◆◆◆
              1/10頁
---------------------------------
【修正】【削除】 CODE 101  青木
---------------------------------
【修正】【削除】 CODE 102  山田
---------------------------------
【修正】【削除】 CODE 103  青木
---------------------------------
【修正】【削除】 CODE 104  山本
---------------------------------
【修正】【削除】 CODE 105  鈴木
---------------------------------
<<前ページ  次ページ>>

ご参考までに http://www.raru.net
reply: 559 返信 編集 削除

[559] Re.PHP一覧表示の改ページ方法について

user: yagi | created: 2003-08-28 22:48
つまり、データベースの1?25までのレコードを取り出して"次のページ"(26?50)を表示したいということでしょうか?
これは掲示板で必ず使われていますよ。
PHPで作られた掲示板を参考にしてみるとよいと思われます。

簡単に説明しますと、単純に1?25に1?25のIDがふってあるならば、1?25まで表示させておいて、GETなりPOSTなりでID=26をとばせばいいです。
そして、$_POST["ID"](つまり、26)を使って26?50を表示させてはどうでしょうか?
Parent: 558  reply: 560 返信 編集 削除

[560] Re.PHP一覧表示の改ページ方法について

user: たろー | created: 2003-08-28 23:23
yagiさん 早々ありがとうございます。

つまり、データベースの1?25までのレコードを取り出して"次のページ"(26?50)を表示したいということでしょうか?

そうです。

よく使われているということは、お決まりのパターンみたいですね。メモメモ

…index.php?ID=15 このような感じでポジションを記憶させておけばよいのですね。
Parent: 559  reply: 794 返信 編集 削除

[794] 一覧から次ページの閲覧方法について

user: たろー | created: 2003-10-22 16:52
以前は、色々とお世話になりました。

試行錯誤しながら拡張していってます。
検索-照会画面なのですが....
Selectフォームから一覧表示で下に次ページボタンがありますがマウス選択すると空の表示となり次ページフォームが表示されません。
単純に処理が間違っているのでしょうか?



<?php
header('Content-Type: text/html; charset=shift-jis');
define("RECLIMITCOUNT", 5); // 画面に表示する最大行数

//MySQL接続情報
$host="localhost";
$username="root";
$password="";
//DB接続
$conn = mysql_connect($host,$username,$password)
or die ('MySQL Connect error = ' . mysql_error());

//DB選択
mysql_select_db("test",$conn)
or die('Select DB error = ' . mysql_error());

if( isset( $_POST['resql'] ) )
{
//バックスラッシュを除去してセット
$resql = $sql = stripslashes($_POST['resql']);

}
else
{
//-------------------------------------
// ここまでのSQL文を再検索用変数に保存
//-------------------------------------
$resql = $sql;


$f_ttacd = $_POST['frm_ttacd']; //土地・建物
$f_kai = $_POST['frm_kai']; //買借区分

$f_jiticode = $_POST['frm_jiticode']; //市区町村 名称で検索

$f_tiku = $_POST['frm_tiku']; //地区
$f_scols = $_POST['frm_scols']; //小学校 名称で検索
$f_scolm = $_POST['frm_scolm']; //中学校 名称で検索
$f_compcode = $_POST['frm_compcode']; //最寄駅
$f_toho = $_POST['frm_toho']; //徒歩
$f_jyougenti = $_POST['frm_jyougenti']; //金額
$f_kagenti = $_POST['frm_kagenti']; //金額
$f_heib = $_POST['frm_heib']; //広さ
$f_biko = $_POST['frm_biko']; //備考
$f_neolkubn = $_POST['frm_neolkubn']; //新中区分
$f_tatesyur = $_POST['frm_tatesyur']; //建物区分
$f_mado = $_POST['frm_mado']; //間取り
$f_tikunen = $_POST['frm_tikunen']; //建築年月
$f_sort = $_POST['frm_sort']; //ソート


if($f_ttacd =='30201'){
$f_sel = "to";
}
if($f_ttacd !='30201'){
$f_sel = "ta";
}




//情報取得クエリー発行
$sql = "SELECT";
$sql .= " bukncode";
$sql .= ",buknname";
$sql .= ",citytown";
$sql .= ",tiku";
$sql .= ",king";
$sql .= ",ekte";
$sql .= ",image_s";
$sql .= ",biko";
$sql .= " FROM";

if ($f_sel == "ta"){
$sql .= " tatemast";
}else{
$sql .= " totimast";
}


$sql .= " WHERE ";


//$sql .= " tatesyur = " ."'" . $f_tatesyur ."'" . " AND";
//市町村
if($f_jiticode!='指定なし' and $f_jiticode!='')
$sql .= " citytown = " ."'" . $f_jiticode ."'" . " AND";
//地区
if($f_tiku!='')
$sql .= " tiku Like " ."'" . "%".$f_tiku."%" ."'" . " AND";
//最寄駅
if($f_compcode!='0000' and $f_compcode!='')
$sql .= " ekte = " ."'" . $f_compcode ."'" . " AND";
//徒歩
if($f_toho!='')
$sql .= " toho = " . $f_toho . " AND";
//-------------------------------------
// 金額変換
//-------------------------------------
//金額(上限)
if($f_jyougenti!='')
$f_zzzz = substr($f_jyougenti, 1, 4);
$jyoking = $f_zzzz *= 10000;
//金額(下限)
if($f_kagenti!='')
$f_zzzz = substr($f_kagenti, 1, 4);
$kagenking = $f_zzzz *= 10000;

if($f_jyougenti!='')
$sql .= " king " .">=" . $kagenking . " AND " . " king" ." <=" .$jyoking . " AND";

//$sql .= " king = " . $f_kagenti . " AND";
if ($f_sel == "ta"){
if($f_neolkubn!='0' and $f_neolkubn!='')
$sql .= " neolkubn = " ."'" . $f_neolkubn ."'" . " AND";
}
$sql .= " kubn = " ."'" . $f_kai ."'";

print $sql;


$result=mysql_query($sql,$conn)
or die('Query(Select) error = ' . mysql_error() );

//-------------------------------------
// ここまでのSQL文を再検索用変数に保存
//-------------------------------------
if( isset( $_POST['frm_sort'] ) ) $sql .= " ORDER BY " . $_POST['frm_sort'];

$resql = $sql;

}
//-------------------------------------
// 並べ替え条件をセット
//-------------------------------------
if( isset( $_POST['frm_sort'] ) ) $sql .= " ORDER BY " . $_POST['frm_sort'];
//print $sql;
$result=mysql_query($sql,$conn)
or die('Query(Select) error = ' . mysql_error() );

?>

<html>
<head>
<title>検索結果一覧</title>
</head>

<style type= "text/css">
<!--
font {font-size: 11pt}
table {font-size: 11pt}
-->
</style>

<!----------------------------------------------------------------------------->
<body>

<center>
<div style = "width : 500px ; height : 60px ;
font-size : 20pt ; color :lightsteelblue;
filter : shadow(color = gray, direction = 150)">
<hr size = "2">
<center>検 索 結 果 一 覧</center>
<hr size = "2">
</div>
</center>
<br>

<br>

<?PHP
//-------------------------------------
//データあり通常のとき
//-------------------------------------
if (mysql_num_rows($result)!='0')
{
Echo("<table border = \"0\" align=\"center\">\n");
Echo(" <center>\n");
Echo(" <tr>\n");
Echo("<td width = \"250\">該当物件は<font color= \"orange\">\n");
print mysql_num_rows($result);
Echo(" </font>件ありました。</td>\n");
Echo(" <td width = \"250\">\n");
Echo("<form method=\"POST\" action=\n");
print "\"" . $_SERVER['SCRIPT_NAME'] ."\"";
Echo(">\n");
Echo("<input type=\"hidden\" name=\"f_sel\" value=\"$f_sel\"/>\n");
Echo("<input type=\"hidden\" name=\"resql\" value=\n");
print "\"" . $resql ."\"";
Echo("/>\n");
Echo("<select size=\"1\" name=\"frm_sort\">\n");
Echo("<option value=\"tiku\">地区昇順</option>\n");
Echo("<option value=\"king\">金額昇順</option>\n");
Echo("</select>\n");
Echo("<input type=\"submit\" value=\"並べ替え\" name=\"submit\" />\n");
Echo("</form>\n");
Echo(" </td>\n");
Echo(" </tr>\n");
Echo(" </center><table><center>\n");
Echo("</center>\n");
Echo("<br>\n");}
else
//-------------------------------------
//検索結果がゼロ件のとき
//-------------------------------------
{
Echo("<center>検索結果が<font color = \"orange\"> 0 </font>件でした。<center>\n");
Echo("<center>もう少し条件をゆるめて下さい。<center>\n");
Echo("<br>\n");
Echo("<center><a href= ../select.php>戻る</a><center>\n");
}
?>

<?php
// 結果セットのレコード件数を得る
$resultNumRows = mysql_num_rows($result);
$kekka = "";
// データの取り出しと表示。一覧表形式で表示する。
//print("<TABLE BORDER>\n");
// 列見出し

if ($resultNumRows > 0) {
// データの取り出し
if (! isset($displayedCount)) { // 初めて呼び出されたときにはセットされていない
$rowCount = 0; // 行カウンタを0で初期化する
} else {
$rowCount = $displayedCount; // 次ページの行カウンタの開始番号は$displayedCount
print("前ページまでの表示済み件数は " . $displayedCount . " 件です。<BR>\n");
}
while (($rowCount < $resultNumRows)
and ($rowCount < ($displayedCount + RECLIMITCOUNT))) {
// レコードをオブジェクトとして取り出す
//$data = mysql_fetch_object($result, $rowCount); <<<<レコードが飛ぶ
$data = mysql_fetch_object($result);
print strval($rowCount + 1) ;// 行カウンタ
print "<center>";
print " <table width =\"700\" cellspacing =\"0\" cellpadding =\"2\" border =\"1\">";
print " ";
print " <tr>";
print " <td width=\"80\" heigth=\"60\" rowspan=\"4\"><img src=" . $data->image_s . "></td>";
print " <td bgcolor =\"aliceblue\" width =\"100\">物件コード</td>";
print " <td bgcolor =\"white\" width =\"200\"><a href=\"meisai.php?";
print "bukncode=" . $data->bukncode . "&"."f_sel=".$f_sel. "\" TARGET=\"_NEW\">";
print $data->bukncode . " </a></td>";
print " <td bgcolor =\"aliceblue\" width =\"100\">物件名</td>";
print " <td bgcolor =\"white\" width =\"200\">" . $data->buknname . "</td>";
print " </tr>";
print " ";
print " <tr>";
print " <td bgcolor =\"aliceblue\" width =\"100\">市郡町村</td>";
print " <td bgcolor =\"white\" width =\"200\">" . $data->citytown . "</td>";
print " <td bgcolor =\"aliceblue\" width =\"100\">地区</td>";
print " <td bgcolor =\"white\" width =\"200\">" . $data->tiku . "</td>";
print " </tr>";
print " ";
print " <tr>";
print " <td bgcolor =\"aliceblue\" width =\"100\">金額(円)</td>";
print " <td bgcolor =\"white\" width =\"200\">" . number_format($data->king,0,'.-',',') . "</td>";
print " <td bgcolor =\"aliceblue\" width =\"100\">駅・バス亭</td>";
print " <td bgcolor =\"white\" width =\"200\">" . $data->ekte . "</td>";
print " </tr>";
print " ";
print " </table>";
print "</center>";
print "<br>";

$rowCount++; // 行カウンタをインクリメント
}
}

print("</TABLE>\n");
print("<BR>\n");

// ボタンの表示
if (($rowCount > RECLIMITCOUNT) or ($rowCount < $resultNumRows)) {
print("<TABLE><TR>\n");
// 前のページ用
if ($rowCount > RECLIMITCOUNT) {
// [前の検索結果]ボタン
$prevRowCount = $rowCount - (RECLIMITCOUNT * 2); // 1画面前の表示用
$prevRowCount = ceil($prevRowCount / RECLIMITCOUNT)
* RECLIMITCOUNT; // 端数は切り上げ
if ($prevRowCount < 0) $prevRowCount = 0; // 負数になったら0にする
print("<FORM ACTION=\"". basename($PHP_SELF) . "\" METHOD=\"post\">\n");
print("<TD>");
print("<INPUT TYPE=\"submit\" VALUE=\"前の検索結果\"> ");
print("</TD>\n");
print("<INPUT TYPE=\"hidden\" NAME=\"bukncode\" VALUE=\"$bukncode\">");
print("<INPUT TYPE=\"hidden\" NAME=\"buknname\" VALUE=\"$buknname\">");
print("<INPUT TYPE=\"hidden\" NAME=\"citytown\" VALUE=\"$citytown\">");
print("<INPUT TYPE=\"hidden\" NAME=\"displayedCount\" VALUE=\"$prevRowCount\">");
print("<INPUT TYPE=\"hidden\" NAME=\"prevFileName\" VALUE=\"$prevFileName\">");
print("</FORM>\n");
}
// 次のページ用
if ($rowCount < $resultNumRows) {
// [次の検索結果]ボタン
print("<FORM ACTION=\"". basename($PHP_SELF) . "\" METHOD=\"post\">\n");
print("<TD>");
print("<INPUT TYPE=\"submit\" VALUE=\"次の検索結果\"><BR>");
print("</TD>\n");


print("<INPUT TYPE=\"hidden\" NAME=\"displayedCount\" VALUE=\"$rowCount\">");
print("<INPUT TYPE=\"hidden\" NAME=\"prevFileName\" VALUE=\"$prevFileName\">");
print("</FORM>\n");




}
print("</TR></TABLE>\n");
}


//結果セットの開放
//mysql_free_result($result);
//DB切断
mysql_close($conn);



?>
<!----------------------------------------------------------------------------->
<br>
<hr>
<!----------------------------------------------------------------------------->
</body>
</html>
Parent: 560  reply: 795 返信 編集 削除

[795] 確認(HTMLソース)

user: ゆうじ | created: 2003-10-22 18:16
> Selectフォームから一覧表示で下に次ページボタンがありますが次ページフォームが表示されません。

その、空の表示になっているページのソースは確認してみましたか?
Parent: 794  reply: 796 返信 編集 削除

[796] 初期化されてない?

user: ゆうじ | created: 2003-10-22 18:46
なが?いソースはとても読めません。
適当に省いて載せてくださいね。
もし、添削を希望されるならプロへご依頼下さい。

さて、
その[次の検索結果]ボタンの部分だけを見て気づいたことですが、
[次の検索結果]ボタンのフォーム中に、
$prevFileName という変数がありますが、
この変数に値が代入された様子はありませんが、
この当たりが原因ではないでしょうか。
Parent: 795  reply: 797 返信 編集 削除

[797] コメントありがとうございます。

user: たろー | created: 2003-10-23 08:25
テストしてみます。
書籍をみるとPostgreSQLのものはあるのですが、MYSQLとの違いは、使用する関数の違いだけの認識でいいですね。

一連の基本パターンかと思いますので、参考書籍でも見てみます。
Parent: 796  reply: 838 返信 編集 削除

[838] mysql

user: じろー | created: 2003-10-30 00:06
mysqlにはlimitで指定件数が取れると思うのですが…

それではだめなんでしょうか?
Parent: 797  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 771 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑