質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

2798閲覧

PHPでチェックボックスを配列をしようしてチェックをつける

pirlo21

総合スコア31

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2015/08/10 14:55

PHPでチェックボックスでチェックがついていたら

チェックをするような動作をしています。

ですが「CheckboxColor」の関数を使用すると

なぜかチェックが付きません。

原因を調べても分からないのでどなたか教えて下さい。

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

こっちのべた書きは動作します。

echo '<font class="chk_color">RED</font>'; echo '<input type="checkbox" name="F_adData[color][]" value="1" '.Checkboxchecker($p1,'1').'> '; echo '<font class="chk_color">Blue</font>'; echo '<input type="checkbox" name="F_adData[color][]" value="2" '.Checkboxchecker($p1,'2').'> '; echo '<font class="chk_color">Yellow</font>'; echo '<input type="checkbox" name="F_adData[color][]" value="3" '.Checkboxchecker($p1,'3').'> '; echo '<font class="chk_color">Green</font>'; echo '<input type="checkbox" name="F_adData[color][]" value="4" '.Checkboxchecker($p1,'4').'> '; echo '<font class="chk_color">Black</font>'; echo '<input type="checkbox" name="F_adData[color][]" value="5" '.Checkboxchecker($p1,'5').'> ';

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
こっちは動作しません。

function CheckboxColor($p1){
global $FavoriteColor_Arr;

foreach($FavoriteColor_Arr as $key=>$value){ echo '<font class="chk_color">'.$value.'</font>'; echo '<input type="checkbox" name="F_adData[color][]" value="'.$key.'" '.Checkboxchecker($p1,$key).'> '; }

}

---- 関数 ----

$FavoriteColor_Arr = array(
1=>'Red',
2=>'Blue',
3=>'Yellow',
4=>'Green',
5=>'Black'
);

function Checkboxchecker($color,$p2){
if( strpos($color, $p2) !==false) {
return "checked";
}else{
return "";
}
}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

質問の回答ではありませんが、関数の引数の変数の名前がわかりにくいと感じました。

引数に何を使うのかがわかりにくいのでrikさんの回答でもcheckboxColorの引数に「'Blue'」が使われている方と「2」が使われている方が示されていると思います。

数字なら$color_index、文字なら$color_nameにするとか、もう少しわかりやすい名前にした方がコードがわかりやすくなっていいと思います。

投稿2015/08/11 10:05

編集2015/08/11 10:09
tempakyousuke

総合スコア155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

$keyと$valueの扱いが混同されています。
2例を記載しました。

php

1$FavoriteColor_Arr = array( 2 1=>'Red' 3 ,2=>'Blue' 4 ,3=>'Yellow' 5 ,4=>'Green' 6 ,5=>'Black' 7); 8 9function checkboxColor($p1) { 10 global $FavoriteColor_Arr; 11 foreach ($FavoriteColor_Arr as $key => $value) { 12 print '<font class="chk_color">' . $value . '</font>'; 13 print '<input type="checkbox" name="F_adData[color][]" value="' . $key . '" ' . checkboxchecker($p1, $key) . '> '; 14 } 15} 16 17function checkboxchecker($color, $p2) { 18 return ($color == $p2) ? 'checked' : ''; 19} 20 21checkboxColor(2);

php

1$FavoriteColor_Arr = array( 2 1=>'Red' 3 ,2=>'Blue' 4 ,3=>'Yellow' 5 ,4=>'Green' 6 ,5=>'Black' 7); 8 9function checkboxColor($p1) { 10 global $FavoriteColor_Arr; 11 foreach ($FavoriteColor_Arr as $key => $value) { 12 print '<font class="chk_color">' . $value . '</font>'; 13 print '<input type="checkbox" name="F_adData[color][]" value="' . $key . '" ' . checkboxchecker($p1, $value) . '> '; 14 } 15} 16 17function checkboxchecker($color, $value) { 18 return (strcmp($color, $value) == 0) ? 'checked' : ''; 19} 20 21checkboxColor('Blue');

投稿2015/08/10 15:54

編集2015/08/10 15:57
rik

総合スコア1151

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pirlo21

2015/08/11 14:45

返信が遅れてすみません。 「$color」の変数の中身は「1 2 3」のように数字とスペースが入ります。 なので checkboxColorの関数では $FavoriteColor_Arrの$keyで判断をするようにしています。ちょっとどつぼにはまってどのへんが$keyと$valueのを混同しているか。。。といった感じです。もう少し粘ってみます。
rik

2015/08/11 15:00

そういう事であれば、 function Checkboxchecker($color,$p2){ の直後に $p2 = strval($p2); を入れてみてください。 文字列と数値の比較で意図しない動作になっています。
pirlo21

2015/08/12 05:37

すみません。 無事解決しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問