ciclo di un menu a cascata in una tabella

Monital

Utente Attivo
15 Apr 2009
778
2
18
Sera a tutti,

è incredibile che ogni volta che devo intabellare dei dati devo eprderci ore ed ore.

Praticamente ora la cosa mis embra più complessa e non ne vengo fuori quindi chiedo il vostro aiuto.

la faccio molto semplice

ho una tabella mysql cosi composta

id|Nome Nazione
id|pippo|italia
id|topolino|germania
id|pluto|spagna
id|minni|italia

ora devo creare un menu a tendina <ul><li>

dove la prima intestazione deve essere il distinct delle nazoni

e per ogni nazione deve listarmi i nomi.

non conosco a priori le nazioni però deve intabellarle per 5 colonne .

quindi na cosa del tipo

PHP:
<ul>
<li><?php $nazione;?>
<ul>
<li><a href miosito.com/index.php?$id><?php $nome>;?></a></li>
</ul>
</li>
</ul>

in pratica se dal distinct mi escono 6 nazioni deve metterne 4 nella prima riga e 2 nella successiva e cosi via.

Ed in ogni nazione deve inserirmi i nomi in quelle nazioni ed il link deve avere l'id del nome.

Le ho provate di tutte ma non ne vengo fuori.

Cortesemente risucite ad aiutarmi?
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
ok son riuscito eprlomeno a creare le colonne

PHP:
<?php 
foreach($nat as $n){ ///contiene le nazioni distinte
?>
<td>
<div id="menu" style="padding:20px;">
		<ul>
			<li><a href="#"><img src="http://<?php echo$url;?>/naz/<?php echo substr($n,0,2);?>.gif" align="absmiddle">   <?php echo $n;?></a>
	<ul>
	<?php
	for($x=0;$x<=count($multi);$x++){
	if($n==$multi[$x]['nat']){//$multi è un multi array che contiene tutti i dati
	?>
	<li><a href="http://<?php echo $_SERVER['SERVER_NAME'].$_SERVER['SCRIPT_NAME'];?>"><?php echo $multi[$x]['nome'];?><!--Home--></a>
	</li>
	<?php
	}
	}
	?>
	</ul>	
			</li>
</ul>
</div>
</td>
<?php
}
?>

ora ad esempio ho 4 nazioni e me le incolonna per 4

però mi resta il problema di creare le righe.

quindi se voglio due righe con due colonne nisba.

ho provato a inserire il tr ma mi son perso
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, non è stato tanto semplice,
ho simulato con un array i risultati della query, prova questo
PHP:
<?php

$rows = array(
    0 => array(
        "nazione" => "Italia",
        "nome" => "Pippo"
    ),
    1 => array(
        "nazione" => "Italia",
        "nome" => "Giacomo"
    ),
    2 => array(
        "nazione" => "Italia",
        "nome" => "Paolo"
    ),
    3 => array(
        "nazione" => "Brasile",
        "nome" => "Agostinho"
    ),
    4 => array(
        "nazione" => "Brasile",
        "nome" => "Ademar"
    ),
    5 => array(
        "nazione" => "Francia",
        "nome" => "Catherine"
    )
);

$nazione = "";
echo "<ul>";
foreach ($rows as $row) {
    if ($row['nazione'] != $nazione) {
        if ($nazione != "") {
            echo "</ul>";
            echo "</li>";
        }
        $nazione = $row['nazione'];
        echo "<li>" . $row['nazione'];
        echo "<ul>";
        echo "<li>" . $row['nome'] . "</li>";
    } else {
        echo "<li>" . $row['nome'] . "</li>";
    }
}
echo "</ul>";
echo "</li>";
echo "</ul>";
?>
i risultati della query dovranno essere ordinati per nazione
 
Ultima modifica:

Monital

Utente Attivo
15 Apr 2009
778
2
18
sai che mi rivolgo qua solo sulle cose difficili :evil: lameno difficili per me :)

Praticamente questo lo avevo raggiunto anche se devo ammettere che ero molto arrangiato. il tuo codice oltre che pulitissimo è anche più snello. L'ho appena provato e funge perfettamente e mi tengo su questo.

sei un grande ciri.

Però mi resta il dilemma su come impostare colonne e righe.

ad esempio se ho 10 nazioni voglio 4 menu_nazioni per riga. quindi 2 righe da 4 ed una da due.

le colonne riesco a inserirle
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
questo è più semplice : ti basta assegnare ad ogni ul il css giusto.
float:left e clear:both sono le proprietà che dovrai gestire nel ciclo
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
e ma io non conosco a priori le nazioni. possono essere 10 ma nel tempo 100.

Inviato con Tapatalk
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
prova cosi
PHP:
<style>
    ul.int {
        float: left;
        border: 1px solid black;
    }
</style>
<?php
$nazione = "";
$i = 0;
echo "<ul class='int'>";
foreach ($rows as $row) {
    if ($row['nazione'] != $nazione) {
        if ($nazione != "") {
            $i++;
            echo "</ul>";
            echo "</li>";
            if ($i % 4 == 0) {
                echo "</ul>";
                echo "<ul class='int'>";
            }
        }
        $nazione = $row['nazione'];
        echo "<li>" . $row['nazione'];
        echo "<ul>\n";
        echo "<li>" . $row['nome'] . "</li>";
    } else {
        echo "<li>" . $row['nome'] . "</li>";
    }
}
echo "</ul>";
echo "</li>";
echo "</ul>";
ogni 4 liste crea un nuovo blocco
 

Monital

Utente Attivo
15 Apr 2009
778
2
18
niente si mettono sempre uno sotto l'altro. invece se ho 6 nazioni dovrebbe mettere 4 nella prima riga e due nella seconda riga quindic redo che bisgona mettere il div sotto un table
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
con questo codice
PHP:
if ($i % 4 == 0) {
                echo "</ul>";
                echo "<ul class='int'>";
            }
ogni 4 liste si crea un nuovo <ul> e grazie alla prorietà float dei css si allinea a sinistra dell'altro
se vuoi fare 2 righe basta che cambi il 4 con il 2
 
Discussioni simili
Autore Titolo Forum Risposte Data
P Problema Con Il Ciclo Di Un Menu' Flash 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
I Eecuzione di javascript in ciclo foreach php. PHP 7
W fare la somma di un valore estratto da un ciclo while Classic ASP 0
B [PHP] formula e ciclo PHP 5
M [PHP] Come inserire codice html in un ciclo while PHP 2
T con oop creare un ciclo per una pagina dinamica html con php PHP 3
G [PHP] totale per ogni id di un ciclo PHP 1
P Incrementare nodo in ciclo for-each XML 6
S [PHP] Ciclo foreach su più array PHP 2
M UPDATE non aggiorna db se lo inserisco in un ciclo Database 1
N [PHP] Controllare condizione ciclo While PHP 9
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
N [PHP] Registrare variabili all'interno di un ciclo PHP 3
MattiaBL [PHP] Problema ciclo while PHP 3
V Ciclo for per Pulsante in JavaScript Javascript 7
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
C [PHP] Ciclo for dinamico PHP 14
gandalf1959 [PHP] query all'interno di un ciclo while PHP 3
Z [PHP] ciclo for PHP 9
valvasori [PHP] Problema ciclo for PHP 12
A [PHP] metodo di una classe per estrarre i dati con ciclo while PHP 1
H [PHP] Ciclo per calcolare i chilometri PHP 4
S [PHP] Recupero più dati da form realizzata ciclo FOR PHP 5
gandalf1959 [PHP] ciclo while non scrive dove dovrebbe... PHP 2
Monital [PHP] ciclo su un file json molto grande PHP 1
M [PHP] Errore in ciclo foreach PHP 1
O Ciclo non visualizzato PHP 1
M problema ciclo javascript Javascript 4
G Ciclo if php per far comparire un pulsante solo nel caso in cui una variabile sia 0 PHP 2
F Problema codice in un ciclo while PHP 2
T ciclo $.each non va jQuery 4
V Generare array da ciclo while e prendere valori casuali PHP 4
I tabella con ciclo, recupero dati PHP 3
Monital Problema con un ciclo for. PHP 1
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
S Ciclo PHP molto complesso PHP 2
minatore Ciclo while PHP 3
D ciclo while mi genera due campi vuoti PHP 5
K Problema con update di un database in un ciclo Classic ASP 1
P JAVA 8 Ciclo For all'interno di un altro Ciclo For Java 2
B ciclo in PHP per creare numero progressivo PHP 2
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Caricare più google maps con un ciclo Javascript 1
N Stranezza sul ciclo while PHP 1
M Aiuto su come procedere con un ciclo foreach PHP 4
A Tabella e ciclo for PHP 7
N Invio Form con un Ciclo For Javascript 8
P Conteggio con ciclo while PHP 1
D Problemi di stampa primo record ciclo WHILE PHP 2

Discussioni simili