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

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

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

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

PHP

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

HTML

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

Q&A

4回答

2489閲覧

何時から何時までの期間を求めたい

Xenoverse

総合スコア11

MySQL

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

PHP

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

HTML

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

0グッド

0クリップ

投稿2016/09/13 03:04

編集2016/09/13 04:11

PHPとHTMLとMySQLを使用して予約システムを制作しているのですが、ID1の人が何月何日から何月何日までを予約している間はその後のIDの人はその時間内だけ予約できないシステムを作りたいのですが、その予約している期間を出すにはどうすれば求められますか?

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

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

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

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

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

guest

回答4

0

DBを用いて予約重複チェックを実装する場合、
考え方としては恐らくこちらのQAのやり取りが役に立つでしょう。

投稿2016/09/13 03:39

Panzer_vor

総合スコア1636

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

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

0

yambejpさんの、ユーザ変数を使った方法ですが

MySQLのマニュアルと
OracleACEのAketiJyuuzouさんとyoku0825さんと
日本オラクルの木村明治さんによると
1ステートメントでユーザ変数を複数回使用した場合の
ユーザ変数の評価順序は未定義です。
http://qiita.com/AketiJyuuzou/items/cced9b70cc714b382d98

具体的には、
@a:='2016-09-02' @b:='2016-09-03'
が一番最初に評価されることが保証されませんので、
1行もInsertされない可能性があります。

結果が保証されないといえば、
OrderBy句がないと出力順が保証されないのは有名ですね。

投稿2016/09/13 09:20

tamako

総合スコア120

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

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

yambejp

2016/09/13 12:12

なるほど 経験上問題ないはずですが、正式にはサポートされてないと考えたほうが良さそうですね 連番を得る際 select @a:=@a+1 from(select @a:=0) as dummy なんて書き方はよく知られたテクニックですがこれも怪しいですね
guest

0

予約を登録する際に既に登録されている予約データ(IDの大小も関係するならそれも)をチェックし、

  • 期間内の予約がなければそのまま登録する
  • 期間内の予約があればエラー画面を出力して予約データは登録しない

のように処理すれば良いかと思います。
処理の分岐はif文を使えばできます。

投稿2016/09/13 03:38

KaedeKazane

総合スコア408

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

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

0

すでにある予約がAからBまでで、新しい予約がCからDまでの時
競合させない場合は、以下のどちらか

  • B<C
  • D<A

SQLでやると楽だと思います

サンプル

SQL

1create table yoyaku(id int not null primary key auto_increment,fdate date , tdate date); 2insert into yoyaku (fdate,tdate) values('2016-09-01','2016-09-01'),('2016-09-05','2016-09-07'),('2016-09-10','2016-09-11'),('2016-09-20','2016-09-25'); 3

上記に仮に9/2~9/3を挿入する場合以下のようにしてください

SQL

1insert into yoyaku (fdate,tdate) 2select @a,@b from (select @a:='2016-09-02',@b:='2016-09-03') as dummy 3where 0=(select count(*) from yoyaku where @a<=tdate and @b>=fdate) and @a<=@b;

あとは@aと@bに代入する値をいろいろ変えてテストしてみてください

投稿2016/09/13 03:33

編集2016/09/13 04:53
yambejp

総合スコア114843

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問