- Home
- Categorie
- Coding e Sistemistica
- PHP
- Recuperare categorie da tabella risalendo al contrario con php
-
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 TABLEcategory
(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 KEYunique
(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
-
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)
-
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
-
Credo che alcune query ti servano di sicuro, se non vuoi salvare i risultati intermedi in variabili di sessione.