menu dinamico a tendina con database

  • Creatore Discussione Creatore Discussione joseph
  • Data di inizio Data di inizio

joseph

Nuovo Utente
8 Nov 2010
20
0
0
Ciao a tutti,

avrei bisogno di una mano a realizzare un menu a tendine che preleva i links da un database. Riesco a richiamare i menu principali, ma quando si tratta di richiamare i link di una delle voci a tendina, come l'img
menu-.jpg

mi trovo in difficoltà perchè non capisco che logica usare.

Ho creato due tabelle. Indicando l'essenziale sono strutturate cosi:

TABELLA MENU LINK PRINCIPALI: idLink, nomeLink, Tendina (valore "Y" oppure "N")

TABELLA MENU LINK TENDIA: id, idLink, nomeLink,Tendina

Supponendo che il menu sia strutturato in questo modo:
PHP:
<ul>
<li><a href="home.php">Home</a><li>
<li><a href="prova.php">Link con tendina</a>
<ul>
<li><a href="Tendinalink1.php">Link1</a></li>
<li><a href="Tendinalink12.php">Link2</a></li>
</ul>
</li>
</ul>

Qualcuno mi sa dare una mano su come interrogare il DB e visualizzare i risultati nel menu. Non inserisco le mie prove perchè probabilmente sono del tutto fuorvianti o incorrette nella procedura.

Grazie in anticipo
 
Ultima modifica:
ciao
se non ho capito male quello che intendi, questo puo essere un esempio

PHP:
<?php
//qui i dati di connessione al db
?>
<!-- ecc..... -->
<ul> 
<li><a href="home.php">Home</a><li> 
<li><a href="prova.php">Link con tendina</a> 
<ul>
<?php
$result=mysql_query("SELECT * FROM menu_link_tendia WHERE tendina='Y' ORDER BY nomeLink";
while($riga=mysql_fetch_array($result)){
echo "<li><a href=\"".$riga['idLink']."\">".$riga['nomeLink']."</a></li>";
}
?>
</ul> 
</li> 
</ul>  
<!-- ecc..... -->
 
un controllino giusto per non generare errori in caso di campi vuoti:
PHP:
<?php
$result=mysql_query("SELECT * FROM menu_link_tendia WHERE tendina='Y' ORDER BY nomeLink";
if(mysql_num_rows($result)>0)
 {
 while($riga=mysql_fetch_array($result)){
 echo "<li><a href=\"".$riga['idLink']."\">".$riga['nomeLink']."</a></li>";
 }
}
?>
 
perfetto ma credo manchi una cosa

Grazie Borgo Italia e Eliox,

L'esempio è ottimo. Ma come faccio con i link (in questo caso) HOME - LINK CON TENDINA?

anche questi li devo prelevare dal database.
1 Posso con una sola querry fare tutto?
2 devo farne due di query?
3 se devo farne due come integro la seconda all'esempio che mi hai appena fatto?
 
ciao
alcune cose se non ho capito male:
con LINK CON TENDINA intendi la voce principale a cui sotto si elencano alcune delle voci secondarie?
le due tabelle sono collegate tramite il campo idLink? cioè ad un record della prima tabella cin id=idLink si collegano più record della seconda tramite il campo idLink?
es
in tapella principale
1 pinco
2 pallo
ecc..
nella secondaria
1 1 pinco uno
2 1 pinco due
3 1 pinco tre
4 2 pallo uno
5 2 pallo due
ecc..
è così?
se è così secondo me nella tabella secondaria manca il vero link cioe a cosa devi andare cliccando sulla voce.
comunque è fattibile, però devi avere un po' di pazienza sono via per qualche giorno

p.s.
a che ti serve avere nel db la voce home? quante home hai? di solito è una
 
scusa spiego meglio

Scusa Borgo Italia, hai ragione. Ora spiego tutto in dettaglio così non lascio dubbi.

Database:

Tabella dei link principali campi:

idLink ------------nome_link------------Link----------Tendina
1-----------------home----------------home.php------- N
2 ----------------Chi siamo------------ chi_siamo.php -- Y
3 ----------------lavori--------------- lavori.php-------- Y
Ecc...ecc...

Tabella2 Link tendina:

id----------------idLink------------Link--------------------nome
1-----------------2----------------dovesiamo.php------- dove siamo
2 ----------------3------------ ---galleria.php--- --------Galleria lavori

Ecc...ecc...

Ora quello che voglio realizzare è:

<ul>
#####campi generati dal database############
<li><a href="link dal database tabella 1">Nome link database tabella 1</a></li>
<li><a href="link dal database tabella 1">Nome link database tabella 1</a>
#####verifico se il campo tendina è "Y" allora genero i menu a tendina che
<ul>
<li><a href="link legato all idLink della tabella 2">Nome Link dalla tabella 2 </a></li>
ecc..eccc..</ul>
</li>ecc..eccc..
</ul>

Forse ora è picomprensibile spero

grazie ancora per il tempo dedicato
 
Ultima modifica:
Ecco, in questa maniera dovrebbe funzionare:
PHP:
<?php
echo '<ul>';

$query = mysql_query('SELECT * FROM link_principali');

while($row = mysql_fetch_assoc($query))
{
	echo "<li><a href=\"{$row['Link']}\">{$row['nome_link']}</a>";

	if($row['Tendina'] == 'Y')
	{
		$query2 = mysql_query("SELECT * FROM link_tendina WHERE idLink = {$row['idLink']}");
		
		if(mysql_num_rows($query2) > 0)
		{
			echo '<ul>';
			
			while($row2 = mysql_fetch_assoc($query2))
				echo "<li><a href=\"{$row2['Link']}\">{$row2['nome']}</a></li>";
			
			echo '</ul>';
		}
	}
	
	echo '</li>';
}

echo '</ul>';
?>
Fammi sapere!
 
Grande

Grande Alessandro 1997,

Fuonziona:)

Era veramente articolato, non ci sarei arrivato da solo.

Grazie a tutti

buon lavoro
 
ciao
scusa ma c'è un particolare che non mi quadra.
es
la pag home non ha la tendina e quindi se clicchi su HOME vai alla pag HOME, e si in qui non ci piove.
la voce "chi siamo" invece ha la tendina (Y) quindi cliccando sulla voce CHI SIAMO "dovrebbe aprirsi la tendina", ma sei sicuro che lo faccia?
secondo quanto ti ha indicato alex (giusto da tanti punti di vista) alla voce "chi siamo" corrispondendente al php
PHP:
echo "<li><a href=\"{$row['Link']}\">{$row['nome_link']}</a>";//il primo echo
corrisponde un html
HTML:
<li><a href="chi_siamo.php">chi siamo</a></li>
quindi cliccando su chi siamo non si apre la tendina, ma secondo me si va alla pagina chi_siamo.php e la pagina dove_siamo.php non è mai raggiungibile.
ma può darsi che sbagli
 
funziona

Mi funziona correttamente. Mi piazza il link sia sulla voce principale che su quelle della tendina.
 
ciao
Mi funziona correttamente. Mi piazza il link sia sulla voce principale che su quelle della tendina.
generalmente quando si fanno i menu a tendina la voce principale non è un link ma solo un titolo che determina una categoria di link
 
si

IN questo caso mi serviva questa opsione, che posso comunque annullare semplicemente aggiungendo una condizione anche sul link della voce principale.
 
ciao
io parlavo che generalmente la prima voce non è un link. gli utenti generalmente si aspettano che in un menù del tipo (o passando sopra o cliccando) si apra il sottomenu da cui si naviga "verso altri lidi". il fatto che la prima voce sia un link può, a mio avviso, portare ad errori di navigazione
 

Discussioni simili