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

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

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

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

1回答

4224閲覧

DBのコンボボックスで選択されたレコードの内容を取得して、その内容をラジオボタンに反映する

sin-zo

総合スコア12

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

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

JavaScript

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

1クリップ

投稿2018/02/21 09:36

編集2018/02/26 04:44

以前の質問

https://teratail.com/questions/110444

にて、DBを使ってコンボボックスをつくり、コンボボックスを選択した際に、レコードにある別のカラムをテキスト表示する処理において、今度は、別のカラムに「0:OFF」と「1:ON」で登録されている複数カラム内容を取得して、そのカラム毎にラジオボタンを「0:OFF」の場合「非アクティブ」、「1:ON」の場合「アクティブ」として表示させようと考えております。

コンボボックスからはJavaにて「値:value」を取得して、その値を使ってjavascriptの処理の中でphpで命令してmysqlの必要なテーブルからレコードを読み込む込み、その中よりラジオボタンに対応したカラムの状態を条件判断して、ラジオボタンを「disabled」すればいいのだとはわかっているのですが、上手くコードを書くことが出来ません。

そもそも、この考えも間違っているのかもしれません。

そのあたりも踏まえて、考え方や処理の方法やコードなどを、ご教授頂けないかと思います。

宜しくお願い致します。

【HTML】 <div class="form-group" style="height: 25px"> <label for="shelf_name" class="control-label col-sm-1" style="padding-left: 0">保管場所</label> <?php $link = mysqli_connect('localhost', 'root', '', 'db_keisoku' ); //MySQLのDBへ接続 if (!$link) { echo "データベースに接続できませんした" . PHP_EOL; } // echo "データベースに接続と選択ができました" . PHP_EOL; $query = "SELECT * FROM shfnum_tbl"; $result = mysqli_query($link, $query); if (!$result) { print ("データ取得失敗<br>"); exit(); } >>>此処で、コンボボックスでDBのレコードの棚番号カラムを選択する echo '<div class="col-sm-4">'; echo '<select name="shelfnum" class="form-control" onchange="outputSelectedValueAndText(this);">'; echo '<option value="" selected="selected">棚番号を選択してください</option>'; while ($value = mysqli_fetch_array($result, MYSQL_ASSOC)) { echo "<option value=\"" . $value["shelf_name"] . "\">" . $value["shelf_num"] . "</option>"; } echo '</select>'; echo '</div>'; // 棚のある場所を表示 echo '<div class="col-sm-5">'; echo '<input type="text" class="form-control" name="shelfName" readonly>'; echo '</div>'; mysqli_close($link); ?> </div> 【javascript】 >>>棚番号カラムから、DBよりそのカラムと同じレコードの棚段数カラム(1~8)の設定「0:OFF/ 1:ON」により、ラジオボタンをアクティブもしく非アクティブとしたい function outputSelectedValueAndText(obj) { var value = obj.options[idx].value; // 値 <?php $j_link = mysqli_connect('localhost', 'root', '', 'db_keisoku' ); //MySQLのDBへ接続 if (!$j_link) { echo "データベースに接続できませんした" . PHP_EOL; } // echo "データベースに接続と選択ができました" . PHP_EOL; $j_query = "SELECT * FROM shfnum_tbl WHERE shelf_num = $value"; $j_result = mysqli_query($j_link, $j_query); if (!$j_result) { print ("データ取得失敗<br>"); exit(); } $j_row = mysqli_fetch_array($j_result); if ($j_row["shelf_step_1"]) { echo'<input type="radio" name="shelf_num" value="1"><a style="margin-left: 5px">1段目</a>'; } else { echo'<input type="radio" name="shelf_num" value="1" disabled><a style="margin-left: 5px">1段目</a>'; } ?>

2018/2/26追加

イメージ画像です
イメージ説明

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

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

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

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

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

kei344

2018/02/21 10:09

本文中の「Java」は「JavaScript」のことでしょうか。「JAVA」という言語もあるため、正確に記述してください。また、ご自身で試されたコードを質問文に追記し、「何」が「どのように」わからないのか、コードのどの部分で詰まっているのかなどを具体的に追記されたほうが回答が望めると思います。
sin-zo

2018/02/23 06:39

申し訳ありません。指摘して頂いた内容を修正および追加させて頂きました。
kei344

2018/02/23 07:14

修正された本文中にある「Java」は言語としての「Java」なのですね。また、JavaScript中にPHPのコードが混ざっていますが、PHPで出力しているのでしょうか?
sin-zo

2018/02/23 07:29

混ざっていますが、そもそもこれが正しいのかが、不明です。HTML上で変更されたコンボボックスの値から、DBのレコードを選び出し、その結果をHTMLへ反映させたいのですが、それが、Javascript中でPHPをすべきなのか試行錯誤での、そのコード結果です。正直、正常に動作しておりませんし、エラーが出ている状態です。
m.ts10806

2018/02/26 01:00

java自体のコードがどこにもないので表現を混同しているだけだと思います。あと、javascriptはあくまでクライアント側の言語でPHPはサーバー側の言語なので、今回のように幾らjavascript側でvalueというのを準備してもphp側で$valueという変数では使えません。プログラム上は上から順に見えますが、PHPを実行した結果がjavascriptを含んだhtml上に出るだけなので、想定のようには動きません。つまり「Javascript中でPHPを」はできません(ajaxなら別ですけど)
m.ts10806

2018/02/26 01:04

「レコードにある別のカラムをテキスト表示する処理において~~」のところが、文章だけではどうなったらOKなのか今ひとつピンと来ません。簡単で良いので画像などで図示していただくことはできますか?「コンボボックスで選択した値でDBに問い合わせる」ところまではイメージできるのですが、そのあとをどういう結果にするか、というところです。
sin-zo

2018/02/26 01:20

どうも皆様方には、私の質問が不快な気持ちにさせているようです。申し訳ありません。そもそも、今回の質問に対しては、どのようにコーディングすればよいものなのか自体、あまりわかっておりません。今掲示しておりますコードに置きまして、色々調べた上で、文法上やコーディングの誤りなどのある未完成のものだと理解した上で、掲示させていただいております。そのため、あまり理解出来ていない私の質問や、皆様方からの質問に対する返答が的を得ないものとなり、余計難解な質問になっているのではないかと思います。ですが、今回の質問を解決するために、HTMLやPHP,Javascriptをどのようにコーディングすればよいのかの、皆様のお知恵をお聞きしたく、是非ともアドバイスを頂けないでしょうか、宜しくお願いします。
m.ts10806

2018/02/26 01:30

あ、いえ、私は特に不快になっているわけではありませんし、コードが未完成なんだろうなというところは重々承知でコメントしています。解決(よりよい回答を得る)のためには「何をしたいか」がより具体的になっている必要があります。もし文章が難しいのであれば図示でも結構ですし、イメージが伝わるようにしてもらえれば、解決方法は回答する側で考えます。(それが本当に解決に向かうかどうかは質問者さんが実践してみて得たい結果を得られるか、になります)
x_x

2018/02/26 07:36

イメージ画像の表部分はすでにできているのでしょうか? そうであればその部分のHTMLも提示願います。
sin-zo

2018/02/26 07:42

表の部分は、phpAdminをプリントスクリーンで取得して、加工しております。コンボボックスなどの部分は、既にコードを開示しております。
x_x

2018/02/26 07:44

表部分の出力もこれから作るということでしょうか?
sin-zo

2018/02/26 08:04

表の部分は、作りません。テキストボックスの部分やラジオボタンの部分が、参照するデータベースのレコードとカラムを紹介するために、イメージとして掲載致しました。
x_x

2018/02/26 08:08

では現状クライアントにはデータがないということなので、あらかじめデータを埋め込むか、Ajaxで取得するかということになろうかと思います。どういう風にする予定でしょうか?
sin-zo

2018/02/26 08:11

PHPでデータベースにアクセスしてから、イメージのテーブルを読む込むようにしています。
x_x

2018/02/26 08:24

いずれにせよサーバー側はそうなります。クライアントにはどう渡すつもりでしょうか?
sin-zo

2018/02/26 08:32

そのあたりの処理があまり理解していません。javascriptでするのだろうというような程度です。そのあたりは、正直あまり理解していないため、どのような事をすればよいのかがわからずに、ここで質問させて頂いております。
guest

回答1

0

ベストアンサー

コメントでも書きましたが、念のため再掲します。

”””””””””””
javascriptはあくまでクライアント側の言語でPHPはサーバー側の言語なので、
今回のように幾らjavascript側でvalueというのを準備してもphp側で$valueという変数では使えません。
プログラム上は上から順に見えますが、PHPを実行した結果がjavascriptを含んだhtml上に出るだけなので、
想定のようには動きません。
”””””””””””

また、全面的な解決方法ではありませんが、

棚番号カラムから、DBよりそのカラムと同じレコードの棚段数カラム~~

の部分の対応方針です。

ajaxを利用します。

javascript

1function outputSelectedValueAndText(obj) 2{ 3 //セレクトボックスから情報を取得 4 var value = obj.options[idx].value; // 値 5 var arg = {shelfnum:value }; 6 7 //ajaxにてPHPに選択した情報をPOST 8 $.ajax({ 9 url: "hogehoge.php", 10 data: arg, 11 type: "POST", 12 dataType:'json', 13 }).done(function(data, status, xhr) { 14 //通信および情報取得が成功した場合 15 if(status === "success" && data.result == "1"){ 16 console.log(data.data_row); 17       //あとは任意の場所にhtmlを出力するようにjavascriptで書いていけばいいはず 18 if(data.data_row.shelf_step_1){ //shelf_step_1がtrueの場合? 19 //////省略 20 }else{ 21 //////省略 22 } 23 if(data.data_row.shelf_step_2){ //shelf_step_1がtrueの場合? 24 //////省略 25 }else{ 26 //////省略 27 } 28 ////////////省略 29 }else{ 30 console.log(xhr); 31 alert("データ取得失敗"); 32 } 33 }).fail(function(xhr, status, error) { 34 console.log(xhr); 35 alert("データ取得失敗"); 36 }); 37 38} 39

hogehoge.php

php

1$res["result"] = "9"; 2if($_SERVER["REQUEST_METHOD"] !== "POST"){ 3 echo json_encode($res); 4 exit(); 5} 6if(!isset($_POST["shelfnum"])){ 7 echo json_encode($res); 8 exit(); 9} 10 11$j_link = mysqli_connect('localhost', 'root', '', 'db_keisoku' ); //MySQLのDBへ接続 12if (!$j_link) { 13 echo json_encode($res); 14 exit(); 15} 16 17$j_query = "SELECT * FROM shfnum_tbl WHERE shelf_num = ".mysqli_real_escape_string($_POST["shelfnum"]); 18$j_result = mysqli_query($j_link, $j_query); 19if (!$j_result) { 20 echo json_encode($res); 21 exit(); 22} 23$j_row = mysqli_fetch_array($j_result); 24$res["result"] = "1"; 25$res["data_row"] = $j_row; 26 27echo json_encode($res); 28exit();

イメージですが、これでひとまず選択した情報を元にPHPからデータを取得してjavascriptで扱うところまではいけたかと思います。
あとはjavascriptにてhtmlに任意の情報(ラジオボタンとか?)を埋め込む処理を書いていく感じになるのではないかと。

正常に取得できたかどうかは、下記の記述を通れば開発ツールから参照可能なはず。

javascript

1console.log(data.data_row);

※ちなみにjQueryが必要です

投稿2018/02/28 02:41

m.ts10806

総合スコア80842

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

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

sin-zo

2018/03/02 09:10

返答が遅くなり申し訳ありません。確認させて頂き、思う通りの動作ができました。ありがとうございました。Ajaxを使用して、javascriptとPHPでデータベースからデータを取得する方法が、よく理解できました。 本当に、ありがとうございました。
m.ts10806

2018/03/02 21:24

解決できたようで何よりです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問