プロが教えるわが家の防犯対策術!

行き詰っているので、力を貸してください。あるプロダクトの名前、ID、及び値段をデータベースからPERL DBIで引っ張ってきています。
<option value="id">$name</option>という形になっています。
同じページの同じフォームにたくさんあるオプションの中からある名前を選ぶと、値段をテキストボックスでonCheck で表示させたいのですが、データベースからとってきた配列はフォームの中のwhile文の中に入っているため、どうやって、<header>の間のjavascript の配列に入れることができるのでしょうか?
スクリプトは下記の通りです。

PERL/DBI form名:mbscalcTb

my $sql = "SELECT ProductId,.NameJ,.PSJ from Security";
my $sth = $dbh->prepare($sql); $sth->execute(); my $row;
while ( $row = $sth->fetchrow_hashref() ) {
my ( $ProductId, $NameJ, $psjtb ) = ( $row->{ProductId},$row->{NameJ},$row->{PSJ} );
print "<option value=$ProductId name=\"pid\" onmouseup=\"get_psj()\">$NameJ$psjtb</option>";
print "<tr><td><input type="text" name="price"></tr></td>";
}
なんとなく、やりたいjavascript

知りたいこと:var productId_list array の中にどうやれば、
カンマの区切り入りで上の$row->{PSJ} を入れることができるのか??

function get_price () {
var productId_list = [ $ProductId];
var psj_list = [ $psj ];
var pid = document.mbscalcTb.pid.value;
for (var i =0; i < productIdlist.length; i++) {
if (productId_list[i] == pid ) {
return psj_list[i];
document.mbscalcTb.price.value= psj_list[i];}
}
また、他にもっといい方法があれば教えてください。宜しくお願いします。

A 回答 (2件)

ちょっと意味が分かりかねますが、


<option value="値段" ・・・>
にすれば良いのでは?

もし複数の情報が欲しいのであれば、
<option value="Id,値段,something" ・・・>
にして、javascript内でvalueをカンマ区切りで解析。

Arrayに入れたいのであれば、冒頭で検索をかけて、検索結果を保持したまま<head>内のjavascriptを記述、次に<body>内の文を記述すれば良いのではないでしょうか。
    • good
    • 0
この回答へのお礼

皆さん、ありがとうございました。
解決しました。皆様のとはやり方が違いますので、参考までにご覧下さい。

my $dbh = &getDBConnection(1);
my $sql = "SELECT ProductId, NameJ, PSJ from Security";
my $sth = $dbh->prepare($sql);
$sth->execute();
my $row; my $meigara;
while ( $row = $sth->fetchrow_hashref() ) {
my ( $ProductId, $NameJ, $psjtb) = ( $row->{ProductId},
$row->{NameJ},
$row->{PSJ}
);
$meigara .="<option value=$ProductId name=\"pid\" selected>$NameJ</option>\n";
$psj .= ',' if (length($psj) );
$psj .= " $psjtb" ;
}
Javascript:

function get_psj() {
var psj = new Array ( $psj );
var i = document.mbscalcTb.product.selectedIndex ;
document.mbscalcTb.PSJper.value = psj[i];
}

HTML:
<select size="10" style="width:300px;" name="product" onChange="get_psj()" >
$meigara
</select>

お礼日時:2006/06/03 01:27

なぜheaderに参照した値を入れる必要があるのか


わかりませんが、やるなら参照処理と表示処理を
分けるだけでよいのでは?
フロー的にはこんな感じで。

<?PHP
・・・
while(sql指定){
$script_str.="ほげほげ";
$option_str.="<option>ほげ";
}
・・・

print <<<eof;
<html>
<head>
<script language=javascript>
function hoge(obj){
・・・
$script_str
}
</script>
</head>
<body>
・・・
<form>
<select onChange="hoge(this)">
$option_str
</select>
</form>
・・・
</body>
</html>
eof;
?>
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!