今、友人同士の名簿をデータべスにしてます。
そこで、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で質問しましょう!
似たような質問が見つかりました
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP ここでの ②if($su_d<>"")の比較演算子 を使う理由は 1 2022/03/26 02:33
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字化けが解決できません。お...
-
エクセルVBAについて
-
DBで指定した値しか存在しない...
-
php テーブルが作成できない
-
SELECT結果から動的にコンボボ...
-
WHILE中で前と重複したら間引く...
-
VBA初心者です。
-
DBで検索結果に該当するデータ...
-
MySQLでデータベースにデータin...
-
Pro*Cの構文エラー
-
XAMPPで画面が真っ白になります。
-
DB Error: no such field
-
phpにて出欠登録管理を作成して...
-
PHP+SQLite でSELECT文のWHERE...
-
テーブルに入っているデータと...
-
Accessのテーブルへ複数の主キ...
-
実行時エラー3131 FROM 句の構...
-
PHP初心者です。syntax error, ...
-
insert1つの処理でもトランザ...
-
SQL文が実行できません
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHPで[]の使い方について
-
php テーブルが作成できない
-
dbに登録したデータをphpのプル...
-
phpでmysqlを使ってデータベー...
-
アラートでyes noを作りたいです。
-
DBで検索結果に該当するデータ...
-
checkboxクリック時、SQLを実行...
-
文字化けが解決できません。お...
-
SELECT結果から動的にコンボボ...
-
PHPでMySQLデータを呼び出し、w...
-
while文の中にwhile文を書きた...
-
sortable ギブアップです…助け...
-
PHP と MySQL でテーブルの行数...
-
重複レコードをグループ化した...
-
PHPでMySQLのデータを2次元配...
-
mysql>PHPにデータ表示、10件ご...
-
PHPについてなのですが未定義の...
-
VBA初心者です。
-
ラジオボタンをループすること...
-
BLOBでの画像表示について
おすすめ情報