I’m trying to create a categories list, where user will be able to choose item with certain category, but as soon as I’m opening any of the categories, where “soon = ‘2’”, there is only one item coming up. Everything else works.
The code bellow is for categories, where user can chose which caegory s/he want to see.
//navbar.php <!-- Categories --> <div class="dropdown-item menu_cat" type="button" id="catMenuButton"><i class="fas fa-caret-left"></i> Categories</div> <form method="POST" class="dropdown-menu dropleft categories_menu row" id="cat_dropdown"> <button class="dropdown-item" name="candle"> Candles</button> <button class="dropdown-item" name="cloth"> Clothes</button> <button type="submit"class="dropdown-item" name="tech"> Tech</button> </form>
Than here is everything else, that is suppose to exectute commands that will show products from category that user choose. The issue comes upp where ‘if($row[“soon”] == “2”)’ is.
//products.php <?php if(isset($_POST['candle'])){ $sql = "SELECT * FROM products WHERE category = 'candle'"; }else if(isset($_POST['cloth'])){ $sql = "SELECT * FROM products WHERE category = 'cloth'"; }else if(isset($_POST['tech'])){ $sql = "SELECT * FROM products WHERE category = 'tech'"; }else{ $sql = "SELECT * FROM products"; } $result = $conn->query($sql); if (!empty($result) && $result->num_rows > 0) { while ($row = $result->fetch_assoc()){ if($row["soon"] == "2"){ ?> <div class="product_card col-xl-3 col-lg-4 col-md-5 col-sm-12 box-shadow"> <div class="card-header"> <h3 class="product_name my-0 font-weight-normal"> <?php echo $row["productName"] ?> </h3> </div> <div class="card-body"> <h2 class="card-title pricing-card-title"> </h2> <img class="pic" src="productsImages<?php echo $row["productID"]; ?>.jpeg" height="150px" width="120px"></img> <br> <p> <?php echo $row["productPrice"]; ?> SEK </p> <a class="toProduct" href="products_index.php?id=<?php echo $row['productID'] ?>"> <div class="row"> <button class="btn_to_product btn btn-lg btn-outline-dark col-lg-10 col-md-10"> Go to product <i type="button" class="fas fa-arrow-alt-circle-right"></i></button> </div> </a> </div> </div> <?php }else if($row['soon'] == "1" && isset($_POST['tech']) || isset($_POST['candle'])){?> <div class="product_card col-xl-3 col-lg-4 col-md-5 col-sm-12 box-shadow"> <div class="card-header"> <h3 class="product_name my-0 font-weight-normal"> <?php echo $row["productName"] ?> </h3> </div> <div class="card-body"> <h2 class="card-title pricing-card-title"> </h2> <img class="pic_soon" src="productsImages/comingSoon.png" height="150px" width="120px"></img> <style> </style> <br> <p> <?php echo $row["productPrice"]; ?> SEK </p> <a class="toProduct" href="products_index.php?id=<?php echo $row['productID'] ?>"> <div class="row"> <button class="btn_to_product btn btn-lg btn-outline-dark col-lg-10 col-md-10"> Go to product <i type="button" class="fas fa-arrow-alt-circle-right"></i></button> </div> </a> </div> </div> <?php } } } else if(empty($result) || $result->num_rows == 0){ echo "<h2 class='col-12'> Sorry! </h2>"; echo "<h3 class='col-12'> There is not any product in this category yet! </h3>"; } $conn->close(); ?>
Advertisement
Answer
In the original post was duplicate $row = $result->fetch_assoc();
statement.
In updated post there is first condition out of the while
loop.
Solution bellow is wrapping all the if($row['soon']
into the while
loop:
<div class="card-deck col-lg-12 col-md-12 col-sm-12 justify-content-center text-center"> <?php if(isset($_POST['candle'])){ $sql = "SELECT * FROM products WHERE category = 'candle'"; }else if(isset($_POST['cloth'])){ $sql = "SELECT * FROM products WHERE category = 'cloth'"; }else if(isset($_POST['tech'])){ $sql = "SELECT * FROM products WHERE category = 'tech'"; }else{ $sql = "SELECT * FROM products"; } $result = $conn->query($sql); if (!empty($result) && $result->num_rows > 0) { while ($row = $result->fetch_assoc()){ if($row['soon'] == "1" && isset($_POST['tech']) || isset($_POST['candle'])){ echo "<h2 class='col-12'> Sorry! </h2>"; echo "<h3 class='col-12'> This product will be soon avaiable </h3>"; } if($row["soon"] == "2"){ ?> <div class="product_card col-xl-3 col-lg-4 col-md-5 col-sm-12 box-shadow"> <div class="card-header"> <h3 class="product_name my-0 font-weight-normal"> <?php echo $row["productName"] ?> </h3> </div> <div class="card-body"> <h2 class="card-title pricing-card-title"> </h2> <img class="pic" src="productsImages<?php echo $row["productID"]; ?>.jpeg" height="150px" width="120px"></img> <br> <p> <?php echo $row["productPrice"]; ?> SEK </p> <a class="toProduct" href="products_index.php?id=<?php echo $row['productID'] ?>"> <div class="row"> <button class="btn_to_product btn btn-lg btn-outline-dark col-lg-10 col-md-10"> Go to product <i type="button" class="fas fa-arrow-alt-circle-right"></i></button> </div> </a> </div> </div> <?php } } }else if($result->num_rows == 0){ echo "<h2 class='col-12'> Sorry! </h2>"; echo "<h3 class='col-12'> There is not any product in this category yet! </h3>"; } $conn->close(); ?> </div> } }else if($result->num_rows == 0){ echo "<h2 class='col-12'> Sorry! </h2>"; echo "<h3 class='col-12'> There is not any product in this category yet! </h3>"; } $conn->close(); ?> </div>
Recommendation: Always debug your scripts with enabled PHP Error Reporting!