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

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

ただいまの
回答率

90.50%

  • PHP

    20360questions

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

  • MySQL

    5857questions

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

  • mysqli

    158questions

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

  • while

    77questions

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

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

受付中

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 940

aaaaasu

score 2

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

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

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

ソースコード(yoyaku.php)

<form method="post" action="yoyakukekka.php">
出発地<select name="go">
<option value="" selected>ご選択ください</option>
<option value="大阪">大阪(伊丹)</option>
<option value="東京">東京(成田)</option>
<option value="沖縄">沖縄(那覇)</option>
<option value="北海道">北海道(新千歳)</option>
</select>

到着地<select name="des">
<option value="" selected>ご選択ください</option>
<option value="大阪">大阪(伊丹)</option>
<option value="東京">東京(成田)</option>
<option value="沖縄">沖縄(那覇)</option>
<option value="北海道">北海道(新千歳)</option>
</select>

クラス<select name="class">
<option value="" selected>ご選択ください</option>
<option value="エコノミー">エコノミークラス</option>
<option value="ビジネス">ビジネスクラス</option>
</select>

搭乗日
<input type="text" id="datepicker" name="day">

搭乗者等省略、、、

<input type="submit" name="next" value="次へ">
</form>

ソースコード(yoyakukekka.php)

<?php
session_start();

$dsn = "mysql:dbname=yoyaku; host=127.0.0.1";
$user = "root";
$password = "";

try{
 $dbh = new PDO($dsn, $user, $password);
 $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 $dbh->query("SET NAMES utf8");

 $go    = $_POST["go"];
 $des   = $_POST["des"];
 $class = $_POST["class"];
 $day   = $_POST["day"];

 $_SESSION["GO"]    = $go;
 $_SESSION["DES"]   = $des;
 $_SESSION["CLASS"] = $class;
 $_SESSION["DAY"]   = $day;

 $sql  = 'select time,fare from plane where go=? AND des=? AND class=?';
 $stmt = $dbh->prepare($sql);
 $stmt->execute(array($go, $des, $class));

 } catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
    die();
}
?>
略、、、
<body>
<form action="yoyakucheck.php" method="submit">

<table>
<thead>
<tr>
<th>出発→到着(時間)</th>
<th>料金(1名様)</th>
<th>選択</th>
</tr>
</thead>

<tbody>
<?php while($result = $stmt->fetch()){ ?>
<tr>
<td><?= $result["time"]; ?></td>
<td><?= $result["fare"]; ?></td>
<td>ここがわかりません</td>
</tr>
<?php } ?>
</tbody>
</table>

<input type="submit" name="check" value="確認">
</body>

ソースコード(yoyakucheck.php)

<table>
<tr><td>選択した便情報をご確認ください。</td></tr>
<tr>
<td>出発地/到着地</td>
<td>搭乗日</td>
<td>搭乗時間</td>
<td>クラス</td>
<td>料金</td>
</tr>

<tr>
<td><?= $_SESSION["GO"]; ?>/<?= $SESSION["DES"]; ?></td>
<td><?= $_SESSION["DAY"]; ?></td>
<td></td> //時間を表示したい
<td><?= $_SESSION["CLASS"]; ?></td>
<td></td> //料金を表示したい
</tr>
</table>
<input type="submit" name="submit" value="お申込み">
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • kei344

    2017/01/30 12:00

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

    キャンセル

  • kei344

    2017/01/30 14:07

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

    キャンセル

  • aaaaasu

    2017/01/30 15:22

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

    キャンセル

回答 3

+3

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

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

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

<input type="hidden" value="出発">


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

// 出発とかの値はそもそもSESSIONにぶち込んでみる
// 検索のデータを
$go =
$des =
$_SESSION['search_date'] = [$go, $des];

// radioの部分は上と同じく時間を


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

// テーブルにIDとかがふってあるなら
<input type="radio" value="テーブルのID">

// にしておいて、次のページでもう一回データベースに接続して、IDを元にSELECTをかけて表示させる


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

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/30 11:58

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

    valueでbin1〜bin4として送信したとしても
    時間料金は確認画面にもっていくことはできなくないですか?

    勉強不足で申し訳ないです。

    キャンセル

  • 2017/01/30 12:26

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

    とりあえず、、、、

    キャンセル

  • 2017/01/30 12:43

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

    キャンセル

0

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

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/30 11:35

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

    説明不足ですみません。
    $goは出発地
    $desは到着地にしています
    yoyaku.phpで出発地→大阪、到着地→東京、クラス→エコノミー、日付を選んでいただき一致した時間料金をDBから取り出します

    while文で回した4つの中から1つを選択して時間料金をポストする方法がわかりません
    回さなければわたしの知識でも足りるのですが....

    キャンセル

  • 2017/01/30 11:47

    (1):ユーザに出発地などをフォームから選んでもらう
    (2):選んだ選択肢に合致する時間と料金をDBから取り出す
    (3):(2)で取り出した時間・料金をユーザに表示する

    って流れですか?
    それなら何が分からないのかが分からないのですが。
    HTMLを理解できているのならば、その時間と料金を普通に表示するだけでしょう?
    なぜDBから取り出したものをまたポストしたいと言っているのか意味がわかりません。

    キャンセル

  • 2017/01/30 11:53

    流れはその通りです

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

    キャンセル

0

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/01/30 11:44

    回答ありがとうございます。
    説明不足ですみません。
    1人目の返事の内容でもまだ足らないとは思うのですが見ていただきたいです

    inputでラジオボタンは表示させれます
    4つのボタンの中から一番上を選択したとして、その行の時間料金を次の確認画面にもっていか方法がわからないです


    公開等はするつもりありません
    php初心者が卒業研究のために作っているので。

    キャンセル

  • 2017/01/30 11:44

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

    キャンセル

  • 2017/01/30 12:12

    なんらかの卒業研究の結果をプレゼンテーションするため、表現ツールとして PHP を選んだということだと思いますが、PHP を使用して表現するにはスキルが足りていません。(ソースをネットから拾ってきている上、取捨選択も出来ていません。。。)

    プレゼンがいつなのか分かりませんが、多くても1ヶ月ぐらいしか余裕はないですよね?要件さえきちんと整理できていれば、フリーランサーにでも依頼するとイイです。あまり凝ったプレゼンをするのではなく、普通に論文でも書けば良い気もしますが。。。

    キャンセル

  • 2017/01/30 12:41

    情報系の学校なんですがわたしのクラスはphpなどは勉強せず簡単にhtmlを触るだけでした
    論文などは選べなく卒業研究で何か作らないといけないんです

    プロやプログラミングを職としている方からするとほんといらいらすると思うんですがこれでも一生懸命やってきました
    あとその時間料金を持っていくことができればチグハグでも完成は見えてるんです...

    キャンセル

  • 2017/01/30 12:47

    質問が更新されて全体像が見えましたが、これ自体が卒業研究なんですか?
    であれば、回答できませんし、正直こんな内容で卒業できることはないのではないかと。。。

    なにがしかの経路検索ロジックをプレゼンするとかそれに類することを想定していました。

    色々とひどいですね。。。

    キャンセル

  • 2017/01/30 13:00

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

    キャンセル

  • 2017/01/30 13:13

    えっ、情報系学校の卒業研究でこのレベル?
    3年間も学校に行った成果がこれ???

    だとしたらあなたのコンピュータ・センスが無さすぎるか、学校の教育カリキュラムが悪すぎるか、あるいはその両方です。厳しい言い方になりますが、お金と時間を無駄にしましたね。

    センスある人なら独学でゼロから始めても1~2ヶ月あればこれ以上のレベルに達すると思います。


    >わたしのクラスはphpなどは勉強せず簡単にhtmlを触るだけ

    じゃあ他に一体何を勉強したのでしょうか、情報系の学校なのに・・・

    キャンセル

  • 2017/01/30 13:27

    2年ですね。
    phpは一切触れてません。
    簿記とMOSと基本情報とかですね
    情報学校ですがビジネスの学科なので。別の学科はオラクル?とかjava、C言語もしてるそうですが

    やりたくてやってるわけじゃないです、とりあえず就職先は決まってるのでそれだけのために行ったようなものです

    キャンセル

  • 2017/01/30 13:44

    >簿記とMOSと基本情報

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

    キャンセル

  • 2017/01/30 14:00 編集

    なぜ学習していない内容が卒業研究テーマなのかよく分かりませんが、PHP スクリプトとしてマイナス評価を受けるポイントが多々含まれています。

    今のコードは見ていないですが、最初に見たスクリプトですぐに気になったのは下記です。

    ・$_POST が空だったときを想定していない。
    POSTを扱う時の最低限の処置です。通常は入力値確認も実施します。

    ・query("SET NAMES utf8")
    環境によりますが、脆弱性となる可能性があり、使用を推奨されていません。
    http://php.net/manual/ja/mysqlinfo.concepts.charset.php
    APIで指定する方法が推奨です。

    PHP スクリプトとして評価するのであれば、学習していないと証明しているようなスクリプトなので、私が評価者なら卒業させないです。

    > zico_teratail さん
    人の回答で煽るのやめてもらえないですかねぇ。
    それほど異論は無いですけど、こじれるので。

    キャンセル

  • 2017/01/30 14:14

    >人の回答で煽るのやめてもらえないですかねぇ

    そんなルールあるんですかねぇ。
    それほど異論は無いですけど、自由にコメントできるシステムなので。

    キャンセル

  • 2017/01/30 14:21

    ただのお願いですよ。
    こじれると、回答したいことが回答できないので。

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

    キャンセル

  • 2017/01/30 14:33

    大丈夫、そんな心配しなくても、aaaaasu さんはte2jiさんの指摘には耳を傾けませんし別に興味も持ってませんよ。この方は「良いシステムを作ろう」とか「良いプログラムを作ろう」なんて一切考えてません。
    一連の発言を見たらわかるでしょう?

    aaaaasu さんが聞きたいのは「そんな細けぇことはどうでもいいからサクっとハリボテだけ完成させる答えを教えろ!」ってことです。te2jiさんみたいな回答は、質問者は求めていません。

    キャンセル

  • 2017/01/30 14:42

    イイ反応ですw

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

    おつきあいありがとうございました。

    キャンセル

  • 2017/01/30 14:54

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

    キャンセル

  • 2017/01/30 15:05

    ただあったものを使ってできた!、となってたので確かに良いものは作ろうと考えていないかもですね
    nameとvalue入れたものを使ってもできなかったので質問をしたんですけど私の説明不足もあり理解できてもらえず少し馬鹿にする回答が見受けられたのでそのものがずれてしまいましたね、すみません

    入力なしのエラーメッセージ等はログインや会員登録の時もしてるので後から入れるつもりだったのですが、それ関係なしに空だった場合何か必要なのですか?
    URLありがとうございます。みてみようと思います!

    キャンセル

  • 2017/01/30 15:41

    入力がない場合、それを検証する仕組みを作っておかないと、システムとしてエラーを出してしまいます。そういったエラーが出ると、本来仕組みとして持って置かなければならないものを実装していないプログラムとして評価されます。モノによってはコスト的な観点で、ワザと実装しないようなものもありますが、今回のようなケースでは、最初から考えておくべきポイントです。

    実装には、filter_input() を使用することが推奨されています。これは私も最近こちらで回答をいただき納得しました。興味があれば見て下さい。
    https://teratail.com/questions/63786

    公にするサイトでは、システムのエラー表示は設定で抑止しますが、今回のようにそれを評価対象として見るのであれば、未入力を検出しエラーとさせないための仕組みを実装することは必須です。

    また、ここでは質問されていませんが、ログイン関係は、本来ハードルがとても高いものです。
    現時点でコードに落とし込むところまで行うのは難しいと思いますが、読み物として、以下を参照して下さい。
    http://qiita.com/ShibuyaKosuke/items/f114ffccf441edb2b745
    私のお気に入りです。

    正直、学習していない内容で卒業研究を完成させる違和感は拭えませんが、作るならちゃんとしたものを作り、評価をもらって下さい。

    キャンセル

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

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

  • PHP

    20360questions

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

  • MySQL

    5857questions

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

  • mysqli

    158questions

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

  • while

    77questions

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