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

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

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

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

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

Q&A

解決済

3回答

2127閲覧

なぜ座席予約フォームは既に選択されている座席をもう一度選べないようにできるのか? 教えてください。

paras

総合スコア18

PHP

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

JavaScript

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

HTML

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

CSS

CSSはXMLやHTMLで表現した色・レイアウト・フォントなどの要素を指示する仕様の1つです。

0グッド

0クリップ

投稿2018/08/29 10:39

編集2018/08/29 10:55

###前提・実現したいこと

私は、webページ上で簡易的な座席予約システムを作成したいと考えています。
作成にあたり、
座席に見立てたボタンの配列の中で、希望の座席(ボタン)を選択し、決定ボタンを押すことで、リンク先のページで選択された座席(ボタン)の名前を確認できるようなプログラムは作成することができました。

1:座席選択ページで希望の座席を選ぶ
イメージ説明

2:選択された状態で確認ボタンを押す
イメージ説明

3:表示されたウィンドウのOKボタンを押し、リンク先のページで改めて選択された座席の番号を確認する。
イメージ説明

そこで、次は選択された座席のデータをもとに、同じ座席を選択できないように(複数の人が重複して座席を選択できないように)したいと考えています。

おそらくサーバー?かどこかに既に選択されている座席のデータを蓄積し、それを参照する必要があるかと思いますが
正直なところ、実現するために必要なモノやプラグラムについて、わかっていない状況です。。。

現在MANPを使用して上記の座席予約システムを作成しています。

###質問内容
ご質問としましては、送信されたデータ(座席ボタンのvalue)をもとに既に選択された座席を重複して選択できない(満席)ようにするために必要なモノ
また、実現するにあたり下記のプログラムに追加、修正すべきプログラムの内容について教えていただけると幸いです。
非常に大雑把で丸投げ気味な質問になってしまいますが、何分わからないことが多く、少しでもお知恵をお貸しいただけると幸いです。
よろしくお願いいたします。

###該当のソースコード
座席選択フォーム

lang

1<html> 2<head> 3<meta charset="utf-8"> 4<title>座席選択フォーム</title> 5</head> 6<body> 7<form method="get" action="座席確認フォーム.php" id="f1"> 8<input type="checkbox" name="c[]" id="cA-1" value="A-1"><input type="button" value="A-1" class="cx"> 9<input type="checkbox" name="c[]" id="cA-2" value="A-2"><input type="button" value="A-2" class="cx"> 10<input type="checkbox" name="c[]" id="cA-3" value="A-3"><input type="button" value="A-3" class="cx"> 11<input type="checkbox" name="c[]" id="cA-4" value="A-4"><input type="button" value="A-4" class="cx"> 12<input type="checkbox" name="c[]" id="cA-5" value="A-5"><input type="button" value="A-5" class="cx"><br> 13<input type="checkbox" name="c[]" id="cB-1" value="B-1"><input type="button" value="B-1" class="cx"> 14<input type="checkbox" name="c[]" id="cB-2" value="B-2"><input type="button" value="B-2" class="cx"> 15<input type="checkbox" name="c[]" id="cB-3" value="B-3"><input type="button" value="B-3" class="cx"> 16<input type="checkbox" name="c[]" id="cB-4" value="B-4"><input type="button" value="B-4" class="cx"> 17<input type="checkbox" name="c[]" id="cB-5" value="B-5"><input type="button" value="B-5" class="cx"><br> 18<input type="checkbox" name="c[]" id="cC-1" value="C-1"><input type="button" value="C-1" class="cx"> 19<input type="checkbox" name="c[]" id="cC-2" value="C-2"><input type="button" value="C-2" class="cx"> 20<input type="checkbox" name="c[]" id="cC-3" value="C-3"><input type="button" value="C-3" class="cx"> 21<input type="checkbox" name="c[]" id="cC-4" value="C-4"><input type="button" value="C-4" class="cx"> 22<input type="checkbox" name="c[]" id="cC-5" value="C-5"><input type="button" value="C-5" class="cx"><br><br> 23<input type="submit" value="確認"><br> 24</form> 25</body> 26</html>

lang

1<style> 2[name="c[]"]{display:none;} 3[name="c[]"]:checked + .cx{background-Color:yellow;} 4</style>

lang

1<script type="text/javascript"> 2 window.addEventListener('DOMContentLoaded', function(e){ 3 document.querySelector('#f1').addEventListener('submit',function(e){ 4 var c=[].map.call(document.querySelectorAll('[name="c[]"]:checked'),function(x){ 5 return x.value; 6 }).join(","); 7 if(c===""){ 8 alert("座席を選択してください。"); 9 e.preventDefault(); 10 }else{ 11 if(!confirm(c+" が選択されています。よろしいですか?")){ 12 e.preventDefault(); 13 } 14 } 15 }); 16 [].forEach.call(document.querySelectorAll('.cx'),function(x){ 17 x.addEventListener('click',function(e){ 18 var t=e.target; 19 var n=document.querySelector('#c'+t.value); 20 n.checked=!n.checked; 21 }); 22 }); 23}); 24 </script>

座席確認フォーム

lang

1 2<?PHP 3$c=filter_input(INPUT_GET,"c",FILTER_DEFAULT,FILTER_REQUIRE_ARRAY); 4if(!is_null($c)){ 5 print "選択された座席:".implode(",",$c)."<br>"; 6 7} 8?>

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

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

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

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

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

liveasnotes

2018/08/29 15:52

本題とは全く関係ないのですが,WindowsにはSnippingToolというスクショ用のツールがあります.これを使うと任意の範囲だけのスクショを保存することができます.画面全体のスクショだと文字が小さくなり,状況が分かりづらくなるので,範囲をしぼるかブラウザの表示を拡大してスクショすると良いです.ちなみにブラウザの表示拡大は「Ctrl」+「+(;)」,縮小は「Ctrl」+「-(=)」で出来ます.アプリのウィンドウ枠内のスクショだけ欲しい場合は(「Fn」+)「Alt」+「PrtScr」でもできます
guest

回答3

0

【図解付き】絶対わかる!WEBアプリケーション・サービスの仕組みとは?
まずはこのあたり読んでみるところからですかね...

投稿2018/08/29 13:08

spookybird

総合スコア1803

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

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

paras

2018/08/30 13:26

ありがとうございます 読ませていただきます
guest

0

ベストアンサー

自分だけが予約した情報をもてばいいならlocalStrageや
セッション、クッキーなどで保持すればいいでしょう
サーバー側にデータを保持するのであればファイルとして記録させるか
DBにデータを格納することになります

投稿2018/08/29 11:01

yambejp

総合スコア114777

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

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

paras

2018/08/30 13:26 編集

毎回ありがとうございます。 クッキーに保持する方向で作成しようと思います。 とりあえず上記のボタンのvalueをクッキーに保持させるプログラムと保持したデータを読み込むプログラムを作成しようと考えています
guest

0

実際に予約サイト等がどのような仕組みを用いているかまではわかりませんが、
質問者様がやりたいことを実現するには以下のようにすればいいかと。

・座席の選択状態をデータベースで保持する。
・次回の選択時にデータベースから座席の選択状態を取得し、既に選択されている座席を選択できないようにする。

「選択できないようにする」部分は、選択状態にある座席のボタンに対してdisabledを付与してあげればよいかと。

投稿2018/08/29 10:59

madoka9393

総合スコア992

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

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

paras

2018/08/30 13:25

ありがとうございます。 データベースはCookieを使用したいと思っています 選択できないようにする方法までわざわざありがとうございます!試してみます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問