質問失礼致します。
PHPで
・テキスト
・ラジオボタン
・チェックボックス
が複数入り混じった検索システムを作っています。
なんとか形になって検索の形はできたのですが、
必要な項目を検索し結果画面に映った際に
入力したテキスト・ラジオ・チェックボックスの内容が初期化されてしまいます。
検索した結果、テキストの方はインプット時に
<input type="text" name="name" size="50" value="<?= $_POST['name'] ?>" >
とすることで、結果画面にある検索システムの入力内容は保持できたのですが、
・ラジオ および ・チェックボックス の内容の保持を
なんとかまとめて設定することはできないでしょうか?
検索はしましたが、初心者なこともあり検索ワードがいまいち的を得てないのか、
考えている答えになかなかたどり着けておりませんので、
この場を借りて質問の方させていただいた次第でございます。
ご存じの方いらっしゃいましたら、是非ともご教授お願い致します。
No.2ベストアンサー
- 回答日時:
HTMLとプログラム部分の切り分けをするためにはなるべく単純な構造がよいでしょう
私の場合こんな処理をしています。
(実際の運用の際にはデータチェックをしたりするのでもう少し複雑になりますが)
<?
//checkbox
if($_REQUEST["test_a"]=="1") $checked["test_a"]=" checked";
if($_REQUEST["test_b"]=="1") $checked["test_b"]=" checked";
//radio
if(isset($_REQUEST["test_c"])) $checked["test_c"][$_REQUEST["test_c"]]=" checked";
//select
if(isset($_REQUEST["test_d"])) $selected["test_d"][$_REQUEST["test_d"]]=" selected";
print <<<eof
<form>
<input type="checkbox" name="test_a" value="1"{$checked["test_a"]}>A
<input type="checkbox" name="test_b" value="1"{$checked["test_b"]}>B
<input type="radio" name="test_c" value="1"{$checked["test_c"][1]}>C-1
<input type="radio" name="test_c" value="2"{$checked["test_c"][2]}>C-2
<input type="radio" name="test_c" value="3"{$checked["test_c"][3]}>C-3
<select name="test_d">
<option value="">---</option>
<option value="1"{$selected["test_d"][1]}>D-1</option>
<option value="2"{$selected["test_d"][2]}>D-2</option>
<option value="3"{$selected["test_d"][3]}>D-3</option>
</select>
<input type="submit" value="go">
</form>
eof;
?>
ス、スマートっ!!!!
しかも、的確すぎて、超初心者の私でもめちゃ応用(増やすだけですが)利用させていだだけました!!
デザインがなかなかまとまらず、良く気分でデザイン変更するので、
修正が簡単なこちらをメインで使用させていただきましたので、
ベストアンサーとさせていただきました♪♪
No.1
- 回答日時:
渡しの場合は、そもそものinputタグ自体を出力するような関数を作って、ソレを表示するようにする、という方法を取ります。
checkboxやradioの場合は、$_POSTに渡された値が含まれていたら、checked="checked"という属性をinputタグにくっつける、という方法になりますので、結局HTMLのテンプレートの中身はぐちゃぐちゃになりがちなので。
<?php
function input($type, $name, $value, $attributes=array()){
$tag = '<input type="%s" name="%s" value="%s"%s />';
//必ずエスケープする
$value = htmlspecialchars($value, ENT_QUOTES);
//属性値の構成
$str_attr = "";
foreach($attributes as $attr=>$val) $str_attr .= ' '.$attr.'="'.$val.'"';
//タグを構成して返す
return sprintf($tag, $type, $name, $value, $str_attr);
}
function input_text($name, $default_value, $attributes=array()){
if(isset($_POST[$name])){
$value = $_POST[$name];
}else{
$value = $default_value;
}
return input('text', $name, $value, $attributes);
}
function input_radio($name, $default_value, $attributes=array()){
if(isset($_POST[$name])){
if($_POST[$name] == $default_value){
$attributes['checked'] = 'checked';
}else{
if(isset($attributes['checked'])){
unset($attributes['checked']);
}
}
}
return input('radio', $name, $default_value, $attributes);
}
function input_checkbox($name, $default_value, $attributes=array()){
if(isset($_POST[$name])){
if($_POST[$name] == $default_value){
$attributes['checked'] = 'checked';
}else{
if(isset($attributes['checked'])){
unset($attributes['checked']);
}
}
}
return input('checkbox', $name, $default_value, $attributes);
}
?><form action="" method="POST">
お名前:<?php echo input_text('name', '', array('size'=>30, 'maxlength'=>30))?><br />
<br />
職業:<br />
<?php echo input_radio('jb', '会社員')?>会社員<br />
<?php echo input_radio('jb', '学生')?>学生<br />
<br />
選択:<br />
<?php echo input_checkbox('hb1', '選択1')?>選択1<br />
<?php echo input_checkbox('hb2', '選択2')?>選択2<br />
<?php echo input_checkbox('hb3', '選択3')?>選択3<br />
<br />
<input type="submit" value="テスト" />
</form>
こんな感じにします。
checkboxのあたりは、作ったプログラムの構成によっては、色々修正する必要がありますが、そこら辺は上手く味付けしてください。
お早い回答、本当にありがとうございました!!
しかも、こんなに丁寧に書いていただいて…
ご参考&勉強のやりがいが出てきます!!
作業が遅く完成はまだまだで、上手くはないですが、味付けさせて利用させていただきました!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Access(アクセス) Access 複数条件検索の設定が上手く行きません 1 2022/07/22 20:37
- JavaScript javaScriptで画面に値を入れるには 1 2022/08/14 12:27
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- Access(アクセス) Accessで予定表を作成しようとしてます。 テーブル フィールド名 連番 オートナンバー型 年月日 2 2023/07/23 11:40
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- au(KDDI) Android Gmail で検索して消す方法 1 2022/11/10 16:10
- 迷惑メール・スパム gmailの過去のメールを一括削除する方法について 3 2023/04/19 05:27
- iPhone(アイフォーン) Google map のルート保存について 1 2022/05/13 11:50
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
javaScriptで検索結果の保持
その他(コンピューター・テクノロジー)
-
phpで複数の検索語を検索対象にしたい
PHP
-
選択したタグ、入力した検索文字の値を保持するには?
PHP
-
-
4
form actionで二つ送信先を指定する方法を教えて下さい。
PHP
-
5
PHPで、ボタンを押すと同じページに表示するには?
PHP
-
6
PHPで絞り込み検索結果の件数を表示する
PHP
-
7
「ページネーション」で検索キーワードを2ページ目以降も引き継ぐ方法
PHP
-
8
検索後にチェックボックスのON/OFF状態を再現して表示したい
PHP
-
9
チェックボックスによる検索(複数チェックの場合)
PHP
-
10
チェックボックスによる検索
PHP
-
11
phpで複数のDBを使用した場合のコーディング
MySQL
-
12
PHPのif文でその処理を途中で抜けるにはどうすればよいでしょうか?
PHP
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPとHTML+Xamppの掲示板で画像...
-
<input type="hidden" >で配列...
-
フォームボタンを押すたびに数...
-
PHP ボタンが押されたら処理を...
-
入力した部分を表示させたまま...
-
POSTデータのNAME属性をVALUEに...
-
チェックボックスによる検索
-
チェックボックスによる検索(...
-
PHPでじゃんけん勝負
-
PHPでユーザー情報を入力して簡...
-
php mysql でチェックボックス...
-
配列をhiddenで
-
DBの値をチェックボックスに反...
-
phpで分からないエラーが出てし...
-
適性診断テストみたいなものを...
-
チェックボックスの必須項目指定
-
HTMLのリンクをクリックするこ...
-
PHPでCookieを使った訪問回数に...
-
INPUT(TEXT)フォームのリセット
-
IEで、フォームにたとえば
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
HTMLで前の画面に戻る時、入力...
-
DBの値をチェックボックスに反...
-
フォームへの前回入力値をクリ...
-
PHPでCookieを使った訪問回数に...
-
PHPで画像の渡しが上手く行きま...
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
syntax error, unexpected '}' ...
-
画面が更新されてもチェックボ...
-
チェックボックスのvalueを連結...
-
チェックボックスの必須項目指定
-
PHPでユーザー情報を入力して簡...
-
PHPの関数実行
-
POSTデータのNAME属性をVALUEに...
-
パラメーターを隠す
-
phpで分からないエラーが出てし...
-
PHPで、ボタンを押すと同じペー...
-
テキストボックスに初期値を入れる
おすすめ情報