[PHP-users 34579] Re: 検索結果の 次へ(Next)、前へ(Previous)ができず困っています。
una
naoki @ fr.catv.ne.jp
2009年 5月 15日 (金) 23:23:14 JST
こんばんわ
次へを押したときに $_GET['page'] の中にデータは入っていますか?
もし入っていなければご使用のサーバで$_GETが使用できか調べてみてはいかがで
しょうか?
$_GETが同じような機能の関数は$_POST、$_REQUESTがありますので試してみてくださ
い。
-----Original Message-----
From: php-users-bounces @ php.gr.jp [mailto:php-users-bounces @ php.gr.jp] On
Behalf Of 有限会社ジュウイチ
Sent: Friday, May 15, 2009 10:38 PM
To: PHP-users ML
Subject: [PHP-users 34578] Re: 検索結果の 次へ(Next)、前へ(Previous)ができず
困っています。
投稿した マツムラです。
高橋 様 ご教授ありがとう御座います。
本を5冊以上買って、色々と読んでいるのですが、検索結果の 「前へ 次へ」に
関して、書いてある本が無く困っていました。
-------------------------------------------------------------------------
詳細のCODEを作成頂きありがとう御座います。
詳しいデータベースの構造は、高橋様の推測どおりです。
早速、作っていただいたCODEを使ってみたところ、
Unknown column 'id' in 'order clause' というエラーが出てしまいました。
そこで、下記の行を " ORDER BY id ASC "を取って
$query = sprintf("SELECT * from dive_free_tbl_ where card_level = '%s'
ORDER BY id ASC", $card_level);
に変更したところ、
$query = sprintf("SELECT * from dive_free_tbl_ where card_level = '%s'
", $card_level);
検索結果の表示はするのですが、" 先頭 戻る 次へ 最終 "が動作してくれません。
-------------------------------------------------------------------------
※こんなにお手数をお掛けしていて、色々と申し訳ありませんが、
ご教授いただけないでしょうか?
-------------------------------------------------------------------------
>$card_level = $_REQUEST['card_level'];
>
>は、ページングには何の関係もありません。ただの抽出条件ですよね?
>フォームか何かで渡しているのであれば、$_POSTでも取得できます。
-------------------------------------------------------------------------
言われるとおり、フォームで検索内容を渡しているだけです。
$_POSTでも取得できるようですね。何故、$_REQUESTにしていたのかも覚えていませ
ん。
とにかく、スキルが低く申し訳ありません。出きるだけ勉強いたします。
PS.....
私のスキルが低すぎて、丸投げのような形になってしまっていますが、毎日数時間
自分なりに、色々なサンプルコードを導入してテストをしていたのですが、全くう
まく動作しない状態でした。
今までは、ホスティングではなく自前のインターネットサーバにて、
FileMakerServerAdvanced + IIS + PHP +FX.PHP にて色々と運営していました。
この時に使っていたCODEを変更して、どうにかできるかと思っていたのですが、
なかなか、うまく行かず困り果てていました。
今までの詳細を書いてても、泣き言をダラダラ書いているようになってしまっても
何かと思い、何も書きませんでした。
本当にお手間をお掛けして申し訳ありませんが、よろしくお願いいたします。
以上
On Fri, 15 May 2009 21:05:30 +0900
高橋政利 <takahashi @ hoshino-dk.co.jp> wrote:
> 高橋です。
>
> 丸投げっぽい気もしますが、私もこのメーリングリストにお世話になってますの
> で、ご参考になれば・・・・・。
> ページングはPHPとMySQLの組み合わせですので、MySQLとPHPの両スキルが必要で
> す。頑張って下さいね。本を5冊もお持ちであれば、何とかなりますよ。詳しい
> ことは、お手持ちの本を熟読して下さい。
>
> データベースですが、詳しいデータベースの構造がよく分かりませんので、推測
> が入っています。ご了承下さい。一応、
>
> CREATE TABLE `dive_free_db_`.`dive_free_tbl_` ( `id` INT NOT NULL
> AUTO_INCREMENT PRIMARY KEY , `time_stamp` TIMESTAMP NOT NULL ,
> `card_level` TEXT NOT NULL , `tank_number` TEXT NOT NULL ,
> `diving_point` TEXT NOT NULL , `diver_age` INT NOT NULL , `diver_sex`
> TEXT NOT NULL
> ) ENGINE = MYISAM;
>
> と仮定しています。以下コードです。
>
>
> <?
> /*
> * ページングサンプル
> */
>
> //変数取得
> $card_level = $_REQUEST['card_level'];
> //接続情報
> $DBSERVER = "localhost";
> $DBUSER = "root";
> $DBPASSWORD = "";
> $DBNAME = "dive_free_db_";
> //ページ情報
> $current = $_SERVER["PHP_SELF"]; //基本アドレス
> $maxRow = 10; //表示行数
> $page = 0; //ページ番号(初期)
> if(isset($_GET['page'])) //ページ番号がURIに含まれていれば
> {
> $page = $_GET['page']; //ページ番号の取得(初期設定を上書き)
> }
> $startRow = $page * $maxRow; //データベースから取得する最初の行
> //接続
> $con = mysql_pconnect($DBSERVER, $DBUSER, $DBPASSWORD) or
> trigger_error(mysql_error(),E_USER_ERROR);
> mysql_query("set names sjis"); //文字セット
> $selectdb = mysql_select_db($DBNAME, $con); //データベース選択
> //データ取得
> $query = sprintf("SELECT * from dive_free_tbl_ where card_level =
'%s' ORDER BY id ASC", $card_level); //基本クエリ
> $queryLimit = sprintf("%s LIMIT %d, %d", $query, $startRow, $maxRow); //オ
フセット
> $setAll = mysql_query($query, $con) or die(mysql_error()); //全件抽出
> $rowTotal = mysql_num_rows($setAll); //総レコード数を取得
> $set = mysql_query($queryLimit, $con) or die(mysql_error()); //条件
抽出
> $row = mysql_fetch_assoc($set); //結果セットの最初の1行を連想配列
で取得
> $maxPage = floor($rowTotal/$maxRow); //最終ページ番号
> ?>
>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
> <html xmlns="http://www.w3.org/1999/xhtml">
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=shift_jis"
> />
> <title>ページングテスト</title>
> </head>
> <body>
> <?php do { ?>
> <br />
> <table width="580" border="0" cellpadding="2" cellspacing="0"
bordercolor="#CCCCCC" bgcolor="#f9f3ff">
> <tr height="25">
> <th width="17%" align="center" bgcolor="#E6E6E6" class="style2">登録日
</td>
> <th width="18%" align="center" bgcolor="#E6E6E6" class="style2">Card
Level</td>
> <th width="16%" align="center" bgcolor="#E6E6E6" class="style2">タンク
本数</td>
> <th width="16%" align="center" bgcolor="#E6E6E6" class="style2">主な潜
水地</td>
> <th width="15%" align="center" bgcolor="#E6E6E6" class="style2">年齢
</td>
> <th width="15%" align="center" bgcolor="#E6E6E6" class="style2">性別
</td>
> </tr>
> <tr>
> <td><font color="#000082"><?php echo $row['time_stamp'];
?></font></td>
> <td><font color="#000082"><?php echo $row['card_level'];
?></font></td>
> <td><font color="#000082"><?php echo $row['tank_number'];
?></font></td>
> <td><font color="#000082"><?php echo $row['diving_point'];
?></font></td>
> <td><font color="#000082"><?php echo $row['diver_age']; ?></font></td>
> <td><font color="#000082"><?php echo $row['diver_sex']; ?></font></td>
> </tr>
> </table>
> <?php } while ($row = mysql_fetch_assoc($set)); //結果セットの次行を連想配
列で取得 ?>
> <a href="<?php printf("%s?page=%d", $current, 0); ?>">先頭</a>
> <a href="<?php printf("%s?page=%d", $current, max(0, $page-1));
> ?>">戻る</a>
> <a href="<?php printf("%s?page=%d", $current, min($maxPage, $page+1));
> ?>">次へ</a>
> <a href="<?php printf("%s?page=%d", $current, $maxPage); ?>">最終</a>
> </body>
> </html>
> <?php mysql_free_result($set); ?>
>
>
> ちなみに
>
> $card_level = $_REQUEST['card_level'];
>
> は、ページングには何の関係もありません。ただの抽出条件ですよね?
> フォームか何かで渡しているのであれば、$_POSTでも取得できます。
> 今回は、URIにページ番号を仕込んであります。ページ番号をURI($_GET)で取
> 得して、オフセット値を計算しデータベースより抽出して表示をすれば良いと思
> います。そしてページ番号を使用して、新たなリンクを貼ればページングの完成
> です。
>
>
> と。これで宜しかったでしょうか?
> 勘違いしていたら、スルーして下さい。
>
> ではでは。
>
> _______________________________________________
> PHP-users mailing list PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://oldwww.php.gr.jp/php/novice.php3
--
有限会社ジュウイチ <zuichi_info @ omocha.co.jp>
_______________________________________________
PHP-users mailing list PHP-users @ php.gr.jp
http://ml.php.gr.jp/mailman/listinfo/php-users
PHP初心者のためのページ - 質問する前にはこちらをお読みください
http://oldwww.php.gr.jp/php/novice.php3
PHP-users メーリングリストの案内