2015-08-16 3 views
0

У меня есть цикл while, который должен сначала получить individual_id из таблицы, называемой submitresume, с помощью job_id, которая получена из другой функции. Затем он будет использовать этот идентификатор в другом цикле, чтобы получить first_name и last_name из отдельной таблицы. Затем он использовал бы другой цикл while, чтобы получить submitted_id из представленной таблицы резюме.Пока цикл не возвращает правильный вывод при вложенном

Я разделил первый и последний цикл while, чтобы получить различные значения с выхода.

My first while цикл. Сначала он получает individual_id из таблицы, называемой submitresume, используя job_id, которую он получает от другой функции. Это дает мне правильный выход двух идентификаторов пользователя: 9 и 4.

global $database; 
    $query = "SELECT DISTINCT individual_id FROM submittedresume WHERE job_post_id='$id'"; 
    $output = $database->query($query); 
    while ($row = mysqli_fetch_array($output)) { 
     $indvId = $row[0]; 
    } 

Это второй внутренний цикл. Это дает мне результат Мэри Джейн («Нет повторения») и Том Сойер.

$indvId = $row[0]; 
     $sql = "SELECT * FROM individual WHERE individual_id='$indvId'"; 
     $result = $database->query($sql);     
     while ($details = mysqli_fetch_array($result)) { 
      $first = $details['first_name']; 
      $last = $details['last_name']; 
      echo $first; 
      echo $last; 
     } 

Это вся моя функция:

public function displayApplications($id){ 
    global $database; 
    $query = "SELECT DISTINCT individual_id FROM submittedresume WHERE job_post_id='$id'"; 
    $output = $database->query($query); 
    while ($row = mysqli_fetch_array($output)) { 
     $indvId = $row[0]; 
     $sql = "SELECT * FROM individual WHERE individual_id='$indvId'"; 
     $result = $database->query($sql);     
     while ($details = mysqli_fetch_array($result)) { 
      $first = $details['first_name']; 
      $last = $details['last_name']; 
      $sqlquery = "SELECT DISTINCT resume_title FROM submittedresume WHERE individual_id='$indvId' order by submitted_id"; 
      $data = $database->query($sqlquery); 
      if (mysqli_num_rows($data) == 0) { 
        echo "Database is empty <br>"; 
       } else { 
        while (($name = mysqli_fetch_array($data))) { 
          echo $first . " " . $last . " "."<a href=handleDownload.php?id=$id>$name[0]</a><br>"; 
         } 
        } 
     } 
    } 
} 

Это то, что я получаю сейчас:

first_name | last_name | resume_name 
Mary  | Jane  | resume_1 
Mary  | Jane  | resume_2 

Это то, что я ищу:

first_name | last_name | resume_name 
Mary  | Jane  | resume_2 
Tom  | Sawyer | resume_1 
+0

вам нужно переписать ваши запросы и использовать 'JOIN' вместо – CodeGodie

ответ

2

Я думаю, что после того, как while использования foreach цикл:

Например:

$query = "SELECT DISTINCT individual_id FROM submittedresume WHERE job_post_id='$id'"; 
$output = $database->query($query); 
$details = mysqli_fetch_array($result); 

foreach($details as $key => $value){ 
     echo 'Key: '. $key . ' '. 'Value: '. $value; 
} 
+0

Я получаю двойной вывод при использовании foreach. Есть ли способ удалить двойники? Ключ: 0 Значение: 4Key: individual_id Значение: 4Key: 0 Значение: 9Key: individual_id Значение: 9 –

+0

Я обновил свой ответ. Я предполагаю, что это неправильно использовать в цикле 'foreach', потому что' while' перебирает все данные, которые запрашивают – aldrin27

0

$indvId = $row[0]; возвращает 1-й пункт в Результат массив

лично я бы использовать цикл Еогеасп, но вы могли бы сделать это так, как вы его путем добавления счетчика, а именно: $count = 0; перед петлей и $count++; внутри цикла и $indvId = $row[$i];

+0

метод Еогеасп s интересные интересные статьи. Если бы я использовал foreach, как бы мне это сделать? –

+0

можете ли вы отправить print_r ($ output), чтобы я мог видеть, как выглядит массив? – Dug

Смежные вопросы