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

いつもお世話になっております。

現在、作成中のHPですが、データ取得をphpで行い表示をしています。

(1)a.phpでプルダウンのデータを取得し、b.phpで表示。
(2)b.phpでプルダウンを選択し、その値をtest.phpへ渡す。

(2)で、プルダウンの値を渡す処理がどうしてもうまくできず、
とても困っています。

どこを修正すればよいのかご教授願いたいのですが・・・。
スクリプトは下記の通りです。

-------------------------------------------------------
【b.php】
<html>
<head>
<title>テスト</title>
</head>
<body>

<SCRIPT language="JavaScript">
function testphp(){
try{

with(document.testform){
action="http://test/test.php";
test.value = testform.testselect[testform.testselect.selectedindex].value;
method="POST";
submit();
}
} catch(e) {
alert("エラーは " + e.description + " です。");
}
}
</SCRIPT>

<form name="testform" onchange="testphp()">
<select name="testselect">
<option value="あ">結果1</option>
<option value="い">結果2</option>
<option value="う">結果3</option>
<option value="え">結果4</option>
<option value="お">結果5</option>
</select>
</form>

</body>
</html>

【test.php】
<?php

//変数処理
$a = @$_POST["test"];

print "渡された値:".$a;
exit;

?>
-------------------------------------------------

どうぞ、宜しくお願い致します。

A 回答 (5件)

>Array ( [test] => [testselect] => い )


ですから、testに値が入っていませんね。
$a = @$_POST["test"];
としても、testに値がないので、表示されません。

test.value = testform.testselect[testform.testselect.selectedIndex].value;
はまだ残っているんですよね?
単純に「い」だけを取り出したいなら、testに入れなくても
セレクトボックスの値を取り出せばいいと思うのですが。

【b.php】
<SCRIPT language="JavaScript">
function testphp(){
try{
with(document.testform){
action="http://test/test.php";
method="POST";
submit();
}
} catch(e) {
alert("エラーは " + e.description + " です。");
}
}
</SCRIPT><form name="testform">
<select name="testselect" onchange="testphp()">
<option value="あ">結果1</option>
<option value="い">結果2</option>
<option value="う">結果3</option>
<option value="え">結果4</option>
<option value="お">結果5</option>
</select>
</form>

【test.php】
<?php
//変数処理
$a = $_POST["testselect"];
print "渡された値:".$a;
exit;
?>
    • good
    • 1
この回答へのお礼

何度も、ご回答いただき本当にありがとうございます。

>単純に「い」だけを取り出したいなら、testに入れなくても
>セレクトボックスの値を取り出せばいいと思うのですが。

はい、その通りです。
javaの中で、testに変換しなくても、phpの $_POST["testselect"];
とするだけで、値がとれるんですね。
その部分が理解できていませんでした。

ご回答いただいたスクリプトを使用させていただいた結果、
きちんと「い」の値が表示されました。

長時間、お付き合いいただき、本当にありがとうございました。

お礼日時:2011/05/17 19:51

私のほうでは、正常に「い」と表示されます。



最新のソースをコピーしてテストしましたが、
正常にできています。

提示されたソースで試されたのですか?
test.phpに
print_r($_POST);
と記載して、POSTがどうなっているか調べてください。

この回答への補足

何度も、申し訳ありません。

【test.php】
<?php
//変数処理
$a = @$_POST["test"];

print_r($_POST);
print "<br />渡された値:".$a;

?>

結果:
Array ( [test] => [testselect] => い )
渡された値:

なぜか、$aが出力されません。
ここの記入が間違っているのでしょうか。

補足日時:2011/05/17 16:04
    • good
    • 0

test.value = testform.testselect[testform.testselect.selectedindex].value;



test.value = testform.testselect[testform.testselect.selectedIndex].value;
に変更することで値を取得できるのではないでしょうか。
selectedindex → selectedIndex
testは設定されていないし、onchangeの場所も悪いです。
testをhiddenで設定し、onchangeは、selectで指定するべきです。

<form name="testform">
<input type="hidden" name="test">
<select name="testselect" onchange="testphp()">
<option value="あ">結果1</option>
<option value="い">結果2</option>
<option value="う">結果3</option>
<option value="え">結果4</option>
<option value="お">結果5</option>
</select>
</form>

としてみてください。
testselectで指定された値をtestに入れても、同じ値が入るだけので、
なぜそうしたいかは不明ですが、参考までに。

この回答への補足

再度、質問させて下さい。

<input type~>を記入すると、javaで
test.value = testform.testselect[testform.testselect.selectedIndex].value;
を記入しなくても、test.phpのPOSTに渡されることは分かりました。

mikemike7様のスクリプトをもとに、再度試してみたのですが
test.phpが表示されることが確認できましたが、
プルダウンで選択した値が表示されません。
結果2を選択したら、「渡された値:い」と表示されるはずでしたが
「渡された値:」しか表示されませんでした。

<input type="hidden" name="test">のvalue値に何か
いれなければならないのでしょうか。

【スクリプト】
<SCRIPT language="JavaScript">
function testphp(){
try{
with(document.testform){
action="http://test/test.php";
test.value = testform.testselect[testform.testselect.selectedIndex].value;
method="POST";
submit();
}
} catch(e) {
alert("エラーは " + e.description + " です。");
}
}
</SCRIPT><form name="testform">
<input type="hidden" name="test">
<select name="testselect" onchange="testphp()">
<option value="あ">結果1</option>
<option value="い">結果2</option>
<option value="う">結果3</option>
<option value="え">結果4</option>
<option value="お">結果5</option>
</select>
</form>

何度も申し訳ありませんが、ご回答の程
宜しくお願い致します。

補足日時:2011/05/17 15:04
    • good
    • 0
この回答へのお礼

mikemike7様
ご回答ありがとうございます。

>selectedindex → selectedIndex
>testは設定されていないし、onchangeの場所も悪いです。
>testをhiddenで設定し、onchangeは、selectで指定するべきです。

大文字、小文字をきちんと見れていませんでした。
また、onchangeも間違えて設定していたようです。
ご指摘ありがとうございます。


<input type="hidden"~>
で選択データを取得できる事を理解できていませんでした。
そのため、javaを利用しないとできないと思い込んでいた為、
変なスクリプトを作成してしまいました。

一度、mikemike7様のスクリプトを利用して、
試してみたいと思います。

お礼日時:2011/05/17 14:12

ちょっと意味がわからないのですが・・・



a.phpからb.phpにはセッションでデータを渡せば、test.php
に引き継げませんか?
(actionの書き方が別のサイトに飛ばすように見えるので違うのかな?)

あと、javascriptで、actionやらmethodやらかいていますが、
最初からformに書かない理由があるのでしょうか?
正直今のソースを見る限り無意味ですね。

formにonchangeを設定していますが、selectに設定してください。
    • good
    • 0
この回答へのお礼

yambejp様
ご回答ありがとうございます。

<input type="hidden"~>
で選択データを取得できる事を理解できていませんでした。
そのため、javaを利用しないとできないと思い込んでいた為、
変なスクリプトを作成してしまいました。

<input type="hidden"~>で、試してみたいと思います。

>formにonchangeを設定していますが、selectに設定してください。
こちらも、間違えて設定していたようです。
ご指摘ありがとうございます。

お礼日時:2011/05/17 14:01

test.value = ~~


となっていますが、相当する要素がHTMLに無いのではないでしょうか?
<input type="hidden" ~~
などで用意しておくとかでどうでしょうか?

あとは…
document.testform
testform.testselect
などの、名前で要素を取得しているようですが、ブラウザによっては対応していない可能性も…
    • good
    • 0
この回答へのお礼

fujillin様
ご回答ありがとうございます。

<input type="hidden" ~~
で選択データを取得できる事を理解できていませんでした。
そのため、javaを利用しないとできないと思い込んでいた為、
変なスクリプトを作成してしまいました。

<input type="hidden" ~~ を利用して試してみたいと思います。

>document.testform
>testform.testselect
>などの、名前で要素を取得しているようですが、ブラウザによっては対応していない可能性も…

ブラウザで対応していない可能性があるのですね。
複数ブラウザでテストしてみたいと思います。
情報、ありがとうございました。

お礼日時:2011/05/17 13:49

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