2017-10-06 6 views
-1

EDITながら - SOLUTION:私は競争のスコアボードを表示するには、このコードを作っ
ながら最初前へ$sub = '';を移動しました。
最初の:すべてのカテゴリを取得します。
2回目:カテゴリからすべてのサブカテゴリを取得します。
3回目:サブカテゴリからすべてのレコードを取得します。
問題は次のとおりです。
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

を*最初の間はすべての結果が得られ、次に2番目の印刷ですか? - 何が印刷され、何が印刷されるのですか?あなたは例を見せてもらえますか? – Aydin4ik

+0

申し訳ありませんが、私は問題を編集した、それは間違っていた。本当に申し訳ありません。 –

+0

私がこれから得ることができるのは、あなたが 'SelectAllRecords()'メソッドを呼び出していないということです。とにかくあなたが投稿したものから少なくとも。 –

答えて

0

多分それは(代わりに、後でそれを処理する - これは、またはあなたのソフトウェアの場合であってもなくてもよい)バット変数の値を反映するようにクエリを再フォーマットするのに役立つ可能性があり: は交換してください

$ querysub = $ db-> query( "SELECT id、id_category、name FROM category_sub WHERE id_category = $ categoryid");

$ querysub = $ DB->クエリ( "category_subからID、id_category、名前を選択しid_category =" $の区分。);

そして

$記録= $ DB->クエリ(「IDとしてrecords.id SELECT、ライバル、カテゴリとしてcategory.name、サブカテゴリとしてcategory_sub.name、レコードなどcompetitor.nameを置き換えますアンプとしてアンプ、レコードプレーヤーとしてスピーカー、レコードはバッテリーとして、レコードはデシベル、デシベル、レコードは車としてFROMレコードLEFT JOINライバルONライバル.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ポイントASC ");

$レコード= $ DB->クエリ(「IDとしてrecords.id SELECT、ライバルとしてcompetitor.name、カテゴリーとしてcategory.name、サブカテゴリとしてcategory_sub.name、レコードを持つ

。アンプとしてアンプ、レコードをスピーカーとして、レコードはバッテリーとして、レコードはデシベルをデシベル、レコードは車としてFROMレコードLEFT JOINライバルONライバル.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ポイントASC」);

また、あなたは、この行の実行からコード全体を停止されています

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

はその反復を停止して次のを続行しbreakcontinueを置き換えます

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

を編集したので、あなたのコードを比較するためにコードを調べる必要がありますか?あなたはこの答えを説明する必要があります。 –

+0

最初の文章で私がしたことが説明されています。 – Aydin4ik

+0

@Aydin私は問題とコードを編集しました –

関連する問題