よろしくお願いいたします。
ある条件にあったデータを画面に表示させ、各レコードに
チェックボックスを設けました。このチェックを付けたもの
のみテーブルに更新かけたいと思っています。
--------------------------------
1 りんご 5 □
2 なし 2 □
3 いちご 3 □
--------------------------------
ソースでは(接続などは割愛いたします)
print "<input type='hidden' name='id[]' value='$id'>$id</td>";
のようにname='id[]'とし、受け側は
$id=$_POST["id"][$i];のようにしました。実際行うと例えば3つ条件にあったデータがあったとし、3番目(例ではいちご)にチェックした
とすると、自分の予定では3番目のデータが更新されるはずなのですが、1番目のデータがなぜが保存対象となってしまいます。ためしに
for($i=0; $i<count($_POST["code"]); $i++){
$id=$_POST["id"][$i];
print "$id $code $chk $staff\n<br>";
で経過を見るとやはり1番目が対象となってました。
この方法ですとチェックを一個つけたから、最初のデータから対象とかになってしまうのでしょうか?
うまくチェックをつけたものを保存するには、どこを気をつければ
よろしいでしょうか??
No.3ベストアンサー
- 回答日時:
ANo.2です。
チェックされているhiddenのデータを取得して、
処理をしたいということでしょうか。
(チェックされているhiddenデータのみが必要と解釈しました)
<td><input type='hidden' name='id[1]'><input type='chekubox' name='chk[1]'></td></tr></table>
例えば、次のようにhiddenとcheckboxで同じ添え字を振っておき、
受取り側ではcheckboxにチェックが入っていれば(前回答参照)
hiddenの値をcheckboxの添え字から取得するという処理を
してみてはどうでしょうか。
簡単に書くと次のような処理です。
---------------------------------------------
foreach($_POST['chk'] as $key => $value) {
print $_POST['chk'][$key]."<br>";
}
---------------------------------------------
papillon68様、またもや回答ありがとうございます。
なんとか解決出来ました。上記の内容を利用し
うまく処理できました。感謝です。
受け取ったあとの処理もうまくいって、かなり
うれしい状態です。
今後もよろしくお願い致します。
No.2
- 回答日時:
hajimete-sanさん、こんにちは。
過去ログの私の回答が参考になるかもしれません。
http://okwave.jp/qa2691790.html
「hidden」ではなく、「checkbox」でしょうか?^^;
print "<input type='checkbox' name='id['.$id.']'...>";
$idには1,2,3,4,・・・と値が入るのだと解釈しました。
これはPOSTされたデータに添え字をあらかじめ与えてあげています。
もし、
1 りんご 5 □
2 なし 2 レ
3 いちご 3 □
という場合でも、「なし」のデータを添え字2で受け取ることができます。
※添え字0とはなりません。
以下サンプルです。
------------------------------------------------------------
<?php
if(isset($_POST['id'])) {
if(is_array($_POST['id'])) {
foreach($_POST['id'] as $key => $value) {
print "添え字:{$key}、内容:{$value}<br>";
}
} else {
print $_POST['id']."<br>";
}
}
print '<form method="post">';
for($i = 1; $i <= 5; $i++) {
print '<input type="checkbox" name="id['.$i.']" value="'.$i.'">';
}
print '<br><input type="submit">';
print '</form>';
?>
-------------------------------------------------------------
papillon68様、回答ありがとうございます。
>>「hidden」ではなく、「checkbox」でしょうか?^^;
>>print "<input type='checkbox' name='id['.$id.']'...>";
>>$idには1,2,3,4,・・・と値が入るのだと解釈しました。
ここのついてですが、私の書込みが足りませんでしたm(__)m
print "<input type='hidden' name='id[]' value='$id'>$id</td>";
↑はテーブル表示をしていて
<table>
<tr>
<td><input type='hidden' name='id[]'><input type='chekubox' name='chk'></td></tr></table>
というふうにしております。テーブルにしてるのは見た目だけなんですがね。
という状況でチェックボックスの配列を考えておりました。
papillon68様のサンプルを利用し、添え字でその場所の数値(添え字だと
思いますが)を受けられるようになりました。
今チャレンジしているのが、hiddenのデータをどうもってくるかです。
サンプルをうまく活用し、今晩も戦ってみます、ありがとうございます。
またよろしくお願い致しますm(__)m
No.1
- 回答日時:
これはチェックした配列が順番に入るためです。
(例えば三番目のデータをチェックしても配列に入るのは$_POST["id"][0]からになります。)
このよう使うのでしたら name="id[]" とせずに、name="id1"
等として、
if ($_POST['id1']) {
#check
}
としたほうがいいでしょう。
配列にどうしても入れなくてはいけないのでしたら、
foreach ($_POST['id'] as $ver) {
if ($ver == $value) {
}
}
というような使い方をしなければいけません。
要するに、
$_POST["id"] = array();
$_POST['id'][] = $value;
という動作と同じです。
moon_night様、回答ありがとうございます。
早速試してみました。
条件にヒットしたデータが何件あるかわからないので
配列で試そうと思っています。
foreach文を利用してみますと、
Warning: Invalid argument supplied for foreach() in ~の
メッセージが出ました。そこで色々調べ、if(is_array($_POST["chk"]))
をforeachの前につけてみました。メッセージは出なくなりましたが、
表示も何も出なくなりました(TT)
現在も格闘しております。
もっと色々調べてみます。
しかしながらmoon_night様のご指摘で、なぜチェックボックスが
おかしかったのかは、理解出来ました。ありがとうございます。
また何かありましたらよろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/12】 急に朝起こしてきた母親に言われた一言とは?
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・好きな「お肉」は?
- ・あなたは何にトキメキますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【HTML(PHP?)】複数のフォーム...
-
入力フォーム→確認画面→送信画...
-
ラジオボタンをsessionで使いたい
-
検索時の選択内容を保持する方法
-
smartyでチェックボックスをチ...
-
テキストボックスに初期値を入れる
-
Javascript→PHPに...
-
phpの掲示板で新しい順に表...
-
<input type="hidden" >で配列...
-
POSTデータのNAME属性をVALUEに...
-
フォームボタンを押すたびに数...
-
DBの値をチェックボックスに反...
-
チェックボックスのvalueを連結...
-
syntax error, unexpected '}' ...
-
検索後にチェックボックスのON/...
-
【PHPチェック】ラジオボタンが...
-
PHPの関数実行
-
ラジオボタンのチェックを判定...
-
画面が更新されてもチェックボ...
-
テキストボックスとsubmitボタ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
HTMLで前の画面に戻る時、入力...
-
<input type="hidden" >で配列...
-
検索時の選択内容を保持する方法
-
PHP ボタンが押されたら処理を...
-
HTMLのリンクをクリックするこ...
-
フォームへの前回入力値をクリ...
-
PHPで画像の渡しが上手く行きま...
-
UPDATEの記述について
-
POSTデータのNAME属性をVALUEに...
-
ラジオボタンをsessionで使いたい
-
テキストボックスに初期値を入れる
-
画面が更新されてもチェックボ...
-
DBの値をチェックボックスに反...
-
PHPでクリックするたびに変数を...
-
同じページでフォームデータを...
-
smartyでチェックボックスをチ...
-
チェックボックスによる検索(...
-
入力フォーム→確認画面→送信画...
-
パラメーターを隠す
-
【PHPチェック】ラジオボタンが...
おすすめ情報