2017-10-06 62 views
-1

編輯 - 解決方案::前而
我做了這個代碼來顯示比賽的記分牌第一位置移動到$sub = '';
第一次:獲取所有類別。
第二次:從類別中獲取所有子類別。
第三次:從子類別獲取所有記錄。
問題是:
如果通過DESC的第一個循環順序,它只打印第一個結果,並且在此類別中執行

如果我更改爲ASC,則不會打印任何內容。
注意:並非每個子類別都有記錄。
雖然內內,而同時

function SelectAllRecords() { 
    global $db; 
    try{ 
     $query = $db->query("SELECT id, name FROM category ORDER BY name DESC"); 
     while($category = $query->fetch(PDO::FETCH_ASSOC)) { 
      $categoryid = $category['id']; 
      $sub = ''; 
      $querysub = $db->query("SELECT id, id_category, name FROM category_sub WHERE id_category=".$categoryid); 
      while($subcategory = $querysub->fetch(PDO::FETCH_ASSOC)) { 
       if(!is_numeric($subcategory['id'])){ 
        continue; 
       }else{ 
        $subcategoryname = $subcategory['name']; 
        $sub .='<h2>'.$category['name'].'</h2> 
         <div class="widget-box"> 
          <div class="widget-title"> <span class="icon"><i class="icon-th"></i></span> 
           <h5>'.$subcategory['name'].'</h5> 
          </div> 
          <div class="widget-content nopadding"> 
           <table class="table table-bordered data-table" id="tabledata"> 
            <thead> 
             <tr> 
              <th class="columnadjust">Código</th> 
              <th>Competidor</th> 
              <th class="columnadjust">Ações</th> 
             </tr> 
            </thead> 
            <tbody id="tablecontent"> 
        '; 
        $record = $db->query("SELECT records.id as id, competitor.name as competitor, category.name as category, category_sub.name as subcategory, records.amplifier as amplifier, records.speaker as speaker, records.battery as battery, records.decibels as decibels, records.car as car FROM records LEFT JOIN competitor ON competitor.id = records.id_competitor LEFT JOIN category ON records.id_category = category.id LEFT JOIN category_sub ON records.id_subcategory = category_sub.id WHERE category_sub.name = '".$subcategoryname."' ORDER BY points ASC"); 
        while($records = $record->fetch(PDO::FETCH_ASSOC)) { 
         if(!is_numeric($records['id'])){ 
          $sub .= '<tr class="gradeX"></tr>'; 
         }else{ 
          $sub .= ' 
          <tr class="gradeX"> 
           <td class="columnadjust">'.$records['id'].'</td> 
           <td>'.$records['competitor'].'</td> 
           <td class="columnadjust"> 
            <a data-id="'.$records['id'].'" title="Editar" class="itemedit btn btn-warning btn-mini">Editar</a> 
           </td> 
          </tr>'; 
         } 
        } 
        $sub .= '</tbody></table></div></div>'; 
       } 
      } 
     } 
     $result = $sub; 
     echo $result; 
     return true; 
    } catch (PDOException $pe) { 
     return false; 
    } 

} 
+0

*首先是產生一切,然後再打印第二?* - 打印什麼,打印什麼?你能舉一個例子嗎? – Aydin4ik

+0

對不起,我編輯了這個問題,這是錯誤的。真的很抱歉 –

+0

所有我可以從這裏得到的是,你沒有調用你的'SelectAllRecords()'方法;至少從你張貼的東西。 –

回答

0

也許它可以幫助重新格式化查詢,以反映變量值蝙蝠(而不是稍後處理它們 - 這可能會或可能不會在你的軟件的情況下): 更換

$ querysub = $ db-> query(「SELECT id,id_category,name FROM category_sub WHERE id_category = $ categoryid」);

$ querysub = $ DB->查詢( 「選擇ID,id_category,姓名FROM category_sub WHERE id_category =」 $類別ID);

而更換

$記錄= $ DB->查詢(「選擇records.id爲ID,competitor.name作爲競爭對手,category.name類別,如category_sub.name子類別,記錄放大器作爲放大器,records.speaker作爲揚聲器,record.battery作爲電池,records.decibels作爲分貝,records.car作爲汽車FROM記錄LEFT JOIN競爭對手ON competitor.id = records.id_competitor LEFT JOIN類別ON記錄.id_category = category .id LEFT JOIN category_sub ON records.id_subcategory = category_sub.id WHERE category_sub.name ='。$ subcategoryname。'ORDER BY points ASC「);

$記錄= $ DB->查詢(「選擇records.id爲ID,competitor.name作爲競爭對手,category.name類別,如category_sub.name子類別,記錄。放大器作爲放大器,records.speaker作爲揚聲器,record.battery作爲電池,records.decibels作爲分貝,records.car作爲汽車FROM記錄LEFT JOIN競爭者ON competitor.id = records.id_competitor LEFT JOIN類別ON records.id_category = category。 id LEFT JOIN category_sub ON records.id_subcategory = category_sub.id WHERE category_sub.name ='「。$ subcategoryname。「'ORDER BY points ASC」);

而且,你是從執行在這一行停止整個代碼:

if(!is_numeric($subcategory['id'])){ 
    continue; 
} 

更換continuebreak只停止該迭代,並繼續與下一個:

if(!is_numeric($subcategory['id'])){ 
    break; 
} 
+1

,所以我們需要通過你的代碼來比較你做了什麼?你需要解釋這個答案。 –

+0

第一句解釋我做了什麼。 – Aydin4ik

+0

@Aydin我編輯了問題和代碼 –