私は以下の多次元javascript配列を持っています。PHPで多次元配列をMysqlデータで構築する
var accounts =
[
{ name: '069070474', crd_no:
[
{name: '0215020174357351', ssn_no: ['582238797'] }
]},
{ name: '089255135', crd_no:
[
{name: '0215020178346863', ssn_no: ['583872782','874514213']}
]},
{ name: '123456789', crd_no:
[
{name: '8888888888888888', ssn_no: ['122121212']}
]},
{ name: '131274740', crd_no:
[
{name: '0215020178888432', ssn_no: ['478498545','584586942']}
]},
{ name: '454296191', crd_no:
[
{name: '0215020178896484', ssn_no: ['582214564']}
]},
{ name: '987654321', crd_no:
[
{name: '8888888888888888', ssn_no: ['122121212']}
]}
];
そして私はまた、次のスキーマを使用してMySQLテーブルの上のデータを持っている:
TABLE `profile_id`
(
`acct_no` varchar(19) NOT NULL COMMENT 'Customer account no',
`crd_no` varchar(19) NOT NULL COMMENT 'Customer card no',
`ssn_no` varchar(9) NOT NULL COMMENT 'Customer social security number',
PRIMARY KEY (`acct_no`,`crd_no`,`ssn_no`)
)
私はPHPがMySQLのテーブルからデータを取得使用していませんし、作成しようとしています多次元配列か、既存のjavascript配列と一致するjsonエンコード文字列のいずれかです。新しいレコードがテーブルに追加されると、配列が常に更新されるように、ループ内に配列を構築する必要があります。
正確なコードは必須ではありませんが(歓迎します)、私は単にこれにアプローチする方法の提案を探しています。私は配列を構築し、acct_noとcrd_noまたは3つのすべての固有の組み合わせでフィルタリングすることができますが、私はjavascriptでどのようにしているかのようにPHPで構築された配列をまだ取得していません。最終的な目標は、3つのドロップダウンボックスのセットにjs配列を供給することです。各ボックスの選択された値によって、次のボックスのデータ選択リストが決定されます。今私は、各ボックスから選択が行われたときにdbにクエリするためにajaxを使用してこれを設定できることを知っていますが、私は複数の機会にサーバーにヒットする必要はありません。これを達成するためのその他の推奨事項もプラスです。
以下は、データを操作するJavaScriptコードです。
$(document).ready(function()
{
document.soapFormSetup.reset();
$(function()
{
var start = '';
var options = '<option selected value="'+ start +'">-----------------------' + '</option>' ;
for (var i = 0; i < accounts.length; i++)
{
var opt = accounts[i].name ;
options += '<option value="' + opt + '">xxxxxxxxxxxxxx' + opt.substring(5) + '</option>';
}
$("#sms_acct_no").html(options);
start = '';
options = '<option selected value="'+ start +'">-----------------------' + '</option>' ;
for (var i=0; i < accounts[0].crd_no.length; i++)
{
var opt = accounts[0].crd_no[0].name ;
options += '<option value="' + opt + '">xxxxxxxxxxxxxx' + opt.substring(12) + '</option>';
}
$("#sms_crd_no").html(options);
start = '';
options = '<option selected value="'+ start +'">--------------' + '</option>' ;
for (var i=0; i < accounts[0].crd_no[0].ssn_no.length; i++)
{
var opt = accounts[0].crd_no[0].ssn_no[i] ;
options += '<option value="' + opt + '">xxx-xx-' + opt.substring(5) + '</option>';
}
$("#sms_ssn_no").html(options);
document.soapFormSetup.sms_ssn_no.disabled=true;
document.soapFormSetup.sms_crd_no.disabled=true;
$("#sms_acct_no").bind("change",
function()
{
if ($(this).children(":selected").val() !== "")
document.soapFormSetup.sms_crd_no.disabled=false;
else
{
document.soapFormSetup.sms_crd_no.value="";
document.soapFormSetup.sms_ssn_no.value="";
document.soapFormSetup.sms_crd_no.disabled=true;
document.soapFormSetup.sms_ssn_no.disabled=true;
}
for(var i=0; i<accounts.length; i++)
{
if (accounts[i].name == this.value)
{
start = '';
var crd_nos = '<option selected value="'+ start +'">-----------------------' + '</option>' ;
for (var j=0; j < accounts[i].crd_no.length; j++)
{
var opt= accounts[i].crd_no[j].name ;
crd_nos += '<option value="' + opt + '">xxxxxxxxxxxxxx' + opt.substring(12) + '</option>';
}
break;
}
}
$("#sms_crd_no").html(crd_nos);
for(var i=0; i<accounts.length; i++)
{
for(var j=0; j<accounts[i].crd_no.length; j++)
{
if(accounts[i].crd_no[j].name == $("#sms_crd_no").val())
{
start = '';
var crd_ssn_nos = '<option selected value="'+ start +'">--------------' + '</option>' ;
for (var k=0; k < accounts[i].crd_no[j].ssn_no.length; k++)
{
var opt = accounts[i].crd_no[j].ssn_no[k] ;
crd_ssn_nos += '<option value="' + opt + '">xxx-xx-' + opt.substring(5) + '</option>';
}
break;
}
}
}
$("#sms_ssn_no").html(crd_ssn_nos);
document.soapFormSetup.sms_ssn_no.disabled=true;
document.soapFormSetup.sms_ssn_no.value="";
});
$("#sms_crd_no").bind("change",
function()
{
if ($(this).children(":selected").val() !== "")
document.soapFormSetup.sms_ssn_no.disabled=false;
else
{
document.soapFormSetup.sms_ssn_no.value="";
document.soapFormSetup.sms_ssn_no.disabled=true;
}
for(var i=0; i<accounts.length; i++)
{
for(var j=0; j<accounts[i].crd_no.length; j++)
{
if(accounts[i].crd_no[j].name == this.value)
{
start = '';
var ssn_nos = '<option selected value="'+ start +'">--------------' + '</option>' ;
for (var k=0; k < accounts[i].crd_no[j].ssn_no.length; k++)
{
var opt = accounts[i].crd_no[j].ssn_no[k] ;
ssn_nos += '<option value="' + opt + '">xxx-xx-' + opt.substring(5) + '</option>';
}
break;
}
}
}
$("#sms_ssn_no").html(ssn_nos);
});
});
});
なぜオブジェクトを混合するのではなく、すべてのオブジェクトを使用するのですか? jsonの構文とIMOには、はるかに近く、視覚的に魅力的で読みやすいでしょう。 – elclanrs
各口座番号は1つ以上のcc番号を持ち、各cc番号は1つ以上のss番号を持っていますか?あなたのデータには常に正しい関係がありますか? – goat
もっと魅力的だと思うほど魅力的だと思います。提案に感謝 – user1391491