連想配列の処理
こんにちは。
MySQL 4.1.22 と PHP 4.4.7 でプログラムを組んでいて、こちらではいつも皆様の知識と経験を参考にさせていただいております。
今回、どうしても超えられない壁に当たってしまいコーディングが止まってしまったので力をお貸し下さい。
今取り組んでいるプログラムは、複数の<checkbox>から選択した値を受け取って、マスターテーブルに検索を掛けて、返った値を表示した後、確認ボタンで別のユーザーテーブルに値を格納するというものです。
*** プログラムの流れ ****
input.php(入力ページ:checkbox )
↓
view.php (確認ページ:CC_master.tbl)
↓
regist.php (登録ページ:user_master.tbl)
input.php から値を取得して、 CC_master.tbl に検索・値の取得までは出来たのですが、取得した値を別の形に整形するところでつまづいてしまいました。
//--- input.php ---
//--- 実際には 99個の checkbox がある訳ではありません。^^;
<form name="form" method="POST" action="view.php">
<input type="checkbox" name="cc[]" value="1">50cc
<input type="checkbox" name="cc[]" value="2">80cc
<input type="checkbox" name="cc[]" value="3">125cc
<input type="checkbox" name="cc[]" value="4">200cc
<input type="checkbox" name="cc[]" value="5">250cc
<input type="checkbox" name="cc[]" value="6">400cc
・
・(中略)
・
<input type="checkbox" name="cc[]" value="99">その他
<input type="submit" name="exec" value="排気量の確認">
</form>
//--- END Code ---
//--- view.php ---
//--- チェックされた排気量コードを CC_master.tbl に対して検索をかける
//---例:1番、2番、6番にチェックを入れたとして...
//---具体的な排気量を「 50cc 80cc 400cc 」の様に一列、スペース区切りで変数($cc_name)に格納、表示
$arr_cc = $_POST["cc"];
if(isset($arr_cc) and count($arr_cc) > 0){
$val = "";
for($i=0; $i<count($arr_cc); $i++ ){
if($i == 0){
$val .= $arr_cc[$i];
}else{
$val .= "," . $arr_cc[$i];
}
}
}
$res = mysql_query("select * from CC_master where id in ('$val')");
while($row = mysql_fetch_array($res)){
#
#ここで配列からフィールド:cc の値のみを取り出して、変数 $cc_name に格納。
#
}
ecoh $cc_name;
//--- END Code ---
//--- regist.php ---
//--- $cc_name の値をINSERT文で user_master.tbl に登録。
現在、上記のように考えていますが、どうしても変数 $cc_name に意図した形で値を格納できません。
$val に値を入れる要領で処理すればOKだと思うのですが、while( )、for( )、foreach( ) のどれを使っても上手くいきません。連想配列となる $row["cc"] の扱い方(整形方法)がどうしても解らないで助けて下さい。
宜しくお願いします。
//--- CC_master.tbl ---
CREATE TABLE `CC_master` (
`id` int(2) NOT NULL default '0',
`cc` varchar(10) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=ujis;
INSERT INTO `CC_master` (`id`, `cc`) VALUES
(1, '50cc'),
(2, '80cc'),
(3, '125cc'),
(4, '200cc'),
(5, '250cc'),
(6, '400cc'),
・
・(中略)
・
(99, 'その他');