2016-05-01 4 views
0

最も重要なのは!この質問の焦点は、最後のwhileループとそれに続く「結果テーブル」です。より大きなテーブルと、phpとmysqliで小さいテーブルを一致させよ。

まず、この例では、「Fredrik」という人物がログインしています。

私はsqlの2つのテーブル "classes"と "booking"を持っています。 "classes"はすべての利用可能なクラスを表示し、誰かがその特定のクラスのid(id_classes)を参照し、その人の名前がテーブル "bookings"の行として終わるとします。

classes 
id_class  date     day    
1   2016-03-10 15:00:00  monday 
2   2016-03-10 16:00:00  monday 
3   2016-03-10 17:00:00  monday 
4   2016-03-11 15:00:00  tuesday 
5   2016-03-11 16:00:00  tuesday 
6   2016-03-11 17:00:00  tuesday 
7   2016-03-11 18:00:00  tuesday 




bookings 
    id  id_class date     day   name  
    1  2   2016-03-10 16:00:00  monday  Fredrik 
    2  5   2016-03-11 16:00:00  tuesday  Richard 
    3  7   2016-03-11 18:00:00  tuesday  Sara 
    4  4   2016-03-11 15:00:00  tuesday  Fredrik 

それから私は、全体の「クラス」の表を経て、彼が予約していますし、どのようなクラス、彼が予約していないことをどのようなクラスの人(フレドリック)にログインを示すPHPコードをしたいです。私は簡単なwhileループといくつかのif文で始めました。私はこのコードを完成させるのに助けが必要です。さらに、これらのテーブルは両方とも非常に大きく、効率のアドバイスが大歓迎です。私はすべての後に沿っただから何

<?php 
     $result = $con->query("select * from classes"); 

     while(){ 

     if(){ 
      echo "Booked"; 

     }elseif(){ 
      echo "Not booked"; 

     }  

     } 
<? 

は、すべての

result table 
id_class  date     day  status   
1   2016-03-10 15:00:00  monday  not booked 
2   2016-03-10 16:00:00  monday  booked 
3   2016-03-10 17:00:00  monday  not booked 
4   2016-03-11 15:00:00  tuesday  booked 
5   2016-03-11 16:00:00  tuesday  booked 
6   2016-03-11 17:00:00  tuesday  not booked 
7   2016-03-11 18:00:00  tuesday  booked 

答えて

-1

ファーストのようなものです結果のテーブルです:クラスの日と日についてのあなたの情報が冗長である(同じ情報が存在しますclassesおよびbookings表内)。その冗長な情報をbookingsテーブルから削除します。

SELECT `c`.`date`, `c`.`day` FROM `bookings` AS `b` INNER JOIN `classes` AS `c` ON `b`.`id_class` = `c`.`id` WHERE `b`.`name` = '[loggedInUser]'; 

(!PDOプリペアドステートメントを使用してログインしたユーザ名、望ましいと[loggedInUser]を交換するか、少なくともmysqliでエスケープ)

+0

質問の主な目的である結果表を追加して質問を編集しました。私。 "クラス"テーブル内の利用可能な時間をすべて調べ、ユーザーがそれを予約したかどうかを知らせるテーブル。 – user5095266

-1

そして、例えば、このSQLクエリ(未テスト)を使用します

これを整理するためにPHPは必要ありません。この場合、左結合が必要です。

​​
+0

質問の主な目的である結果表を追加して質問を編集しました。私。 "クラス"テーブル内の利用可能な時間をすべて調べ、ユーザーがそれを予約したかどうかを知らせるテーブル。 – user5095266

関連する問題