简体   繁体   中英

How to display fetched results into 2 different group of divs from one inner-join-where query?

I'm having troubles displaying results into different divs.

I have this html code:

<div class="grid_10 alpha omega">
<div class="grid_5 alpha paddingtop10">
<div class="grid_5" id="titlescontent"><p class="titlebar">Subcat 1</p></div>
<div class="clear"></div>
<div class="grid_5" id="content"><p>Subsubcategories 1</p></div>
<div class="clear"></div>
</div>
<div class="grid_5 omega paddingtop10">
<div class="grid_5" id="titlescontent"><p class="titlebar">Subcat 2</p></div>
<div class="clear"></div>
<div class="grid_5" id="content"><p>Subsubcategories 2</p></div>
<div class="clear"></div>
</div>
<div class="grid_5 alpha paddingtop10">
<div class="grid_5" id="titlescontent"><p class="titlebar">Subcat 3</p></div>
<div class="clear"></div>
<div class="grid_5" id="content"><p>Subsubcategories 3</p></div>
<div class="clear"></div>
</div>
<div class="grid_5 omega paddingtop10">
<div class="grid_5" id="titlescontent"><p class="titlebar">Subcat 4</p></div>
<div class="clear"></div>
<div class="grid_5" id="content"><p>Subsubcategories 4</p></div>
<div class="clear"></div>
</div>

etc ...

</div>
<div class="clear"></div>

I'm using the 960grid system and alpha class is clearing 5px padding to the left while omega is clearing 5px padding to the right. The other classes are just for colors except of paddingtop10.

This is my php code structure I was trying to implement into my html:

if ($stmt = mysqli_prepare($connect, "SELECT subcategories.subcat_name, subsubcategories.subsubcat_name, subcategories.subcat_ID FROM subcategories INNER JOIN subsubcategories ON subcategories.subcat_ID=subsubcategories.subcat_ID WHERE subcategories.cat_ID = ? OR subcategories.extra_cat_ID = ? ORDER BY subcategories.subcat_name, subsubcategories.subsubcat_name ASC")){
mysqli_stmt_bind_param($stmt, "ii", $cat_ID, $cat_ID);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $subcat_name, $subsubcat_name, $subcat_ID);
$lastcat = 0;
while (mysqli_stmt_fetch($stmt)){
    if($lastcat != $subcat_ID){
        $lastcat = $subcat_ID;
        echo "<br>"; 
        echo $subcat_name;
        echo "<br>";
        echo "<br>";
        }

    echo $subsubcat_name;
    echo "<br>";
    }
}

I want to generate the alpha and omega divs through php but I'm not sure how to do this. I tried this code but it doesn't give me the right result like I want shown in my html example code:

if ($stmt = mysqli_prepare($connect, "SELECT subcategories.subcat_name, subsubcategories.subsubcat_name, subcategories.subcat_ID FROM subcategories INNER JOIN subsubcategories ON subcategories.subcat_ID=subsubcategories.subcat_ID WHERE subcategories.cat_ID = ? OR subcategories.extra_cat_ID = ? ORDER BY subcategories.subcat_name, subsubcategories.subsubcat_name ASC")){
mysqli_stmt_bind_param($stmt, "ii", $cat_ID, $cat_ID);
mysqli_stmt_execute($stmt);
mysqli_stmt_bind_result($stmt, $subcat_name, $subsubcat_name, $subcat_ID);
$lastsubcat = 0;
while (mysqli_stmt_fetch($stmt)){
    echo '<div class="grid_5 alpha paddingtop10">';
    echo '<div class="grid_5" id="titlescontent"><p class="titlebar">';
    if($lastsubcat != $subcat_ID){
        $lastsubcat = $subcat_ID;
        echo $subcat_name;
        }
    echo '</p></div>';
    echo '<div class="clear"></div>';
    echo '<div class="grid_5" id="content"><p>';
    echo $subsubcat_name;
    echo '</p></div>';
    echo '<div class="clear"></div>';
    echo '</div>';
    echo '<div class="grid_5 omega paddingtop10">';
    echo '<div class="grid_5" id="titlescontent"><p class="titlebar">';
    if($lastsubcat != $subcat_ID){
        $lastsubcat = $subcat_ID;
        echo $subcat_name;
        }
    echo '</p></div>';
    echo '<div class="clear"></div>';
    echo '<div class="grid_5" id="content"><p>';
    echo $subsubcat_name;
    echo '</p></div>';
    echo '<div class="clear"></div>';
    echo '</div>';
    }
}

Any idea how I need to make this work?

Thank you for any help!

The only thing I can think of is to use a counter to track when you're in the first or last iteration. This would work even if the loop has only one item.

$values = mysqli_stmt_fetch($stmt);
$i = 0;
$len = count($values);
while ($values) {
    $i++;
...
    if ($i == 1) {
        // add alpha class
    } 
...
    if ($i == $len) {
        // add omega class
    }
}

Does that spark any ideas for you?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM