• 締切済み

セレクトボックスの初期選択をクッキーで固定したい。

お世話になります。 php とmysql 初心者です。 php でmysqlから以下のようなセレクトボックスを作りました。 このセレクトボックスの初期値を(selected)を 見る人によって$cookie値によって固定したいのですが いろいろググったりしたのですが、 見当もつかず理屈から全くわかりません。 phpだけでできるのでしょうか? javascript等必要でしたら できれば具体的に教えて頂ければ大変助かります。 どうかご教授の程よろしくお願い致します。 <? $sql = "SELECT * FROM table ORDER BY index ASC"; $res = mysql_query( $sql ); $options=""; while($row = mysql_fetch_array($res,MYSQL_ASSOC)){ if($cookie==$row['index']){ $options.="<option value='{$row['index']}'selected>{$row['name']}</option>\n";} else { $options.="<option value='{$row['index']}'>{$row['name']}</option>\n";} } $select="<select name='name'><option value=''>選択</option>\n{$options}</select>\n"; print $select; ?>

みんなの回答

noname#244856
noname#244856
回答No.2

>> 本当に初心者な者でどのへんが非推奨なのかわかりません。 名前が「mysql_」で始まる関数は全てPHP言語の開発者グループが公式に非推奨としています。 Qiita - PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 のみだと少し分かりにくいかもしれないので、 PHPBook - PDOの利用 (charset指定を怠っているなどダメなところもあるが分かりやすい) http://www.phpbook.jp/tutorial/pdo/ PHP Manual - PHP Data Objects (公式マニュアルなので情報が豊富) http://php.net/manual/ja/book.pdo.php も併せてお読みください。 >> 具体的に教えて頂ければ助かるのですが。。 サンプル書いてみました。動作確認済みです。 http://pastebin.com/pgdWS3EZ 関連リンク Qiita - $_GET, $_POSTなどを受け取る際の処理 http://qiita.com/mpyw/items/2f9955db1c02eeef43ea 注意点 クッキーが実際にセットされるタイミングは、setcookie関数を実行し、その結果を相手のブラウザ側が受け取った後のリクエストからです。つまり、setcookie関数を実行した直後の同一リクエスト中ではまだ$_COOKIEにはセットされていないので注意してください。 // この行をユーザーAは初めて実行した setcookie('test', 'hogehoge', strtotime('+1 week')); // 上の行を実行した直後ではまだ$_COOKIEはからっぽ var_dump($_COOKIE);

evolver
質問者

補足

色々教えて頂いて本当にありがとうございます。 お礼が遅くなりまして申し訳ありません。 これから実際にやってみようと思っていますので、 動作して完成しましたら再度お礼をさせて頂きます。 本当にありがとうございました

noname#244856
noname#244856
回答No.1

まず、非推奨のMysql関数を使うのはやめましょう。 PHPでデータベースに接続するときのまとめ http://qiita.com/mpyw/items/b00b72c5c95aac573b71 クッキーの値によってselectedをつける場所を変えるだけですが…帰宅してまだ他に回答が無ければつけておきますね

evolver
質問者

補足

アドバイスありがとうございます。 この式は本で見た式を参考に書いています。 古い本だったので非推奨になってしまっているのだと思います。本当に初心者な者でどのへんが非推奨なのかわかりません。 具体的に教えて頂ければ助かるのですが。。 また是非よろしくお願い致します。

関連するQ&A