[PHP-users 34573] Re: 検索結果の 次へ(Next)、前へ(Previous)ができず困っています。
Masatoshi Ishikawa
masato-i @ yj8.so-net.ne.jp
2009年 5月 15日 (金) 01:59:08 JST
いしかわ です.
こんばんは
limit を使って解決を図るのであれば,PHPより MySQLのMLで
たずねられた方がよいような気もしますが,・・・
それはそれとして.検索結果の任意のところから n件の
検索結果を取得するのであれば,limit 句にオフセット
を指定すればよいと思います.
リファレンスを見たところ書式としては,
SELECT * FROM テーブル WHERE 条件 LIMIT オフセット,件数
でよいと思います.オフセットの計算は,
(ページ番号-1)*[1ページに表示したい結果の件数]
でどうでしょうか? (ページ番号が1から始まると仮定しています)
ページ番号は,次へ や 前へ のボタン(リンク?)を押したときのPHPのプログ
ラムへ値を渡すようにすればよいと思います.
リンクで渡すのであれば・・・
<a href="hoge.php?page=ページ">前へ</a>
のような感じでかけばとりあえず動くと思います.ちなみに上のリンクから値を
取り出す場合は,$card_level とときと同じでよいと思います.
ソースを書いてテストしていないので,少々頼りない背梅異聞で申し訳ないです
がいかがでしょうか?
では.
有限会社ジュウイチ さんは書きました:
> 投稿した、マツムラです。
>
> ご教授ありがとう御座います。
> とにかく、自分にスキルが無く理解力もないためすみません。
>
> 書き忘れたのですが、このCODEは、
>
> $card_level = $_REQUEST['card_level']; // 変数に代入
>
> この部分でわかると思いますが、$card_level で検索している状態です。
> " LIMIT "をSELECTの検索CODEに、見よう見まねでいろいろやってみましたが
> LIMITの数量のみ表示される状態になり、自分では、検索結果の 次へ(Next)、
> 前へ(Previous)を実現することができませんでした。
>
> スキルが無く(レベルが低く)申し訳ありません。
> もう少し、初心者向けとしてご教授いただけたら助かります。
> 申し訳ありませんが、よろしくお願いします。
>
>
>
>
> On Fri, 15 May 2009 00:49:25 +0900
> Masatoshi Ishikawa <masato-i @ yj8.so-net.ne.jp> wrote:
>
>> いしかわ です.
>>
>> はじめまして.
>>
>> 質問を勘違いしているかもしれませんが・・・
>>
>>
>> 下のコードを見た限り,MySQLに発行するSQL文で limit を使って取得する検索
>> 結果の範囲を指定するか,検索結果を配列に一度全部入れいているようなので,
>> 表示する配列の範囲を指定してやればできると思いますが,どうでしょうか?
>>
>> では.
>>
>>
>> 有限会社ジュウイチ さんは書きました:
>>> マツムラといいます。
>>>
>>> 初めて投稿させていただきました。
>>>
>>> PHPでMySQLの検索結果の 次へ(Next)、前へ(Previous)ができず困っています。
>>> 海外のサイトのサンプルCODEをみて、色々と試したのですが、どうにもうまく
>>> 行きません。また、本も5冊買っていろいろ見たのですが、ダメでした。
>>>
>>> 自分にスキルが無いのが原因とは思いますが、何方かご教授いただけないでし
>>> ょうか?
>>>
>>> よろしくお願いします。
>>>
>>>
>>> OCNのメール&ウェップPro2のホスティングを利用しています。
>>>
>>>
>>>
>>> ※HOSTINGの各バージョン(RedHat Linux)
>>> " Apache2.0.52 "," MySQL 5.0.51a "," PHP5.2.8 "です。
>>>
>>> ※下記が、現在検索をしているページのCODEです。このページにて、
>>> 検索結果の 次へ(Next)、前へ(Previous)を実現したいと思っております。
>>>
>>>
>>> <?php
>>>
>>> // -------------- MySQL データ操作 --------------------------------
>>>
>>> $card_level = $_REQUEST['card_level']; // 変数に代入
>>>
>>> $DBSERVER = "localhost"; //MySQLサーバー名-----
>>> $DBUSER = "root"; //ログインユーザー名
>>> $DBPASSWORD = ""; //パスワード----------
>>> $DBNAME = "dive_free_db_"; //データベース名
>>>
>>> //MySQLに接続します
>>> $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD);
>>>
>>> //MySQL読み込み時の文字コードを設定---------------------------------------
>>> mysql_query("set names sjis");
>>>
>>> //データベースを選択します
>>> $selectdb = mysql_select_db($DBNAME);
>>>
>>> // dive_free_tbl_テーブルに検索を実行する。
>>>
>>> $sql = "SELECT * from dive_free_tbl_ where card_level = '$card_level'";
>>>
>>> //SQLを発行して結果セットを取得します-----------------------変更--------------
>>> $result = mysql_query($sql) or die(mysql_error());
>>>
>>> //検索結果のレコード数を $rowa に格納します
>>> $rows = mysql_num_rows($result);
>>>
>>> //--------------------------------------------------------------------------
>>> // foreach用のループ変数" $radars " を設定---------------START------
>>>
>>> for ($i = 0, $n = mysql_num_rows($result); $i < $n; $i++)
>>> {
>>> $radars[] = mysql_fetch_assoc($result);
>>> }
>>>
>>> // foreach用のループ" $radars " を設定---------END------------------
>>>
>>>
>>> ?>
>>>
>>> <!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" />
>>> </head>
>>>
>>> <body>
>>> <?php foreach($radars as $radar):// 検索結果の一覧表示の始まり------------- ?>
>>> <br />
>>> <table width="580" border="0" cellpadding="2" cellspacing="0" bordercolor="#CCCCCC" bgcolor="#f9f3ff">
>>> <tr height="25">
>>> <td width="580" height="25" align="center" valign="top" bgcolor="#E6E6E6"><table width="580" border="0" cellpadding="2">
>>> <tr>
>>> <td width="17%" height="20" align="center" bgcolor="#E6E6E6" class="style2">登録日</td>
>>> <td width="18%" align="center" bgcolor="#E6E6E6" class="style2">Card Level</td>
>>> <td width="16%" align="center" bgcolor="#E6E6E6" class="style2">タンク本数</td>
>>> <td width="16%" align="center" bgcolor="#E6E6E6" class="style2">主な潜水地</td>
>>> <td width="15%" align="center" bgcolor="#E6E6E6" class="style2">年齢</td>
>>> <td width="15%" align="center" bgcolor="#E6E6E6" class="style2">性別</td>
>>> </tr>
>>> <tr>
>>> <td><font color="#000082"><?php echo $radar['time_stamp']?></font></td>
>>> <td><font color="#000082"><?php echo $radar['card_level']?></font></td>
>>> <td><font color="#000082"><?php echo $radar['tank_number']?></font></td>
>>> <td><font color="#000082"><?php echo $radar['diving_point']?></font></td>
>>> <td><font color="#000082"><?php echo $radar['diver_age']?></font></td>
>>> <td><font color="#000082"><?php echo $radar['diver_sex']?></font></td>
>>> </tr>
>>> </table></td>
>>> </tr>
>>> <tr>
>>> <td align="right" valign="middle">
>>> </td>
>>> </tr>
>>> </table>
>>> <?php endforeach; // 検索結果の一覧表示の終わり--------------------------- ?>
>>> </body>
>>> </html>
>>>
>>>
>>>
>>>
>>> 以上
>>>
>>>
>>>
>>>
>>>
>>> _______________________________________________
>>> 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
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>>
>>> No virus found in this incoming message.
>>> Checked by AVG - www.grisoft.jp
>>> Version: 8.5.325 / Virus Database: 270.12.29/2114 - Release Date: 05/14/09 06:28:00
>>>
>> _______________________________________________
>> 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
>
>
> ------------------------------------------------------------------------
>
>
> No virus found in this incoming message.
> Checked by AVG - www.grisoft.jp
> Version: 8.5.325 / Virus Database: 270.12.29/2114 - Release Date: 05/14/09 06:28:00
>
PHP-users メーリングリストの案内