[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 メーリングリストの案内