Elenco categorie con 3 multi livelli php mysql

di Anonimizzato31596 il
3 risposte
Buongiorno,
nel database ho tre tabelle per la registrazione delle categorie.
La prima tabella registra le categorie principali.
La seconda tabella registra le categorie secondarie che sono figlie di quelle principali.
La terza tabella registra le sottocategorie figlie di quelle secondarie.
<?php
/////////////////////////FIRST CATEGORY/////////////////////////////////
$sql_categoria = "SELECT category_id,category_name,category_url,metatit,metadesc,metakey,status FROM coupons_category WHERE status='A' order by category_name ASC";
$result_categoria = mysqli_query($conn, $sql_categoria);
if (mysqli_num_rows($result_categoria) > 0) {
    // output data of each row
    while ($row_categoria = mysqli_fetch_assoc($result_categoria)) {
        $category_name = $row_categoria["category_name"];
        $category_id = $row_categoria["category_id"];
        $category_url = $row_categoria["category_url"];

        ////////////SECOND CATEGORIES/////////////
        $sql_sotto_categoria = "SELECT * FROM coupons_category_sub WHERE status='A' and category_id=$category_id";
        $result_sotto_categoria = mysqli_query($conn, $sql_sotto_categoria);
        if (mysqli_num_rows($result_sotto_categoria) > 0) {
            while ($row_sotto_categoria = mysqli_fetch_assoc($result_sotto_categoria)) {
                $sub_category = $row_sotto_categoria["sub_name"];

                ////////////THIRD CATEGORIES/////////////
                $sql_sub_categoria = "SELECT * FROM coupons_category_sub_sub WHERE status='A' and category_sub_id=$sub_id ";
                $result_sub_categoria = mysqli_query($conn, $sql_sub_categoria);
                if (mysqli_num_rows($result_sub_categoria) > 0) {
                    while ($row_sub_categoria = mysqli_fetch_assoc($result_sub_categoria)) {
                        $sub_sub_categoryname = $row_sub_categoria["sub_sub_name"];
                    }
                } else {
                    echo "NO RESULT";
                }
            }
        } else {
            echo "NO RESULT";
        }
    }
} else {
    echo "NO RESULT";
}
/////////////////////////QUERY SELECT///////////////////////////////// 
?>
Ottenuti i risultati dovrei visualizzarli nel seguente menù :

<nav >
  <ul class="menu">
    <li><a href="/">1° Categoria madre</a>
      <ul class="submenu">
        <li><a href="/" class="submenu-link"> 2° Categoria figlia della 1°</a>
          <ul class="submenu">
        <li><a href="/">3° Categoria figlia della 2°</a></li>
      </ul>
        </li>
      </ul>
    </li>
  </ul>
</nav>
Quale metodo mi consigliate di utilizzare? Non sono molto esperto. Grazie!

3 Risposte

  • Devi fare una left join oppure se vuoi lasciare le tre query cos' quando fai ciclare la categoria crei un array e metti tutto dentro
  • Poi sinceramente bastava solo una tabella con un id autoincrementale e un campo dove memorizzare un json che conterrebbe tutto
  • Ok grazie mille per le dritte.
Devi accedere o registrarti per scrivere nel forum
3 risposte