2016-12-02 81 views
-1

我想獲得Deelnemers下的用戶列表:誰註冊了該課程。我不知道如何做到這一點現在已經嘗試了一段時間。數據庫看起來像下面的圖片。 database從登錄課程的用戶獲取信息

<?php 
session_start(); 
require_once('includes/mysql_config.php'); 
$id = isset($_SESSION['id']) ? $_SESSION['id'] : header('location: login.php'); 
$Cursist = mysqli_query($con, "SELECT id FROM users WHERE id =".$_SESSION['id']); 

require_once('header.php'); 
$cursus = mysqli_fetch_array(mysqli_query($con, "SELECT id FROM cursus WHERE id =".$_GET['id'])); 
?> 

<div class="container"> 
    <div class="row"> 
    <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1"> 
     <div class="post-preview"> 
      <h2 class="post-title"> 
      <?php echo $cursus['title'] . "<br />";?> 
      <?php echo $cursus['beginDatum'] . "<br />";?> 
      Deelnemers: 
      <?php 
      $sql = mysqli_fetch_array(mysqli_query($con, "SELECT * FROM users t WHERE EXISTS(SELECT * FROM aanmeldingen B WHERE t.id = b.user_id)")); 
      $amount = mysqli_affected_rows($con); 

      for ($i = 0; $i < $amount; $i++) { 
       $user = mysqli_fetch_array($sql); 

      echo $user['email']. "<br />"; 
      }?> 
      </h2> 
     </div> 
    </div> 
     </div> 
    </div> 

我怎樣才能得到這個工作,因爲我不知道如何做到這一點了

+0

那麼,什麼是錯誤,你期望從代碼中得到什麼?在查詢'SELECT * FROM users t WHERE EXISTS(SELECT * FROM aanmeldingen B WHERE t.id = b.user_id)'查詢,看起來像你試圖檢索用戶和它的相關cursus? –

+0

你是什麼意思與「Deelnemers」,我沒有看到它在你的代碼/數據庫中的那個詞。 – Grey

+0

@Luuk,它的代碼,使用Ctrl + F,起初我沒有找到它。 反正marjin,你可能需要參考[多對多關係](http://lornajane.net/posts/2011/inner-vs-outer-joins-on-a-many-to-many-關係) –

回答

0

你可以試試這個SQL

SELECT cursus.id, aanmeldingen.cursus_id, aanmeldingen.users_id, users.* 
FROM users INNER JOIN (cursus INNER JOIN aanmeldingen ON cursus.id = aanmeldingen.cursus_id) ON users.id = aanmeldingen.users_id 
WHERE cursus.id = 'ID number of the cursus'; 
  1. 表的cursus使得與aanmeldingen接觸
  2. Table aanmeldingen與用戶聯繫
  3. 通過WHERE的cursus ID =定ID號,我可以得到誰是給定的cursus
0

我會建議重新組織你的數據庫只有3桌成員的用戶的一個所有信息 - 用戶的cursus和cursusstudent。

用戶的電子郵件對每個用戶都是獨一無二的,這樣他們就可以將密碼用於登錄。

的cursus: DB_ID,cursus_id,naam_cursus,beschrijving,begindatum,cursussoort,prijs

cursusstudent: DB_ID,cursus_id,電子郵件 (這裏的email列不應該是唯一的,因爲一個學生可以在超過一個療程)

要獲得相關的cursus用戶列表:
1.查詢cursusstudent

$ sql_student_and_cursus_id = mysqli_query($康恩,「SELECT * FROM小人usstudent「);

//聲明列表變量的名稱
$ list =「」;

  1. 將cursus_id和電子郵件保存在while循環中。在循環內部,查詢當前cursus_id的cursus並查詢當前電子郵件的用戶。 獲取他們各自的naam_cursus和名稱。將它們保存在列表變量中。

如果(mysqli_num_rows($ sql_student_and_cursus_id)> 0){

而($行= mysqli_fetch_array(sql_student_and_cursus_id $)){

$cursus_id = $row['cursus_id']; 
$email = $row['email']; 

//收集的cursus名稱
$ query_cursus = mysqli_query($ conn,「SELECT naam_cursus FROM cursus WHERE cursus_id ='$ cursus_id'」);

如果(mysqli_num_rows($ query_cursus)> 0){

而($ row_cursus_naam = mysqli_fetch_array($ query_cursus)){

$naam_cursus = $row_cursus_naam['naam_cursus']; 

     } 
    } 

//收集的用戶名
$ query_users = mysqli_query ($ conn,「SELECT name FROM users WHERE email ='$ email'」);

如果(mysqli_num_rows($ query_users)> 0){

而($ row_naam_user = mysqli_fetch_array($ query_users)){

$naam_user = $row_naam_user['name']; 

     } 
    } 

//保存它們在列表中
$列表。 = $ naam_user。 ''。 $ naam_cursus; }

}

  • 顯示外循環列表:
  • 如果(isset($列表)){

    回聲$列表;

    }

    相關問題