[PHP-users 34585] Re: 検索結果の 次へ(Next)、前へ(Previous)ができず困っています。
有限会社ジュウイチ
zuichi_info @ omocha.co.jp
2009年 5月 16日 (土) 15:19:57 JST
高橋様、una様、竹内宜長様
いろいろとご教授いただきありがとう御座います。
投稿したマツムラです。
una様に投稿いただきました、サンプルCODEの通りに、パラメーターを追加したら
キチント動作いたしました。
みなさまのお力をを頂、検索結果を「次へ(Next)、前へ(Previous)」ができるように
なりました。
今後は、できる限り自分で解決できるように勉強していきたいと思います。
本当に、みなさまありがとう御座いました。
今後ともご教授いただくことが有るかと思いますが、よろしくお願いいたします。
On Sat, 16 May 2009 12:07:51 +0900
"una" <naoki @ fr.catv.ne.jp> wrote:
> おはようございます。
>
> $_POSTでデータが引数が渡せているようですね。
> if(isset($_POST['page'])) //ページ番号がURIに含まれていれば
> {
> $page = $_POST['page']; //ページ番号の取得(初期設定を上書き)
> }
>
> <a href="/d_free/Process_10-12_search_card_ctl.php?page=1">次へ</a>
> <a href="/d_free/Process_10-12_search_card_ctl.php?page=1">最終</a>
>
> 次へを押したときに何も表示されないのはパラメーターにcard_level の情報が入っ
> ていないからだと思います。
> この部分にcard_levelの値を入れれば表示されるかと思います。
>
> 例
> <a href="<?php printf("%s?page=%d", $current, min($maxPage, $page+1))
> ↓
> <a href="<?php printf("%s?page=%d&card_level=%s", $current, min($maxPage,
> $page+1),$card_level)
>
> -----Original Message-----
> From: php-users-bounces @ php.gr.jp [mailto:php-users-bounces @ php.gr.jp] On
> Behalf Of 有限会社ジュウイチ
> Sent: Saturday, May 16, 2009 12:07 AM
> To: PHP-users ML
> Subject: [PHP-users 34580] Re: 検索結果の 次へ(Next)、前へ(Previous)ができず
> 困っています。
>
>
> 投稿した マツムラです。
>
> 高橋 様
>
> いろいろとお手間をお掛けして申し訳ありません。
>
>
>
> 下記の行を " 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);
>
> 検索結果の表示をして、ブラウザのソースを見たところ、下記のようになっていまし
> た。
> 上記のの様に、CODEを変更して検索した最初のページのソースです。
>
>
> <a href="/d_free/Process_10-12_search_card_ctl.php?page=0">先頭</a>
> <a href="/d_free/Process_10-12_search_card_ctl.php?page=0">戻る</a>
> <a href="/d_free/Process_10-12_search_card_ctl.php?page=1">次へ</a>
> <a href="/d_free/Process_10-12_search_card_ctl.php?page=1">最終</a>
>
>
> ※/d_free/Process_10-12_search_card_ctl.php はFile名です。
>
> ----------------------------------------------------------------------------
> --
>
> if(isset($_REQUEST['page'])) //ページ番号がURIに含まれていれば
> {
> $page = $_REQUEST['page']; //ページ番号の取得(初期設定を上書
> き)
> }
>
> ----------------------------------------------------
>
> if(isset($_POST['page'])) //ページ番号がURIに含まれていれば
> {
> $page = $_POST['page']; //ページ番号の取得(初期設定を上書き)
> }
>
>
> ※$_GET を上記の様に変更しましたが、結果は同じでした。
>
>
> php.iniを下記の様になっている事を確認して、ApacheとMySQLの再起動をして確認
> しましたが、結果は同じでした。
>
> register_globals = On
> register_long_arrays = On
>
>
> お時間のあるときにでも、ご教授お願いします。
>
> 本当に、お手数お掛けして申し訳ありませんが、
> よろしくお願いいたします。
>
>
> 以上
>
>
>
>
>
>
>
>
> On Fri, 15 May 2009 23:23:14 +0900
> "una" <naoki @ fr.catv.ne.jp> wrote:
>
> > こんばんわ
> >
> > 次へを押したときに $_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 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 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 メーリングリストの案内