2017-10-06 31 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我编辑了问题和代码 –