今、友人同士の名簿をデータべスにしてます。
そこで、mySQLをつかってPHPで検索するシステムを作りたく、検索まではできるようになったのですが、ページングの仕方がわかりません。
PEARは使用できないので、どなたか下記にどのようにプログラムを追加すればページング機能がつけられるか教えて下さい。お願い致します。
(下記の検索プログラムは、http://php.dori-mu.net/で紹介されていたものを利用しました。)
---------------------------------------------------------------
<html>
<head>
<title>PHP SEARCH RESULT</title>
<meta http-equiv="Content-Type" content="text/html; charset=x-euc-jp">
</head>
<body>
<?
$debug = false;
//DB接続
mysql_connect("127.0.0.1","sample","");
mysql_select_db("sample");
if($debug) print_r($HTTP_POST_VARS);
//エラーチェック
//リクエストメソッドチェック
if($REQUEST_METHOD != "POST") {
print "Error: invalid method";
exit();
}
//クエリ生成
$query = "SELECT * FROM search ";
//検索条件生成
//名前
if(!empty($name)) {
$name = addslashes($name);
$where = "name = '$name' && ";
}
//住所
if(!empty($address)) {
$address = addslashes($address);
$where .= "address REGEXP '$address' && ";
}
//性別
if(!empty($gender)) {
$gender = addslashes($gender);
$where .= "gender = '$gender' && ";
}
//スキル
if(!empty($skill)) {
foreach($skill as $value) {
$value = addslashes($value);
$temp_where .= "skill REGEXP '$value' || ";
}
$temp_where = substr($temp_where, 0, -4);
$where .= "(". $temp_where. ") && ";
}
if(!empty($where)) {
$where = substr($where, 0, -4);
$where = "WHERE " . $where;
}
$query .= $where;
if($debug) {
print "<BR><BR>";
print $query;
}
$result = mysql_query($query);
$num_rows = mysql_num_rows($result);
if($num_rows == 0) $message = "該当するデータはありませんでした";
else $message = $num_rows . "件ヒットしました";
?>
検索結果<br>
<?=$message?>
<table border=1>
<tr><td>名前</td><td>住所</td><td>性別</td><td>スキル</td></tr>
<? while($row = mysql_fetch_assoc($result)): ?>
<tr><td><?=$row[name]?></td><td><?=$row[address]?></td><td><?=$row[gender]?></td><td><?=$row[skill]?></td></tr>
<? endwhile; ?>
</table>
<a href="input.html">再検索</a>
</body>
</html>
----------------------------------------------------------------
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.2です。
>次のページ指定や次のページを表示することができませんでした。
というのはどうやって次のページに移るのかわからないって意味でしょうか?
でしたらGETで渡してるので,ブラウザのURL欄に
http://www.example.com/test.php?page=2
みたいにファイル名の後に?page=ページってやるとできるはずです。
またはGETが良く分からないなら
$page = $_GET{'page'}; //現在のページを受け取る
の部分を
$page = 2;
とすれば2ページに移るはずなんですけど。だめでしたか?
それとも次のページへのリンクが出せないって意味でしょうか?
それでしたらまずSQLで検索条件に一致するものの件数を取ってきて,最大ページを計算して,for文で回せば出せますよね。
参考URL:http://php.benscom.com/manual/ja/index.php
No.3
- 回答日時:
No.2
- 回答日時:
//ここから
$page = $_GET{'page'}; //現在のページを受け取る
//ページ指定がないときは1ページ目と見なす
if ($page == "") {
$page = 1;
}
$count_per_page = 10; //1ページ当たり10件表示
$query .= "limit $count_per_page offset ".($page-1)*$count_per_page;
//ここまで
というのを
if($debug) {
print "<BR><BR>";
print $query;
}
の前に入れたらできませんか?
チェックしてないのでミスがあったらすみません。
ブラウザからアクセスするときにファイル名の後に?page=2をくっつければ2ページ目が出るはずです。
これができたら,検索条件に一致した件数を取得してページ一覧を出す処理を追加してみたら使いやすくなりそうですね。
早々のご返答ありがとうございます。
limitで表示件数を規制するんですね。
自分のレベルは初心者なので、ご指摘いただいたとおりやってみたところ10件表示にはなるものの、次のページ指定や次のページを表示することができませんでした。
お手数ですがその方法もご教示頂ければありがたいです。
宜しくお願いします。
No.1
- 回答日時:
どこまでスキルのある方か存じませんので
もしかしたら求めているものと違うかも?
普通は
"LIMIT 開始レコード,レコード数"
開始レコードを$_GET["sr"]みたいに
ページごとに取得して開始レコードにぶちこむ感じだと思います。
セッションやクッキーを使わないのであれば
毎回、条件も送らないといけないですね。
そーすは書く元気と気力がないっす。
ご返答ありがとうございます。
お疲れのところありがとうございます。
スキルは初心者で、PHPでつくるにしても、本やネットで元を頂いて、簡単なカスタマイズができる程度です。
なのでお恥ずかしいのですが、部分的にご指摘いただいてもわからない場合が多いです。
お疲れのところ恐縮ですが具体的にご指摘いただければ幸いです。
お願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・【お題】絵本のタイトル
- ・【大喜利】世界最古のコンビニについて知ってる事を教えてください【投稿~10/10(木)】
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
dbに登録したデータをphpのプル...
-
mysql php ループ列の行の値を...
-
データベース データ表示方法
-
連想配列、オブジェクト配列の...
-
MySQLでデータベースにデータin...
-
SQL文2つ実行
-
VBAをつかってクエリの情報を抽...
-
テーブルの数
-
HTMLの質問・・段落のしたかを...
-
phpのエラーについてです
-
mysql_query等でレコード数を変...
-
MySQL5のデータを、SQL文を使い...
-
宜しくお願いします。
-
Yomi-search(PHP)を設置する...
-
【PHP】CSVファイル内の文字列...
-
画像データの取得と格納
-
SQLiteでDBに書き込みできません
-
php データベースから値を取得する
-
ブラウザにテーブルのレコード...
-
PHP+SQLite でSELECT文のWHERE...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
checkboxクリック時、SQLを実行...
-
dbに登録したデータをphpのプル...
-
PHP・MySQL使用で、年齢制限を...
-
PHPでMySQLデータを呼び出し、w...
-
Smartyを用いたコードの書き方...
-
文字化けが解決できません。お...
-
DBで検索結果に該当するデータ...
-
テーブル内の文字によりログイ...
-
sortableを使用したデータのUPDATE
-
ラジオボタンをループすること...
-
PHP+MySQLでの配列のinsert文に...
-
入れ子のようにしてデータを作...
-
PHPでの検索機能がうまく動きま...
-
記事のコメント数表示について
-
PHP 関数呼び出し後に配列添字...
-
htmlとphpの分離
-
sortable ギブアップです…助け...
-
VBA初心者です。
おすすめ情報