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

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

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

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

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

PHP

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

Q&A

3回答

5491閲覧

DBから取り出したものとラジオボタンを結合させたい

aaaaasu

総合スコア4

MySQL

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

mysqli

MySQLiはPHP5より導入されているデータベース用のドライバです。MySQL 4.1.3以降の新しい機能の利点をまとめています。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

PHP

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

0グッド

0クリップ

投稿2017/01/30 01:33

編集2022/01/12 10:55

php、mysqlを使って予約ページを作っています
公開等するつもりはなく学校の授業内のサイト作りになってます

もともとDBの中に予約情報を入れていて
出発地・到着地・クラスを選択(yoyaku.php)していただくと
次の画面(yoyakukekka.php)に4つの時間と料金が抽出できるようになってます
その次の画面(yoyakucheck.php)ですべての情報を表示させます。

取り出した時間と料金の情報とラジオボタンを結合(?)して
$_POSTにいれたいのですがどうしたらいいでしょうか
$_SESSIIONにも後に入れるつもりです

###ソースコード(yoyaku.php)

html

1<form method="post" action="yoyakukekka.php"> 2出発地<select name="go"> 3<option value="" selected>ご選択ください</option> 4<option value="大阪">大阪(伊丹)</option> 5<option value="東京">東京(成田)</option> 6<option value="沖縄">沖縄(那覇)</option> 7<option value="北海道">北海道(新千歳)</option> 8</select> 9 10到着地<select name="des"> 11<option value="" selected>ご選択ください</option> 12<option value="大阪">大阪(伊丹)</option> 13<option value="東京">東京(成田)</option> 14<option value="沖縄">沖縄(那覇)</option> 15<option value="北海道">北海道(新千歳)</option> 16</select> 17 18クラス<select name="class"> 19<option value="" selected>ご選択ください</option> 20<option value="エコノミー">エコノミークラス</option> 21<option value="ビジネス">ビジネスクラス</option> 22</select> 23 24搭乗日 25<input type="text" id="datepicker" name="day"> 26 27搭乗者等省略、、、 28 29<input type="submit" name="next" value="次へ"> 30</form>

###ソースコード(yoyakukekka.php)

php

1<?php 2session_start(); 3 4$dsn = "mysql:dbname=yoyaku; host=127.0.0.1"; 5$user = "root"; 6$password = ""; 7 8try{ 9 $dbh = new PDO($dsn, $user, $password); 10 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 11 $dbh->query("SET NAMES utf8"); 12 13 $go = $_POST["go"]; 14 $des = $_POST["des"]; 15 $class = $_POST["class"]; 16 $day = $_POST["day"]; 17 18 $_SESSION["GO"] = $go; 19 $_SESSION["DES"] = $des; 20 $_SESSION["CLASS"] = $class; 21 $_SESSION["DAY"] = $day; 22 23 $sql = 'select time,fare from plane where go=? AND des=? AND class=?'; 24 $stmt = $dbh->prepare($sql); 25 $stmt->execute(array($go, $des, $class)); 26 27 } catch (PDOException $e) { 28 echo 'Connection failed: ' . $e->getMessage(); 29 die(); 30} 31?>

html

1略、、、 2<body> 3<form action="yoyakucheck.php" method="submit"> 4 5<table> 6<thead> 7<tr> 8<th>出発→到着(時間)</th> 9<th>料金(1名様)</th> 10<th>選択</th> 11</tr> 12</thead> 13 14<tbody> 15<?php while($result = $stmt->fetch()){ ?> 16<tr> 17<td><?= $result["time"]; ?></td> 18<td><?= $result["fare"]; ?></td> 19<td>ここがわかりません</td> 20</tr> 21<?php } ?> 22</tbody> 23</table> 24 25<input type="submit" name="check" value="確認"> 26</body>

###ソースコード(yoyakucheck.php)

html

1<table> 2<tr><td>選択した便情報をご確認ください。</td></tr> 3<tr> 4<td>出発地/到着地</td> 5<td>搭乗日</td> 6<td>搭乗時間</td> 7<td>クラス</td> 8<td>料金</td> 9</tr> 10 11<tr> 12<td><?= $_SESSION["GO"]; ?>/<?= $SESSION["DES"]; ?></td> 13<td><?= $_SESSION["DAY"]; ?></td> 14<td></td> //時間を表示したい 15<td><?= $_SESSION["CLASS"]; ?></td> 16<td></td> //料金を表示したい 17</tr> 18</table> 19<input type="submit" name="submit" value="お申込み"> 20

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

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

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

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

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

kei344

2017/01/30 03:00

各phpのフォームにかかわる部分を追記されたほうがよいと思います。
kei344

2017/01/30 05:07

課題だということですが、「php/mysqlを使用しなければならない」という指定があるのでしょうか。
aaaaasu

2017/01/30 06:22

いえ、何を使っても良くて私たちのグループはphp等を使って予約サイト作ろうとなりました
guest

回答3

0

ようは、inputのradioを置けば良いと思います。
whileは回すとこなので、回さないとこでformタグと、最終的に送信ボタンを設置しておいて、選択して送信さたら、どこを選択されたかがわかればいいので、その値をセットさせておけば良いんじゃないですか?

とりあえず、、、
どのようにセットするかの方法とかやり方はいろいろあると思いますが、現在表示されているデータの中で「何が違うか?」なんですけど、今回の場合は出発とかは同じで時間が違うだけですよね?

HTML

1// 出発とかの共通の値はhiddenで持たせて、radioには時間をぶち込む 2<input type="radio" value="時間"> 3 4<input type="hidden" value="出発">

出発とかは共通なので、回す必要もなく、submitの上に書けばいいと思います。
そうすると、結局次に送られる値は共通のhiddenの値と、radioの時間になれば、その行として再度表示させれば良いんじゃないでしょうか?

HTML

1// 出発とかの値はそもそもSESSIONにぶち込んでみる 2// 検索のデータを 3$go = 4$des = 5$_SESSION['search_date'] = [$go, $des]; 6 7// radioの部分は上と同じく時間を

にすると、次のページではhiddenから値をとるんじゃなく、SESSIONからとるっていうのが違うだけ。

HTML

1// テーブルにIDとかがふってあるなら 2<input type="radio" value="テーブルのID"> 3 4// にしておいて、次のページでもう一回データベースに接続して、IDを元にSELECTをかけて表示させる

こんな感じで、何が違ってそれをセットさせるかだと思います。

投稿2017/01/30 02:46

編集2017/01/30 03:24
Z-TALBO

総合スコア525

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

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

aaaaasu

2017/01/30 02:58

回答ありがとうございます。 valueでbin1〜bin4として送信したとしても 時間料金は確認画面にもっていくことはできなくないですか? 勉強不足で申し訳ないです。
Z-TALBO

2017/01/30 03:26

これだけだと、いろいろこの回答こそツッコミどころ満載ですけど、、、 とりあえず、、、、
aaaaasu

2017/01/30 03:43

ソースまでありがとうございます。 今日はもう時間がないので読んで調べて理解し、明日試してみます
guest

0

よくわからないですけど、name と value を設定してやればよいのだと。
ただ、記載されているスクリプトからの想像ですが、スキル的にインターネット上に公開して良いレベルでは無いです。
もし業務で使用するのであれば、外部に委託したほうが良いです。

投稿2017/01/30 02:34

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

aaaaasu

2017/01/30 02:44

回答ありがとうございます。 説明不足ですみません。 1人目の返事の内容でもまだ足らないとは思うのですが見ていただきたいです inputでラジオボタンは表示させれます 4つのボタンの中から一番上を選択したとして、その行の時間料金を次の確認画面にもっていか方法がわからないです 公開等はするつもりありません php初心者が卒業研究のために作っているので。
zico_teratail

2017/01/30 02:44

te2jiさんのご指摘通り、ツッコミどころが多数ありますので危険な香りがプンプンします。 趣味ならいいけどお金が絡む業務で使うのは絶対に止めたほうがいいと思います。 素直に外注したほうが早いし安いです。
退会済みユーザー

退会済みユーザー

2017/01/30 03:12

なんらかの卒業研究の結果をプレゼンテーションするため、表現ツールとして PHP を選んだということだと思いますが、PHP を使用して表現するにはスキルが足りていません。(ソースをネットから拾ってきている上、取捨選択も出来ていません。。。) プレゼンがいつなのか分かりませんが、多くても1ヶ月ぐらいしか余裕はないですよね?要件さえきちんと整理できていれば、フリーランサーにでも依頼するとイイです。あまり凝ったプレゼンをするのではなく、普通に論文でも書けば良い気もしますが。。。
aaaaasu

2017/01/30 03:41

情報系の学校なんですがわたしのクラスはphpなどは勉強せず簡単にhtmlを触るだけでした 論文などは選べなく卒業研究で何か作らないといけないんです プロやプログラミングを職としている方からするとほんといらいらすると思うんですがこれでも一生懸命やってきました あとその時間料金を持っていくことができればチグハグでも完成は見えてるんです...
退会済みユーザー

退会済みユーザー

2017/01/30 03:47

質問が更新されて全体像が見えましたが、これ自体が卒業研究なんですか? であれば、回答できませんし、正直こんな内容で卒業できることはないのではないかと。。。 なにがしかの経路検索ロジックをプレゼンするとかそれに類することを想定していました。 色々とひどいですね。。。
aaaaasu

2017/01/30 04:00

私じゃこんなものしかつくれないですね、、 大学生等の卒業研究ほど大きなものではありません。 新規会員登録、ログイン、からの予約画面なので一通りみせれればいいぐらいのものです
zico_teratail

2017/01/30 04:13

えっ、情報系学校の卒業研究でこのレベル? 3年間も学校に行った成果がこれ??? だとしたらあなたのコンピュータ・センスが無さすぎるか、学校の教育カリキュラムが悪すぎるか、あるいはその両方です。厳しい言い方になりますが、お金と時間を無駄にしましたね。 センスある人なら独学でゼロから始めても1~2ヶ月あればこれ以上のレベルに達すると思います。 >わたしのクラスはphpなどは勉強せず簡単にhtmlを触るだけ じゃあ他に一体何を勉強したのでしょうか、情報系の学校なのに・・・
aaaaasu

2017/01/30 04:27

2年ですね。 phpは一切触れてません。 簿記とMOSと基本情報とかですね 情報学校ですがビジネスの学科なので。別の学科はオラクル?とかjava、C言語もしてるそうですが やりたくてやってるわけじゃないです、とりあえず就職先は決まってるのでそれだけのために行ったようなものです
zico_teratail

2017/01/30 04:44

>簿記とMOSと基本情報 どれも独学で簡単に習得できるものばかり・・・特に後者二つ。 でも就職先決まってるならよかったですね。 だけど卒研をコピペとかteratailに丸投げとかは良くない姿勢だと思いますよ。 与えられた課題をやりたくないならそもそも学校なんか行くなよ、と。
退会済みユーザー

退会済みユーザー

2017/01/30 05:15 編集

なぜ学習していない内容が卒業研究テーマなのかよく分かりませんが、PHP スクリプトとしてマイナス評価を受けるポイントが多々含まれています。 今のコードは見ていないですが、最初に見たスクリプトですぐに気になったのは下記です。 ・$_POST が空だったときを想定していない。 POSTを扱う時の最低限の処置です。通常は入力値確認も実施します。 ・query("SET NAMES utf8") 環境によりますが、脆弱性となる可能性があり、使用を推奨されていません。 http://php.net/manual/ja/mysqlinfo.concepts.charset.php APIで指定する方法が推奨です。 PHP スクリプトとして評価するのであれば、学習していないと証明しているようなスクリプトなので、私が評価者なら卒業させないです。 > zico_teratail さん 人の回答で煽るのやめてもらえないですかねぇ。 それほど異論は無いですけど、こじれるので。
zico_teratail

2017/01/30 05:14

>人の回答で煽るのやめてもらえないですかねぇ そんなルールあるんですかねぇ。 それほど異論は無いですけど、自由にコメントできるシステムなので。
退会済みユーザー

退会済みユーザー

2017/01/30 05:21

ただのお願いですよ。 こじれると、回答したいことが回答できないので。 今回伝えたいのは「PHPスクリプトとしてみた時、マイナスポイントが多くあり、問題を抱えている」ってことなのに、zico_teratail さんの煽りのせいで、aaaaasu さんにそのことが伝わりにくくなっている。 話戻すのがしんどいんですよね。
zico_teratail

2017/01/30 05:33

大丈夫、そんな心配しなくても、aaaaasu さんはte2jiさんの指摘には耳を傾けませんし別に興味も持ってませんよ。この方は「良いシステムを作ろう」とか「良いプログラムを作ろう」なんて一切考えてません。 一連の発言を見たらわかるでしょう? aaaaasu さんが聞きたいのは「そんな細けぇことはどうでもいいからサクっとハリボテだけ完成させる答えを教えろ!」ってことです。te2jiさんみたいな回答は、質問者は求めていません。
退会済みユーザー

退会済みユーザー

2017/01/30 05:42

イイ反応ですw これで多分「PHPスクリプトとしてみた時、マイナスポイントが多くあり、問題を抱えている」ってことは伝わりそうです。 おつきあいありがとうございました。
aaaaasu

2017/01/30 05:54

今までのところまでは色んなとこから引っ張っては失敗して、を繰り返してようやくできたものなんですよね やりたくなくてもやらなくちゃいけない社会のために、、って感じで学校行きました
aaaaasu

2017/01/30 06:05

ただあったものを使ってできた!、となってたので確かに良いものは作ろうと考えていないかもですね nameとvalue入れたものを使ってもできなかったので質問をしたんですけど私の説明不足もあり理解できてもらえず少し馬鹿にする回答が見受けられたのでそのものがずれてしまいましたね、すみません 入力なしのエラーメッセージ等はログインや会員登録の時もしてるので後から入れるつもりだったのですが、それ関係なしに空だった場合何か必要なのですか? URLありがとうございます。みてみようと思います!
退会済みユーザー

退会済みユーザー

2017/01/30 06:41

入力がない場合、それを検証する仕組みを作っておかないと、システムとしてエラーを出してしまいます。そういったエラーが出ると、本来仕組みとして持って置かなければならないものを実装していないプログラムとして評価されます。モノによってはコスト的な観点で、ワザと実装しないようなものもありますが、今回のようなケースでは、最初から考えておくべきポイントです。 実装には、filter_input() を使用することが推奨されています。これは私も最近こちらで回答をいただき納得しました。興味があれば見て下さい。 https://teratail.com/questions/63786 公にするサイトでは、システムのエラー表示は設定で抑止しますが、今回のようにそれを評価対象として見るのであれば、未入力を検出しエラーとさせないための仕組みを実装することは必須です。 また、ここでは質問されていませんが、ログイン関係は、本来ハードルがとても高いものです。 現時点でコードに落とし込むところまで行うのは難しいと思いますが、読み物として、以下を参照して下さい。 http://qiita.com/ShibuyaKosuke/items/f114ffccf441edb2b745 私のお気に入りです。 正直、学習していない内容で卒業研究を完成させる違和感は拭えませんが、作るならちゃんとしたものを作り、評価をもらって下さい。
guest

0

inputタグにcheckedを入れるだけなのでは?

それと $go だの $des だの変数名のつけ方が最悪すぎて意味がわからないうえに解説コメントすら無いので、回答者から見たら読み解くのが大変です。

投稿2017/01/30 02:21

zico_teratail

総合スコア907

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

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

aaaaasu

2017/01/30 02:35

回答ありがとうございます。 説明不足ですみません。 $goは出発地 $desは到着地にしています yoyaku.phpで出発地→大阪、到着地→東京、クラス→エコノミー、日付を選んでいただき一致した時間料金をDBから取り出します while文で回した4つの中から1つを選択して時間料金をポストする方法がわかりません 回さなければわたしの知識でも足りるのですが....
zico_teratail

2017/01/30 02:47

(1):ユーザに出発地などをフォームから選んでもらう (2):選んだ選択肢に合致する時間と料金をDBから取り出す (3):(2)で取り出した時間・料金をユーザに表示する って流れですか? それなら何が分からないのかが分からないのですが。 HTMLを理解できているのならば、その時間と料金を普通に表示するだけでしょう? なぜDBから取り出したものをまたポストしたいと言っているのか意味がわかりません。
aaaaasu

2017/01/30 02:53

流れはその通りです 合致した時間料金が4種類あり、そこからお客様に選んだいただく、というものを作りたいです 出発地が大阪ではなく東京であればまた時間料金も変わるのでDBに入っている便情報を取り出しています
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問