質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

FileMaker

FileMaker(ファイルメーカー)は、ファイルメーカー社が開発しているデータベース構築ソフトウェアです。

Q&A

解決済

1回答

3779閲覧

javascript php ドロップダウンリストの値が動的に変化する

satoshi501

総合スコア60

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

FileMaker

FileMaker(ファイルメーカー)は、ファイルメーカー社が開発しているデータベース構築ソフトウェアです。

0グッド

0クリップ

投稿2017/07/20 01:46

お世話になります
webにて2つのドロップダウンリストがあり、上部で選択した値によって下部の選択する値を変化させるコードを書いています。
※DBにはfilemakerを使用しています

javascript

1<script type = "text/javascript"> 2<!-- 3function functionName() 4{ 5 var select1 = document.forms.formName.koumoku1; 6 var select2 = document.forms.formName.syoukoumoku1; 7 8 select2.options.length = 0; 9 10 11 if (select1.options[select1.selectedIndex].value == "110300") 12 { 13 <?php 14 $findCommand =& $fm->newFindCommand('商品マスタ'); 15 $findCommand->addFindCriterion('商品No','='. 110300) ; 16 $result = $findCommand->execute(); 17 $records = $result->getRecords(); 18 $record = $records[0]; 19 $i = 0; 20 foreach ($records as $record) { 21 22 $syouhin1 = $record->getField('商品Co').$record->getField('商品名'); 23 ?> 24 select2.options[<?php echo $i ; ?>] = new Option("<?php echo $syouhin1 ; ?>"); 25 <?php 26 $i++; 27 } 28 ?> 29 30 } 31 32 else if (select1.options[select1.selectedIndex].value == "110302") 33 { 34 35 } 36 37 38} 39 40//--> 41

HTML

1項目:<select name="koumoku1" onChange="functionName()"> 2<option value="110300">110300</option> 3<option value="110302">110302</option> 4</select><br> 5小項目:<select name="syoukoumoku1"> 6</select><br> 7

という風にし、項目で110300を選んだ場合phpを使用し110300のデータを小項目に呼び出す様にしています

現在このコードでは動くのですが、
else if の中にも同じ様にphpの部分をコピーして中の検索の値を110302に変更しておくとwebページ自体が真っ白となり何も表示されなくなります。

これは一体どこがおかしいのでしょうか?
↓ else if の中に追加したコード

javascript

1else if (select1.options[select1.selectedIndex].value == "110302") 2 { 3<?php 4 $findCommand =& $fm->newFindCommand('商品マスタ'); 5 $findCommand->addFindCriterion('商品No','='. 110302) ; 6 $result = $findCommand->execute(); 7 $records = $result->getRecords(); 8 $record = $records[0]; 9 $i = 0; 10 foreach ($records as $record) { 11 12 $syouhin1 = $record->getField('商品Co').$record->getField('商品名'); 13 ?> 14 select2.options[<?php echo $i ; ?>] = new Option("<?php echo $syouhin1 ; ?>"); 15 <?php 16 $i++; 17 } 18 ?> 19} 20

よろしくお願いします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

「webページ自体が真っ白」はサーバー側の言語で何かしらエラーをはいてそこで止まっているから、と思われますが、そのコードだけでは分かりませんね。
なんとなく$findCommand =& $fm->newFindCommand('商品マスタ');の部分が怪しそうですけど。
この場合phpは画面表示時に全て実行されるので重複実行できないんじゃないかなぁと思いますが、同環境がないので未検証です。
いずれにしてもphpはjavascriptがそこを通ったときに実行されるわけではないので。

現在のエラー状態を解消してもkoumoku1の選択値だけが違う同じ処理内容が複数ある状態ですし、
koumoku1のデータ量が増えたときにその都度elseで追加していくのは現実的ではありません。
(何より、ブラウザで表示した場合からは見えないとはいえjsとphpのコードが混在しているのは好ましくない)
phpで取得してくる部分をkoumoku1の選択値を渡してAjax実行して結果を受け取った方が良いのでは。
参考:JavaScript(jQuery)からPHPのAPIを利用する

投稿2017/07/20 02:01

m.ts10806

総合スコア80765

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

satoshi501

2017/07/21 05:46

>>この場合phpは画面表示時に全て実行されるので重複実行できないんじゃないかなぁ わかりました ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問