こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

「次の○件」の時、値がデフォルトにもどってしまいます。

MySQLとPHP4で検索システムを作っています。
検索結果を20件ずつ表示させ、21件目から「次へ」をクリックすることで表示させてるのですが、「次へ」をクリックしてもうまく表示ができません。
キーワードはurlencodeを使って解決したのですが、プルダウン(コンボボックス?)を使ったOrderByの設定がデフォルトに戻ってしまいます。
urlencodeを使ってできなかったので、どのようにしたらよいのか、ご教授をお願い致します。

イメージだけでも御参考になれば…
「キーワード<input type="text">」を(書名順・著者名順)で 検索<input type="submit">

この( )の部分を以下のようにし、

html
<SELECT name="sort">
<OPTION value="title">書名</OPTION>
<OPTION value="auth">著者名</OPTION></SELECT>

php
$sort=$_POST[sort]; //または、GET
if($sort=="title"){
$sql .="order by title ";
}elseif($sort=="auth"){
$sql .="order by auth ";
}
のようにやってます。

投稿日時 - 2005-02-21 14:01:11

QNo.1229886

困ってます

質問者が選んだベストアンサー

こんにちは。

$sort=$_POST[sort]; //または、GET
で受け取った$sortの値をURLにそのまま
埋め込んで実行できないでしょうか?

*.php?text=キーワード(エンコード後)&sort=$sort

>プルダウン(コンボボックス?)を使ったOrderByの設定がデフォルトに戻ってしまいます。

もしかして、検索時に選択されたコンボボックスの値が
著者名のソート条件で検索を行ったのに、次のページへ
遷移すると、書名の選択状態になってしまうということでしょうか?

<SELECT name="sort">
<OPTION value="title">書名</OPTION>
<OPTION value="auth">著者名</OPTION>
</SELECT>

このソースが次のページに行っても表示されてしまうので
書名が選択状態になってしまうと思います。

<SELECT name="sort">
<OPTION value="title" <?php if($sort=="title"){print " selected";} ?>>書名</OPTION>
<OPTION value="auth" <?php if ($sort=="auth"){print " selected";} ?>>著者名</OPTION>
</SELECT>

こうすることにより、$sortの中身を判別し、対応した値
が送信されてきたらselectedを出力することにより、
デフォルトの選択状態を任意に設定することが出来ます。

的を得ていなかったら申し訳ないです。

投稿日時 - 2005-02-21 14:18:57

補足

すみません。補足というか、お礼の補足です。
できました!ありがとうございました。

投稿日時 - 2005-02-22 13:34:44

お礼

丁寧なご回答、ありがとうございます。
言いたかったことはそれです。こちらこそ説明不足で申し訳ありません。

*.php?text=キーワード(エンコード後)&sort=$sort
だけをやってもできなかったのですが、
<?php if ($sort=="auth"){print " selected";} ?>
も使ってやってみます。
本当にありがとうございました。

投稿日時 - 2005-02-22 09:50:35

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問