[PHP-users 17822]DB取得配列をカスタマイズしたい。
aiko
vvv_aiko_vvv @ hotmail.com
2003年 9月 11日 (木) 11:50:25 JST
いつもお世話になっております。きしかわです。
配列に関して質問です。
DBから取得したデータが以下の配列に入っているとします。
$aDbData[0]["A_id"]="A001";
$aDbData[0]["B_id"]="B001";
$aDbData[1]["A_id"]="A001";
$aDbData[1]["B_id"]="B002";
$aDbData[2]["A_id"]="A002";
$aDbData[2]["B_id"]="B003";
$aDbData[3]["A_id"]="A002";
$aDbData[3]["B_id"]="B004";
$aDbData[4]["A_id"]="A003";
$aDbData[4]["B_id"]="B005";
$aDbData[4]["A_id"]="A003";
$aDbData[4]["B_id"]="B006";
これをJavaScriptにて
2つのセレクトボックスで表示させたいと思っております。
※ DBからは、AテーブルとBテーブルを結合させて、ORDER BY A_id , B_id にて取得
そのために、JavaScriptにて
var aAData=new Array();
aAData[0]=new Array("B001" , "B002" );// A001配列
aAData[1]=new Array("B003" , "B004" );// A002配列
aAData[2]=new Array("B005" , "B006" );// A003配列
の様な配列を作成する必要があります。
PHPにて、
$aData[0]["A_id"]="A001";
$aData[1]["A_id"]="A002";
$aData[2]["A_id"]="A003";
$aData[0]["B_id"][0]="B001";
$aData[0]["B_id"][1]="B002";
$aData[1]["B_id"][0]="B003";
$aData[1]["B_id"][1]="B004";
$aData[2]["B_id"][0]="B005";
$aData[2]["B_id"][1]="B006";
の様に、AとBを関連づけた配列を作成後、JavaScript配列を記入したいのですが、
サンプルスクリプトを書いてみたものの、上手く配列に値が入っていません。
もう少し上手いやり方がある様な気もするのですが(クラスを使用する?等??)
少し頭が混乱しており、困っております。
どなたかご助言ください。
よろしくお願いします。
<?php
//
// test.php
//
$aDbData[0]["A_id"]="A001";
$aDbData[0]["B_id"]="B001";
$aDbData[1]["A_id"]="A001";
$aDbData[1]["B_id"]="B002";
$aDbData[2]["A_id"]="A002";
$aDbData[2]["B_id"]="B003";
$aDbData[3]["A_id"]="A002";
$aDbData[3]["B_id"]="B004";
$aDbData[4]["A_id"]="A003";
$aDbData[4]["B_id"]="B005";
$aDbData[4]["A_id"]="A003";
$aDbData[4]["B_id"]="B006";
$nCnt=0;
$init_AId=NULL;
//たぶんこのループですでに上手くいっていない気が…
foreach( $aDbData as $nI => $aVal ) {
$bInc=FALSE;
if( $init_AId != $aVal["A_id"] ) {
$aData[$nCnt]["A_id"]=$aVal["A_id"];
$init_AId=$aVal["A_id"];
$bInc=TRUE;
$nJ=0;
}
$aData[$nCnt]["B_id"][$nJ] = $aVal["B_id"];
$nJ++;
if($bInc) $nCnt++ ;
}
$sJSTag="";
$sJSTag.="var aAData = new Array();" ;
for( $nI=0 ; $nI<count($aData) ; $nI++ ) {
$sJSTag .= "aProjs[" . $nI . "]=new Array(" . "\n" ;
for( $nJ=0 ; $nJ < count($aData[$nI]["B_id"]) ; $nJ++ ) {
$sBId=$aData[$nI]["B_id"][$nJ];
if($nJ > 0 ) $sJsTag .= " ," ;
$sJsTag .= " new Proj( \"" . $sBId . " \" )\n" ;
}
$sJSTag .= ");\n";
}
echo $sJsTag ;
?>
きしかわあいこ。
_________________________________________________________________
きっと見つかるあなたの新居 不動産情報は MSN 住宅で
http://house.msn.co.jp/
PHP-users メーリングリストの案内