• User

    Recuperare categorie da tabella risalendo al contrario con php

    Buonasera.
    Ho una tabella unica nella quale inserisco le categorie e infinite sotto categorie. Ho voluto provare questo metodo utilizzando una sola tabella ma sto avendo non poche difficoltà. La tabella è così strutturata:

    [PHP]
    123456789CREATE TABLE category ( category_id int(10) unsigned NOT NULL AUTO_INCREMENT, category_name varchar(50) COLLATE latin1_general_ci NOT NULL, category_link varchar(255) COLLATE latin1_general_ci NOT NULL, parent_id int(10) unsigned NOT NULL DEFAULT '0', sort_order int(11) NOT NULL DEFAULT '0', PRIMARY KEY (category_id), UNIQUE KEY unique (category_name)) ENGINE=InnoDB AUTO_INCREMENT=12 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;[/PHP]

    Ho trovato questo metodo utile in quanto ti permette di creare infinite sotto categorie e allegato all'esempio c'era anche il codice per generare il menù. Tutto funziona benissimo ma il problema nasce quando devo risalire dall'ultima sottocategoria alla prima.

    Qualcuno può aiutarmi?

    grazie mille


  • User Attivo

    Aiutarti a far che? Mica l'ho capito cosa chiedi... forse è colpa mia.
    Cosa hai provato a fare e ti è riuscito? (posta il codice)
    Cosa hai provato a fare e non ti è riuscito? (posta il codice)
    Quale dovrebbe essere il risultato finale? (metti un esempio)


  • User

    Ciao!!! Grazie per la risposta!!!
    Hai ragione forse mi sono spiegato male io.

    Volevo postare il link ma non me lo fa postare.

    Ad esempio ho un articolo scritto nella categoria "personaggi" che appartiene a una sotto categoria "rinascimento" che a sua volta appartiene alla categoria "storia".
    Il problema è che non riesco a formare, nella pagina dell'articolo, la posizione quindi:

    Storia -> Rinascimento -> Personaggi

    e collegarci un link.

    Attualmente sono riuscito a farlo, ma non sono sicuro del funzionamento, con almeno 3 query.

    [PHP]<?php $secondolivello = "select * from category where category_id=".$rowcat['parent_id'].""; $rissecondolivello=mysqli_query($conn,$secondolivello); $rowsecondolivello = mysqli_fetch_assoc($rissecondolivello); $terzolivello = "select * from category where category_id=".$rowsecondolivello['category_id'].""; $risterzolivello=mysqli_query($conn,$terzolivello); if($risterzolivello) { $rowterzolivello = mysqli_fetch_assoc($risterzolivello); $primolivello = "select * from category where category_id=".$rowterzolivello['parent_id'].""; $risprimolivello=mysqli_query($conn,$primolivello); $rowprimolivello = mysqli_fetch_assoc($risprimolivello); } if($risterzolivello) { echo "<a href='".baseurl."/categoria/".$rowprimolivello['category_name_'.$SESSION['language'].'']."/".$rowprimolivello['category_id']."-".$rowprimolivello['category_link'.$SESSION['language'].''].".html'>".$rowprimolivello['category_name'.$SESSION['language'].''].'</a>'; // Primo livello echo " <i class='fa fa-chevron-right'></i> <a href='".baseurl."/categoria/".$rowsecondolivello['category_name'.$SESSION['language'].'']."/".$rowsecondolivello['category_id']."-".$rowsecondolivello['category_name'.$SESSION['language'].''].".html'>".$rowsecondolivello['category_name'.$SESSION['language'].'']." </a><i class='fa fa-chevron-right'></i> "; // Secondo livello }
    if($rowsecondolivello['category_name
    '.$SESSION['language'].'']!="") echo "<a href='".baseurl."/articoli/".$rowsecondolivello['category_name'.$SESSION['language'].'']."/".$rowcat['category_id']."-".$rowcat['category_name'.$SESSION['language'].''].".html'>".$rowcat['category_name'.$SESSION['language'].'']."</a>"; // 3 livello else echo "<a href='".baseurl."/articoli/".$rowcat['category_link'.$SESSION['language'].'']."/".$rowcat['category_id']."-".$rowcat['category_link'.$SESSION['language'].''].".html'>".$rowcat['category_name'.$_SESSION['language'].'']."</a>"; // 3 livello
    ?>
    [/PHP]

    Grazie
    Lorenzo


  • User Attivo

    Credo che alcune query ti servano di sicuro, se non vuoi salvare i risultati intermedi in variabili di sessione.