前提・実現したいこと
こんにちは、
初心者で色々なサイトを参考に作成しているのですが、どれもうまくいかず、助けて下さい。
phpとjavaをを用いて
csvを読み込みし、csvから連動したプルダウンを作りたいです。
例えば、csv からプルダウンにて
都道府県を選択し
その都道府県の中から市町村を選択すると
何曜日が来場可能かが選択できるようにしたいのです。
該当のソースコード
test.csv 1,東京都,江戸川区,月曜日 1,東京都,江戸川区,火曜日 1,東京都,練馬区,水曜日 1,東京都,練馬区,木曜日 2,埼玉県,川口市,金曜日 2,埼玉県,川口市,土曜日 <? function fmake_sel_opts($filename, $selected=0, $funcChk="",$name="") { //初期化 $idx=0; $htm=""; $listData=Array(); //ファイルの存在確認 if (!@file_exists($filename)) return false; //ファイルからリストデータを配列に読み込む $fp=@fopen($filename, "r"); while (!@feof($fp)) { $dat=@fgetcsv($fp, filesize($filename), ","); if(!$dat[0]) continue; $listData[$dat[1]][]=$dat[bin2hex()]; } while (!@feof($fp)) { $dat=@fgetcsv($fp, filesize($filename), ","); if(!$dat[0]) continue; $listData[$dat[0]][]=$dat[bin2hex()]; } @fclose($fp); if (!@is_array($listData)) return false; $htm="<select ".$funcChk." ".$name.">\n"; foreach ($listData as $k1=>$v1) { if (@is_array($v1) && $v1[0]!="") { /* グループ化 */ $htm.="<optgroup label='".$k1."'>\n"; $htm.='<option value="">都道府県で絞り込みます</option>'; foreach($v1 as $v2){ $htm.="<option value='".$k1."'".(($idx==$selected) ? " selected" : "")." style='margin-left:1em;'>".$v2."</option>\n"; $idx++; } $htm.="</optgroup>\n"; }else{ $htm.="<option value='".$k1."'".(($idx==$selected) ? " selected" : "").">".$k1."</option>\n"; $idx++; } } $htm.="</select>\n"; return $htm; } ?> <? $filename="test.csv"; $selected="0"; $funcChk='onChange=\'createChildOptions(this.form)\''; $name='name=\'parentS\''; echo fmake_sel_opts($filename, $selected, $funcChk,$name) ?> <script> var idName="childS"; /* 親ジャンルが変更されたら、子ジャンルを生成 */ function createChildOptions(frmObj) { /* 親ジャンルを変数pObjに格納 */ var pObj=frmObj.elements["parentS"].options; /* 親ジャンルのoption数 */ var pObjLen=pObj.length; var htm="<select name='childS'>"; for(i=0; i<pObjLen; i++ ) { /* 親ジャンルの選択値を取得 */ if(pObj[i].selected>0){ var itemLen=<?$dat[2]?>.length; for(j=0; j<itemLen; j++){ htm+="<option value='"+j+"'>"+<?$dat[2]?>+"</option>"; } } } htm+="</select>"; /* HTML出力 */ document.getElementById(idName).innerHTML=htm; } </script> <div id="childS"></div>
試したこと
javaは動いてくれませんでした。
都道府県まではプルダウンできますが、そこから市町村をプルダウンが出てこなかかったです。
phpだけでやろうと
$fp=@fopen($filename, "r");
while (!@feof($fp)) {
$dat=fgetcsv($fp, filesize($filename), ",");
if(!$dat[1]) continue;
if(count($dat)==1){
$listData[]=$dat[2];
}elseif(count($dat)==2){
$listData[$dat[1]]=$dat[2];
}else{
$listData[$dat[0]][$dat[1]]= [$dat[2]];
}
}
@fclose($fp);
試してみたのですが、市町村は選ばれなかったです。
ここにより詳細な情報を記載してください。
あなたの回答
tips
プレビュー