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

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

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

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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

Q&A

解決済

HTMLのラジオボタンを押してMySQLのデータを取得して入力フォームに表示したい

tako1119
tako1119

総合スコア7

MySQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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

3回答

1グッド

0クリップ

12014閲覧

投稿2016/01/20 07:37

編集2016/01/20 08:14

まだ初めて二週間のプログラム初心者です。
xamppを使用してPHPとMySQLの勉強をしています。
ネットを見ながら見よう見まねでやっています。

とりあえず練習として、htmlとPHPでユーザーインターフェース
のようなものをつくってみました。
画面上部の各入力フォームにデータを入力すると
DBにデータが登録されるようになっています。
修正と削除ができるように、画面下部の表の左端に設置した
ラジオボタンを選択すると、入力フォームに、DBに登録したデータが
表示されるようにしたいと思っています。
入力フォームの<input>タグのvalueにDBから配列でデータをとって変数に
入れてみたりしたのですが、上手くいきません。
何か良い方法はないでしょうか。ご教授お願い致します。

また、最終的には出力ボタンを押すと、エクセルの指定のフォーマットに
データが流れ、精算表みたいなものを紙で出力できるようにしたいのですが、そういうことは可能なのでしょうか。
よろしくお願い致します。

lang

1<!DOCUTYPE html> 2<html lang="ja"> 3 4<head> 5<meta charset="UTF-8"> 6<style type="text/css"> 7<!-- 8body {line-height : 180% ; } 9--> 10</style> 11<title>交通費精算</title> 12</head> 13 14<body> 15<h1>交通費精算システム</h1> 16 17<form method="post" action="add.php" autocomplete="on"> 18 19 20起票者<select name="name" style="font-size: 16px;" > 21 22 <option value="">佐藤</option> 23 <option value="">鈴木</option> 24 25 </select> 26 27<!-- コメント 間を開ける --> 28<span style="margin-right: 5em;"></span> 29 30<input type = "submit" value = "選択データを精算ずみにする"> 31<br> 32 33起票日 34<input type = "date" name = "kihyobi" 35value = "<?php echo date("Y/m/d");?>"> 36<br> 37 38利用日 39<select type = "day" name = "riyobi" value = "<?php 40echo "<select name=\"riyobi\">"; 41 42for ($i = 0; $i >-30 ; $i--) { 43 echo "<option>".date("Y/m/d",strtotime("+$i day")); 44} 45echo "</select>"; 46 47?> 48 4950<!--検索用フォーム利用日2 --> 51<select type = "date" value = "<?php 52echo "<select name=\"riyobi2\">"; 53 54for ($i = 0; $i >-60 ; $i--) { 55 echo "<option>".date("Y/m/d",strtotime("+$i day")); 56} 57echo "</select>"; 58 59?> 60 61<!-- コメント 間を開ける --> 62<span style="margin-right: 3em;"></span> 63 64<input type = "submit" value = "データ検索"> 65 66<input type = "submit" 67" onclick="window.open('http://www.jorudan.co.jp/')" value = "路線検索" > 68<br> 69 70路線名 71<select name="rosen" style="font-size: 16px;" required> 72 73 <option value="地下鉄">地下鉄</option> 74 <option value="JR">JR</option> 75 <option value="阪急">阪急</option> 76 <option value="阪神">阪神</option> 77 <option value="南海">南海</option> 78 <option value="近鉄">近鉄</option> 79 <option value="京阪">京阪</option> 80 <option value="阪堺">阪堺</option> 81 <option value="泉北高速">泉北高速</option> 82 <option value="ニュートラム">ニュートラム</option> 83 <option value="大阪モノレール">大阪モノレール</option> 84 85 86 87 </select> 88 89<!-- コメント 間を開ける --> 90<span style="margin-right: 2em;"></span> 91 92区間 93<input type = "text" name = "kukan1" value = "" required > 94 9596 97<input type = "text" name = "kukan2" value = "" required > 98<br> 99 100 101<input type="radio" name="teki" value=""checked>往復 102<input type="radio" name="teki" value="" >片道 103 104<!-- コメント 間を開ける --> 105<span style="margin-right: 2em;"></span> 106 107小計 108<input type = "number" name = "syokei" value = ""required > 109 110<!-- コメント 間を開ける --> 111<span style="margin-right: 2em;"></span> 112 113未精算額 合計 114<input type = "number" name = "gokei" value = ""> 115<br> 116 117 118訪問先 119<input type = "text" name = "homon" value = "" required> 120 121<!-- コメント 間を開ける --> 122<span style="margin-right: 2em;"></span> 123 124<input type = "submit" value = "保存"> 125 126<!-- コメント 間を開ける --> 127<span style="margin-right: 2em;"></span> 128 129<input type = "submit" value = "削除"> 130 131<input type = "submit" value = "出力"> 132 133<!-- コメント 間を開ける --> 134<p style="margin-top:1em;"> 135 136</form> 137 138 139<?php 140 141//データベースの接続とSQLの操作 142 143$user = "root"; 144$pass = "1234"; 145 146try { 147$dbh = new PDO('mysql:host=localhost;dbname=AAA;charset=utf8', $user,$pass); 148$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 149 150$sql = "select * from kotuhi"; 151$stmt = $dbh->query($sql); 152$result = $stmt->fetchALL(PDO::FETCH_ASSOC); 153 154///////画面下部テーブル//////////////////////////////////// 155echo "<TABLE border='1' bordercolor = 'orange'>"; 156echo "<TR>"; 157 158echo "<TD>選択"; 159echo "</TD>"; 160echo "<TD>精算"; 161echo "</TD>"; 162echo "<TD>出力"; 163echo "</TD>"; 164echo "<TD>起票者"; 165echo "</TD>"; 166echo "<TD>利用日"; 167echo "</TD>"; 168echo "<TD>路線"; 169echo "</TD>"; 170echo "<TD>区間"; 171echo "</TD>"; 172echo "<TD>適用"; 173echo "</TD>"; 174echo "<TD>金額"; 175echo "</TD>"; 176echo "<TD>訪問先"; 177echo "</TD>"; 178 179echo "</TR>"; 180 181//1ループで1行データ $resultテーブルデータ $rowDBのレコード 182 183foreach ($result as $row) { 184 185 echo "<TR>" ; 186 187 //選択ラジオボタン//////// 188 echo "<TD>" . "<input type='radio' name='sentaku' 189 value='sentaku'>"; 190 echo "</TD>"; 191 ////////////////////////// 192 193 //列1 精算を出力////////////// 194 echo "<TD>" .htmlspecialchars($row['seisan'],ENT_QUOTES,'UTF-8'); 195 echo "</TD>"; 196 ////////////////////////// 197 198 //列2 出力を出力////////////// 199 echo "<TD>" . htmlspecialchars($row['syutu'],ENT_QUOTES,'UTF-8'); 200 echo "</TD>"; 201 ////////////////////////// 202 203 //列3 起票者を出力////////////// 204 echo "<TD>" . htmlspecialchars($row['name'],ENT_QUOTES,'UTF-8'); 205 echo "</TD>"; 206 ////////////////////////// 207 208 //列4 利用日を出力////////////// 209 echo "<TD>" . htmlspecialchars($row['riyobi'],ENT_QUOTES,'UTF-8'); 210 echo "</TD>"; 211 ////////////////////////// 212 213 //列5 路線を出力////////////// 214 echo "<TD>" . htmlspecialchars($row['rosen'],ENT_QUOTES,'UTF-8'); 215 echo "</TD>"; 216 ////////////////////////// 217 218 //列6 区間を出力////////////// 219 echo "<TD>" . htmlspecialchars($row['kukan'],ENT_QUOTES,'UTF-8'); 220 echo "</TD>"; 221 ////////////////////////// 222 223 //列7 適用を出力////////////// 224 echo "<TD>" . htmlspecialchars($row['teki'],ENT_QUOTES,'UTF-8'); 225 echo "</TD>"; 226 ////////////////////////// 227 228 //列8 金額を出力////////////// 229 echo "<TD>" . htmlspecialchars($row['syokei'],ENT_QUOTES,'UTF-8'); 230 echo "</TD>"; 231 ////////////////////////// 232 233 //列9 訪問先を出力////////////// 234 echo "<TD>" . htmlspecialchars($row['homon'],ENT_QUOTES,'UTF-8'); 235 echo "</TD>"; 236 ////////////////////////// 237 238} 239 echo "</table>\n"; 240$dbh = null; 241 242 243} catch (PDOException $e) { 244 echo "エラー発生: " . htmlspecialchars($e->getMessage(), ENT_QUOTES, 'UTF-8') . "<br>"; 245 die(); 246 } 247 248?> 249 250</body> 251 252</html>

PHP

1<?php 2header("Content-Type: text/html; charset=UTF-8"); 3 4//変数の設定 5$user = "root"; 6$pass = "1234"; 7$name = $_POST['name']; 8$kihyobi = $_POST['kihyobi']; 9$riyobi = $_POST['riyobi']; 10$rosen = $_POST['rosen']; 11$kukan1 = $_POST['kukan1']; 12$kukan2 = $_POST['kukan2']; 13$teki = $_POST['teki']; 14$syokei = $_POST['syokei']; 15$homon = $_POST['homon']; 16 17$kukan = $_POST['kukan1'].' ~ '.$_POST['kukan2']; 18 19 20try { 21 $dbh = new PDO('mysql:host=localhost;dbname=bbb', $user,$pass); 22 $dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 23 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 24 25//PDO プリペアードステイトメント プレースホルダの設定 26$sql = "insert into kotuhi (name,kihyobi,riyobi,rosen,kukan1,kukan2,teki,syokei,homon,kukan) values (?,?,?,?,?,?,?,?,?,?)"; 27$stmt = $dbh->prepare($sql); 28 29//値のバインド 30$stmt->bindValue(1, $name,PDO::PARAM_STR); 31$stmt->bindValue(2, $kihyobi,PDO::PARAM_STR); 32$stmt->bindValue(3, $riyobi,PDO::PARAM_STR); 33$stmt->bindValue(4, $rosen,PDO::PARAM_STR); 34$stmt->bindValue(5, $kukan1,PDO::PARAM_STR); 35$stmt->bindValue(6, $kukan2,PDO::PARAM_STR); 36$stmt->bindValue(7, $teki,PDO::PARAM_STR); 37$stmt->bindValue(8, $syokei,PDO::PARAM_INT); 38$stmt->bindValue(9, $homon,PDO::PARAM_STR); 39 40$stmt->bindValue(10, $kukan,PDO::PARAM_STR); 41 42$stmt->execute(); 43 $dbh = null; 44 echo "登録が完了しました<br><br>"; 45 echo "<a href = 'kotuhi.html'>登録画面へ戻る</a>"; 46 47} catch (PDOException $e) { 48echo "エラー発生: " . htmlspecialchars($e->getMessage(),ENT_QUOTES) . "<br>"; 49die(); 50}

UI

5o5o_wagon👍を押しています

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答3

1

うまくいかない場合は、ご自身が作成したプログラム(抜粋でも可)を明記したほうが良いかと思います。

入力フォームの<input>タグのvalueにDBから配列でデータをとって変数に

入れてみたりしたのですが、上手くいきません。

DB操作に利用しているモジュールなどによって変わってきますが。。。
PDOを利用しているなら、下記サイトが参考になるのではないでしょうか。

http://ponk.jp/php/basic/php_mysql#page_index2

エクセルの指定のフォーマットに

データが流れ、精算表みたいなものを紙で出力できるようにしたいのですが、そういうことは可能なのでしょうか。

外部モジュールなどを利用すれば、Excel の xls (or xlsx) 形式でも出力が可能です。
http://mizyupon-rpg.com/posts/719.html

投稿2016/01/20 07:53

usk

総合スコア397

miyabi-sun👍を押しています

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

tako1119

2016/01/21 03:17

ありがとうございます。紹介して頂いたサイトでPDOについてとても分かりやすく説明してあり、勉強になりました。

0

ベストアンサー

今回はどういった手法で行うかという観点で回答しております。
具体的なコードは記載しておりません。


該当のプログラムには、下記が必要になります。

A. ラジオボタンが選択されたタイミングで処理を行うJavascript
B. 選択された値からデータを取り出すJavascript
C. Bの結果をフォームに設定するJavascript


A. ラジオボタンが選択されたタイミングで処理を行う Javascript について

i. ラジオボタンのアクションを検知するイベントハンドラ (onClick, onChange, onSelect 等) を設置する
ii. ラジオボタンが選択された際に呼び出す関数を作成

例: ラジオボタンが選択された際に呼び出す例

HTML

1<script> 2// ラジオボタンが選択された際に呼び出される関数 3function onRadioChanged(selectedValue) { 4 alert(selectedValue); 5} 6</script> 7 8<input type="radio" name="selected" value="1" onChange="onRadioChanged('1')" /> 9<input type="radio" name="selected" value="2" onChange="onRadioChanged('2')" /> 10<input type="radio" name="selected" value="3" onChange="onRadioChanged('3')" />

※ 今回はわかりやすくするために、あえてこのような書き方をしております。


B. 選択された値からデータを取り出すJavascript

基本的に、下記どちらかの手法が必要になります。

i. フォームにセットするデータを予め画面内(Javascriptの配列等)に格納しておき、ラジオボタンが選択されたタイミングでフォームに値をセットする
ii. ラジオボタンが選択されたタイミングでサーバーに問い合わせを行い、フォームに値をセットする。

どちらの手法でデータを扱うかは要件によりけりです。
ただ、近年は、(Ajax を用いて)ラジオボタンが選択されたタイミングでサーバーに問い合わせを行い、その結果をフォームにセットするという手法(ii)が一般的です。


C. Bの結果をフォームに設定するJavascript

Bの選択した方法によって変わってくるので、今回は明記しません。
基本的に、Javascript を用いて、input 領域に値をセットするか、form そのものをごそっと入れ替えてしまうかになるでしょう。

○ 参考URL
http://www.ajaxtower.jp/js/event/index3.html
http://uguisu.skr.jp/html/ajax.html

投稿2016/01/21 00:38

usk

総合スコア397

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

修正以前に、上部のフォームからの登録は可能でしょうか?
もし登録ができるのであれば、DBとの接続は問題ないと思います。

データ表示のためには、ラジオボタンをクリックした時、そのデータを特定するデータを処理するPHPに送信しないと該当のデータを取得することはできませんが、そのような処理は行っていますか?

formでsubmitするか、javascriptなどを使ってデータを飛ばしてあげる必要があります。

※PHPの動きとは関係ありませんが、html内にstyleを直書きすると見にくくなってミスも増えるのでCSSで切り分けることをお勧めします。

投稿2016/01/20 09:47

編集2016/01/20 09:52
ao_love

総合スコア441

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

tako1119

2016/01/21 03:20

ありがとうございます。フォームからDBへの登録はできています。同じページで全部処理できないかと考えてます。CSSも勉強してみます。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

同じタグがついた質問を見る

MySQL

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

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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