Отображение подкатегории каждой категории из базы данных при наведении курсора на название категории в php и mysql - PullRequest
0 голосов
/ 10 июля 2020

Перебрав некоторые решения, представленные здесь, я все еще не мог понять это правильно. При наведении курсора на название категории выбирается и отображается только подкатегория последней категории.

    <div class="mega-menu-category">
      <ul class="nav">
        <!-- Other side-menu navs -->
        <?php $sql=mysqli_query($con,"SELECT id,categoryName FROM category");
         while($row=mysqli_fetch_array($sql))
          {
            ?>
          <li><a href="category.php?cid=<?php echo $row['id'];?>"><?php echo $row['categoryName'];?></a>
            <?php
            $getid = $row['id'];
            }?>
          <div class="wrap-popup column1">
            <div class="popup">
              <?php $sql=mysqli_query($con,"SELECT id, subcategory FROM subcategory WHERE categoryid= '$getid'");
               while($row=mysqli_fetch_array($sql))
                   {
                   ?>
              <ul class="nav">
                <li><a href="sub-category.php?scid=<?php echo $row['id'];?>"><?php echo htmlentities($row['subcategory']);?></a></li>
              </ul>
              <?php } ?>
            </div>

          </div>
        </li>

        <!-- used one  -->

      </ul>
    </div>

1 Ответ

2 голосов
/ 10 июля 2020

Вы использовали весь набор результатов внешнего запроса и не использовали его во внутреннем l oop.

Также следующей проблемой было бы использование одной и той же переменной для обоих запросов, как при запуске внутренний запрос, он уничтожит набор результатов для внешнего вида

<div class="mega-menu-category">
    <ul class="nav">
        <!-- Other side-menu navs -->
<?php 
$sql=mysqli_query($con,"SELECT id,categoryName FROM category");
while($row=mysqli_fetch_array($sql)) {
?>
        <li><a href="category.php?cid=<?php echo $row['id'];?>">
                <?php echo $row['categoryName'];?>
            </a>
<?php
//}  this causes the first loop to run to its end hence only one category processed
?>
            <div class="wrap-popup column1">
                <div class="popup">
<?php 
    // use different variable otherwise you will destroy the first resultset
    $sql1=mysqli_query($con,"SELECT id, subcategory 
                                FROM subcategory 
                                WHERE categoryid= '$row[id]'");
    while($row1=mysqli_fetch_array($sql1)){
?>
            <ul class="nav">
                <li>
                    <a href="sub-category.php?scid=<?php echo $row['id'];?>">
                        <?php echo htmlentities($row1['subcategory']);?>
                    </a>
                </li>
            </ul>
<?php 
    }  // end inner while
} // end outer while
?>
            </div>
        </div>
    </li>

    <!-- used one  -->
</ul>
</div>

Я должен упомянуть, что вы открыты для SQL Injection Attack . Даже , если вы экранируете входные данные, это небезопасно! Вам следует рассмотреть возможность использования подготовленных параметризованных операторов в API MYSQLI_ или PDO вместо объединенных значений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...