EDIT - SOLUTION: Moved $sub = '';
to before the first while
I made this code to show a scoreboard of a competition.
The first while: Get all categories.
The second while: Get all subcategories from categories.
The third while: Get all records from subcategories.
The problem is:
If the first loop order by DESC it is printing only the first result and doing
the whiles to this category.
If i change to ASC it prints nothing.
NOTE: Not every subcategories have records.
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;
}
}