上が検索フォーム、下が検索結果のように、画面を横割りにフレーム分割しています。
この検索結果リストの各カラムヘッダにハイパーリンクを仕込んで、
それをクリックするたびに昇順⇔降順でソートさるようにしたいですが、
PHP側をどのように改造する必要がありますでしょうか?
下記の例では、価格、書名がリンクになるイメージです。
【上段フレーム: search_form.htm】
<HTML>
<HEAD></HEAD>
<BODY>
<FORM method="POST" action="list.php" target="result_list">
書名<INPUT size="44" type="text" name="title"> を含む
<INPUT type="submit" name="exec" value="検索">
</FORM>
</BODY>
</HTML>
【下段フレーム: result_list.php】
<?php
$con = mysql_connect(DBSERVER, DBUSER, DBPASSWORD);
$selectdb = mysql_select_db(DBNAME, $con);
$sql = "select * from bookdb where (title like '%$title%') order by price";
$rst = mysql_query($sql, $con);
$recmax = mysql_num_rows($rst);
$body = "<B>$recmax 冊みつかりました。</B>";
$body .= "<TABLE border='1'>
<TR>
<TD>価格</TD>
<TD>書名</TD>
<TR>\n";
while($col = mysql_fetch_array($rst)) {
$body .= "<TR>\n";
$body .= "<TD>" . $col["price"] . "</TD>\n";
$body .= "<TD>" . $col["title"] . "</TD>\n";
$body .= "</TR>\n";
}
$body .= "</TABLE>\n";
mysql_free_result($rst);
$con = mysql_close($con);
?>
<HTML>
<HEAD></HEAD>
<BODY>
<?= $body ?>
</BODY>
</HTML>
■ 環境
PHP 5.0.4 Win
MySQL mysql 4.0.14b Win
■知識レベル:
HTMLタグ打ち、初歩的なSQLを理解できる程度、PHP他プログラミング知識なし
No.3ベストアンサー
- 回答日時:
#2です。
register_globalsをonにするか、$_POSTと$_GETの
両方の処理をいれれば動きます。
ちなみに前回のスクリプト自体register_globalsがonの前提。
通常は$_GETや$_POSTで受けます。
javascriptを使うと、ユーザーの環境に依存してしまう
ため個人的にはこの手の検索フォームにjavascriptは使いたく
ないのですが、参考までにPOSTをつかった例を挙げておきます。
POSTとなっているところをGETにかえればそのままGETになります。
<?PHP
$key=$_POST["key"];
$sort=$_POST["sort"];
$sort_price="asc";
$sort_title="asc";
if ($key!=""){
$orderby="ORDRE BY $key $sort";
switch ($key){
case "price":
if ($sort=="asc") $sort_price="desc";
break;
case "title":
if ($sort=="asc") $sort_title="desc";
break;
}
}
$body="select * from bookdb where (title like '%\$title%') $orderby";
//SQL処理
$body.=<<<eof
<hr>
<a href="javascript:sendForm('','')">ソートなし</a><br>
<a href="javascript:sendForm('price','$sort_price')">価格</a><br>
<a href="javascript:sendForm('title','$sort_title')">書名</a>
<form action="$PHP_SELF" method="POST">
<input type="hidden" name="key" value="$key">
<input type="hidden" name="sort" value="$sort">
</form>
eof;
?>
<html>
<body>
<?= $body ?>
<script language="javascript">
function sendForm(num1,num2){
var f=document.forms[0];
f.key.value=num1;
f.sort.value=num2;
f.submit();
}
</script>
</body>
</html>
yambejpさん、こちらでも大変お世話になりました。
> ちなみに前回のスクリプト自体register_globalsがonの前提。
通常は$_GETや$_POSTで受けます。
すみません、register_globalsの問題はやはりつまずいて少し
わかってましたが、作成中のもの=OFFの前提、
本質問で提示したサンプル=ONの前提でしたね。
#1さんとyambejpさんのものが使いこなせなそうで
途方にくれてたのですが、ご提示いただいたサンプルを
ヒントに、結局
(1) フォーム側でどういうキーでソートするか予め指定
(2) 指定されたソート条件をPHPで受け取ってORDER BY句を切り替え
・・という風にすれば、何とかなるかもしれないと
以下の二点組み合わせてなんとか実装できました。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1614695
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1613811
#1さん、 yambejpにご提示いただいたものについてもよく勉強して、
次回以降(もう少しわかってきたら)、使わせていただきたいです。
別質問も含め、yambejpさんには本当に助けていただきました。
心より御礼申し上げます。
No.2
- 回答日時:
こんな感じを考えているのでしょうか?
かなりはしょっているので、エラー処理などは適宜いれてください。
<?PHP
$url_price="$PHP_SELF?key=price&sort=asc";
$url_title="$PHP_SELF?key=title&sort=asc";
if ($key!=""){
$orderby="ORDRE BY $key $sort";
switch ($key){
case "price":
if ($sort=="asc") $url_price="$PHP_SELF?key=price&sort=desc";
break;
case "title":
if ($sort=="asc") $url_title="$PHP_SELF?key=title&sort=desc";
break;
}
}
$body="select * from bookdb where (title like '%\$title%') $orderby";
//SQL処理
$body.=<<<eof
<hr>
<a href="$PHP_SELF">ソートなし</a><br>
<a href="$url_price">価格</a><br>
<a href="$url_title">書名</a>
eof;
?>
<html>
<body>
<?= $body ?>
</body>
</html>
yambejpさん、早速ありがとうございます。
#1さんへの御礼にも書きましたが、
yambejpさんにご提示いただいたサンプルも
なんとなく、雰囲気はつかめたるですが
今回は、POSTを使ってます。
関係なくGETで使えるものでしょうか?
とんちんかんなことを言ってたらすみません
No.1
- 回答日時:
例えば
if ($_GET['f']) { $flag = ""; } else { $flag = "1"; }
として、
<A href="result_list.php?f=$flag">
とします。
そして
if ($flag) {
$sql = "select * from bookdb where (title like '%$title%') order by price desc";
} else {
$sql = "select * from bookdb where (title like '%$title%') order by price";
}
とかすればいいとおもいます。
moon_nightさん、早速ありがとうございます。
なんとなく、なるほどなぁと雰囲気はつかめたのですが
今回は、POSTを使ってますが、関係なく
GETで使えるものでしょうか?
とんちんかんなことを言ってたらすみません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- PHP php テーブルが作成できない 1 2022/11/17 23:41
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP php ログイン 1 2022/11/01 00:24
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
phpでmysqlを使ってデータベー...
-
DBで検索結果に該当するデータ...
-
SQLiteのhtml表示
-
PHPで[]の使い方について
-
DBの値を基にliにulをネストし...
-
php mysqlで作ったデータをgoog...
-
アラートでyes noを作りたいです。
-
実行時エラー3131 FROM 句の構...
-
MySQLでデータベースにデータin...
-
JAVA SQLServerException 列名 ...
-
sqlから多次元配列に要素を格納...
-
VBAをつかってクエリの情報を抽...
-
MySQLのデータを使ってプルダウ...
-
PHP+PDO+MYSQL で実行されたSQ...
-
エラー3011
-
ToDoリストの「完了済」を非表...
-
変数を組み入れたい
-
PHPで絞り込み検索結果の件数を...
-
OracleからAccessへのインポート
-
Q&Aサイトを作成していてURLの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DBで検索結果に該当するデータ...
-
PHPで[]の使い方について
-
アラートでyes noを作りたいです。
-
phpでmysqlを使ってデータベー...
-
PHP、SQLite3のデーターでログ...
-
dbに登録したデータをphpのプル...
-
checkboxクリック時、SQLを実行...
-
PHPでMY SQLの連想配列をリンク...
-
文字化けが解決できません。お...
-
PHPでMySQLデータを呼び出し、w...
-
SELECT結果から動的にコンボボ...
-
php ログインフォーム作成
-
VBA初心者です。
-
チェックボックスでチェックし...
-
sortableを使用したデータのUPDATE
-
php mysqlで作ったデータをgoog...
-
mysql_insert_id()の使い方
-
PHPとSmartyを使い、データベー...
-
MySQLに保存した画像を表示したい
-
PHP+MySQLでの配列のinsert文に...
おすすめ情報