2015-12-28 3 views
0

Я разрабатываю webservice для and android app webservice в PHP, получая данные из базы данных MySQL ... Проблема, с которой я сталкиваюсь, заключается в том, что некоторые из проектов имеют несколько деталей, но мой код только получение одной детали для каждого проекта. Я получаю данные в формате JSON.Вложенные While Loop не работает

Вы можете проверить это Here

Вот мой код

function requiredData(){ 

    $db = $this->dbConnection(); 
    //$sql = "SELECT * FROM projects JOIN project_details ON projects.project_id=project_details.project_id"; 
    $sql = "SELECT * FROM projects"; 

    $queryResult = $db->query($sql); 

     if($queryResult->num_rows > 0){ 

      while($row = $queryResult->fetch_assoc()){ 

       $pid = $row['project_id']; 
       $detailsql = "SELECT * FROM project_details WHERE project_id=$pid"; 
       $sqlResult = $db->query($detailsql); 
       if($sqlResult->num_rows > 0){ 
        while ($d = $sqlResult->fetch_assoc()){ 
         $r = array(
          "project_id" => $d['project_id'], 
          "project_detail" => array(
           "work_done" => $d['project_detail'], 
           "payment_for_work" => $d['project_payment'], 
           "payment_status" => $d['project_payment_status'], 
           "detail_id" => $d['project_detail_id'] 
          ) 
         ); 
        } 
       } 
       $results[$row['project_name']] = array(
        "project_id" => $row["project_id"], 
        "project_start_date" => $row["project_start_date"], 
        "project_due_date" => $row["project_due_date"], 
        "project_currency" => $row["project_currency"], 
        "project_work_details" => $r 
       ); 


      } 
     } 
     return $results; 
} 

Заранее спасибо за помощь

+0

Что? Я проверил указанную вами ссылку, она показывает несколько проектов. Что именно вы хотите? – Umair

+0

Некоторые из проектов имеют несколько project_details ... но в настоящее время один показывает ... например, проект id 20 имеет несколько массивов project_detail ,,, но есть только одно отображение ... – FaISalBLiNK

ответ

0

Проблема заключается во втором while цикле. Вы назначаете массив $r, а значение $r каждый раз перезаписывается.

Итак, я назначаю теперь массив другому массиву, поэтому он станет 2-мерным массивом, как это;

   while ($d = $sqlResult->fetch_assoc()){ 
        $r[] = array(
         "project_id" => $d['project_id'], 
         "project_detail" => array(
          "work_done" => $d['project_detail'], 
          "payment_for_work" => $d['project_payment'], 
          "payment_status" => $d['project_payment_status'], 
          "detail_id" => $d['project_detail_id'] 
         ) 
        ); 
       } 

Теперь вы можете использовать $r, он будет иметь несколько деталей проекта.

+0

Я уже тестировал это, когда использую $ r [] Я получаю бесконечный цикл ... Я отредактировал код и заменил $ r на $ r [] для вашего ... http://projects.base29.com/webservice/?q=projects – FaISalBLiNK

+0

Использование '$ r []', нет ничего, что может привести к бесконечному циклу. Похоже, в вашей базе данных слишком много записей. Пробовали ли вы это, ограничив запрос на выбор проектов? – JazyK

+0

Хм .. Не пробовали ограничивать записи ... Не пришло мне в голову .. Попробуй и дам вам знать ... – FaISalBLiNK