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

解決済みの質問

PHPにフォームについて質問です。

つい最近ここで教えていただいたフォームのプログラムなのですが、どのように組み合わせるのかわからない状態でうまく反映できません。自分で出来ると思ったのですが出来ませんでした。
前回途中で質問終わらせてしまったことは後悔していますが今回もどうかご教授いただきたいです。
下記のように入力しましたが検索したあとに名前はフォームに表示されている状態なのですが、チェックボックスのチェックは検索した後に消えてしまいます。
チェックを検索したあとにも残るようにするにはどのように入力すれば良いでしょうか?
どうかよろしくお願い致します。


<?php

$value=array();
//想定するデータを初期化しておく
$value['name']="";
if(isset($_REQUEST['name'])){
$value['name']=htmlspecialchars($_REQUEST['name'],ENT_QUOTES,'UTF-8');
}
$checked=array();
//想定するデータを初期化しておく
$checked['team_id']=array(1=>"",2=>"",3=>"",4=>"",5=>"");
if(isset($_REQUEST['team_id']) and is_array($_REQUEST['team_id'])){
foreach($_REQUEST['team_id'] as $val){
$checked['team_id'][$val]=" checked";
}
}
?>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>リーグデータ</title>
<link rel="stylesheet" type="text/css" href="../common/style.css"/>
</head>
<body id="list">
<div id="main">
<form name="search_form" action="xxxxxxxx.php" method="post">
<input type="hidden" name="cmd" value="search" />

<table>
<tr>
<th class="th_top">選手名</th>
<td class="td_top">
<input type="text" name="name" size="30" value="<?php echo "{$value['name']}" ?>">
</td>
</tr>
<tr>
<th>チーム名</th>
<td>

<input type="checkbox" name="team_id[]" value="1"{$checked['team_id'][1]}/>名古屋
<input type="checkbox" name="team_id[]" value="2"{$checked['team_id'][2]}/>徳島
<input type="checkbox" name="team_id[]" value="3"{$checked['team_id'][3]}/>千葉
<input type="checkbox" name="team_id[]" value="4"{$checked['team_id'][4]}/>浦和
<input type="checkbox" name="team_id[]" value="5"{$checked['team_id'][5]}/>磐田

<br />
</td>
</tr>
<tr>
<th class="th_middle">
ポジション
</th>

投稿日時 - 2014-11-14 00:40:17

QNo.8824307

困ってます

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

>と言うことは下記のような感じになるのでしょうか?
>これでもチェックされないです。
><input type="checkbox" name="team_id[]" value="<?php echo "{$checked['team_id'][1]}" ?>"/>名古屋

htmlでチェックをさせておきたいときはどのように表示したいかを考えてみて。
<input type="checkbox" name="xxx" value="1" checked>でしょ?

それをphpから出力しようとしたら

><input type="checkbox" name="team_id[]" value="5"<?php echo $checked['team_id'][5] ?>/>磐田
になるんじゃないの?
$checkedの配列には" checked"が入ってるんだから。

投稿日時 - 2014-11-14 12:58:47

補足

大変早い返信いただき本当にありがとうございます!
プログラミングに対する考え方がまだまだ甘いと痛感させられました。
今はプログラム入力出来ない環境なので後で出来上がりましたら御礼の返信させていただきます。
ありがとうございました!

投稿日時 - 2014-11-14 19:56:45

お礼

只今プログラム入力してから検索後にチェックが付く動作確認が出来ました!
Taiyonoshizuku様には大変わかりやすく説明していただいて助かりました。
本当にありがとうございます!
自分で考えなければ見につかないのでそこにプログラムの難しさを感じます。
今回は大変勉強させていただき誠にありがとうございました!

投稿日時 - 2014-11-15 06:26:31

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

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

回答(2)

今後自分で作っていくならやっていることをきちんと理解しながら進めるといいよ。

<input type="text" name="name" size="30" value="<?php echo "{$value['name']}" ?>">
で名前は表示されているわけでしょ?

<input type="checkbox" name="team_id[]" value="1"{$checked['team_id'][1]}/>名古屋
でもチェックが残らない。

何が差かわからない?

これに気が付いたら直ったようなもの。
*他の部分は検証していないからこれでも出なかったら他も見てみて。

投稿日時 - 2014-11-14 07:13:06

補足

返答いただきありがとうございます!

恥ずかしながら名前のテキストボックスの部分すらあっているかどうか私にはわからなかったので質問させていただきました。

>><input type="text" name="name" size="30" value="<?php echo >>"{$value['name']}" ?>">
>>で名前は表示されているわけでしょ?

と言うことは下記のような感じになるのでしょうか?
これでもチェックされないです。
<input type="checkbox" name="team_id[]" value="<?php echo "{$checked['team_id'][1]}" ?>"/>名古屋

意味はなんとなく理解できそうなのですがなかなか正解できません><。

投稿日時 - 2014-11-14 12:45:14

あなたにオススメの質問