Foreach PHP

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
PHP:
<ul id="link">
       <?php foreach ($menu as $k => $v) { ?>
          <li><a href="<?php echo $k ?>"><?php echo $v ?> </a></li>
       <?php } ?>
</ul>

<?php
$menu = array("/BiesseCar/carrozzeria.php" => "Carrozzeria", "/BiesseCar/allestimento-veicoli.php" => "Allestimento Veicoli" , "/BiesseCar/veicoli-speciali.php" => "Veicoli Speciali" );
?>

Un saluto a tutti. Il foreach funziona correttamente. Volevo sapere come assegnare alle voci del menu "Allestimento Veicoli" e "Veicoli Speciali" rispettivamente le classi "allestimento" e "veicoli".
 
Ultima modifica di un moderatore:

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
scusa non capisco bene, ma vorresti una cosa del genere (i punti li ho messi solo per distanziale)?

carrozzeria
....Carrozzeria
allestimento
....Allestimento veicoli
veicoli
....Veicoli speciali

se è così potresti provare a fare array di array (lo scrivo esteso)
PHP:
<?php
$menu['carrozzeria']['/BiesseCar/carrozzeria.php']="Carrozzeria";
$menu['allestimento']['/BiesseCar/allestimento-veicoli.php']="Allestimento Veicoli";
$menu['veicoli']['/BiesseCar/veicoli-speciali.php']="Veicoli Speciali";
//.....
foreach($menu as $chiave => $valore){
	echo "<ul id="link">";
	echo "<li>$chiave</li>";
	echo "<ul id="link">";
	foreach($valore as $k => $v){
		echo "<li><a href=\"$k\">$v</a></li>";
	}
	echo "</ul>";
	echo "</ul>";
}
?>


p.s.
racchiudi sempre il codice tra gli appositi tag
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
grazie della risposta!
Cmq non è proprio quello che intendevo. Volevo assegnare delle classi al secondo e terzo elemento del menù in modo da dargli un margin left tot px e distanziarli quanto voglio. Ora il menù lo vedo in questo modo:

CARROZZERIA(px default) ALLETIMENTO (px default) VEICOLI SPECIALI

invece vorrei vederlo così

CARROZZERIA (200px margin left) ALLESTIMENTO (200px margin-left) VEICOLI SPECIALI

Per questo pensavo a mettere le classi ad allestimento e veicoli
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
intendi una cosa del genere
HTML:
<head>
<style>
.oriz{
display:inline;}
</style>
</head>

<body>
<ul>
  <li class="oriz"> uno </li>
  <li class="oriz"> due </li>
  <li class="oriz"> tre </li>
</ul>
</body>
questo da
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
si esatto è quello il risultato che voglio ottenere. Vorrei sapere come dare le classi css agli elementi del foreach
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Struttura l'array così:
PHP:
<?php
$menu = array(
    array(
        'link'  => 'http://www.example.com',
        'name'  => 'Link 1',
        'class' => null,
    ),

    array(
        'link'  => 'http://www.example.net',
        'name'  => 'Link 2',
        'class' => 'class1',
    ),

    array(
        'link'  => 'http://www.example.org',
        'name'  => 'Link 3',
        'class' => 'class3',
    ),
);

echo <<<'EOD'
<ul>
EOD;

foreach ($menu as $item) {
    $class = '';
    if ($item['class'] != null) {
        $class = sprintf(' class="%s"', $item['class']);
    }

    echo <<<EOD
    <li>
        <a href="{$item['link']}"{$class}>{$item['name']}</a>
    </li>
EOD;
}

echo <<<'EOD'
</ul>
EOD;
?>
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
Come non detto funziona tutto!! E' dreamweaver che è stupido grazie mille!!
Un'altra domanda. Come faccio a far si che sia evidenziata una voce del menu? Tipo quando sono sulla pagina carrozzeria si colora la parola di rosso ecc..
 
Ultima modifica:

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova a modificare il foreach così:
PHP:
foreach ($menu as $item) {
    $classes = array($item['class']);
    if ($_SERVER['REQUEST_URI'] == $item['link']) {
        $classes[] = 'active';
    }

    $classes = implode(' ', $classes);

    echo <<<EOD
    <li>
        <a href="{$item['link']}" class="{$classes}">{$item['name']}</a>
    </li>
EOD;
}
Sappi che questo funzionerà solamente se il valore link si trova esattamente dopo il dominio del sito. Ad esempio, se hai una voce che punta a /sezione/pagina1.php, la voce avrà la classe active se l'URL nella barra degli indirizzi è: http://www.example.com/sezione/pagina1.php.
 

Fabio90

Utente Attivo
29 Feb 2012
507
0
16
grazie mille funziona!! E per far si che funziona anche a livelli che non sono subito dopo il dominio?
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Prova così:
PHP:
<?php
$routerPath = '';
$menu = array(
    array(
        'link'  => 'http://www.example.com',
        'name'  => 'Link 1',
        'class' => null,
    ),

    array(
        'link'  => 'http://www.example.net',
        'name'  => 'Link 2',
        'class' => 'class1',
    ),

    array(
        'link'  => 'http://www.example.org',
        'name'  => 'Link 3',
        'class' => 'class3',
    ),
);

echo <<<'EOD'
<ul>
EOD;

foreach ($menu as $item) {
    $classes = array($item['class']);
    if ($_SERVER['REQUEST_URI'] == $routerPath . $item['link']) {
        $classes[] = 'active';
    }

    $classes = implode(' ', $classes);

    echo <<<EOD
    <li>
        <a href="{$item['link']}" class="{$classes}">{$item['name']}</a>
    </li>
EOD;
}

echo <<<'EOD'
</ul>
EOD;
?>
E imposta alla variabile $routerPath il valore prima del vero URL (comprensivo di slash finale, se c'è).
 
Discussioni simili
Autore Titolo Forum Risposte Data
I Eecuzione di javascript in ciclo foreach php. PHP 7
P Jquery event nel foreach php jQuery 3
S [PHP] Ciclo foreach su più array PHP 2
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
alessandra86 [PHP] Popolamento database con form ricorsivi - problema array (foreach ) PHP 5
M [PHP] Errore in ciclo foreach PHP 1
V Somma foreach PHP 2
Z problemi con foreach insert into PHP 10
P Passare i risultati di un foreach in un modal. Help! PHP 2
P Array da foreach PHP 2
T foreach e fetchAll dove recupero solo l'ultimo record PHP 5
Alex_70 foreach explode query PHP 3
S Unire due foreach simili PHP 5
M Problema con ciclo foreach per chiusura apertura div in base al numero di record in database PHP 1
L Estrarre e muovere un campo da un foreach PHP 0
C query dentro foreach PHP 1
JackIlPazzo Warning: Invalid argument supplied for foreach() PHP 1
otto9due Problema if elseif o foreach.. o non capisco cosa non funzioni.. PHP 4
otto9due Questione di array.. I risultato del foreach non è quello che voglio.. PHP 4
otto9due Problema inserimento ciclo foreach o while in variabile PHP 1
M Alternativa a foreach ?! PHP 7
W foreach contenuto PHP 0
M Aiuto su come procedere con un ciclo foreach PHP 4
F Warning: Invalid argument supplied for foreach() PHP 3
felino Foreach annidati: soluzione? PHP 1
N Problema aggiornamento dati con foreach PHP 1
M Ricostruire array evitando il foreach PHP 0
N Problema FOREACH() PHP 3
Monital intabellare array bidimensionale, foreach impazziti PHP 13
M Problema Foreach && While PHP 4
M ciclo foreach che non funziona PHP 5
Emix [RISOLTO]Impostare focus su textbox dopo foreach jQuery 16
nuovecode interrompere e riprendere un foreach PHP 1
M problema con ciclo foreach per estrarre dati da un database PHP 22
P Problema con array e foreach PHP 15
M elimina valori doppi in ciclo foreach PHP 3
C Risultati ciclo foreach in tabella PHP 13
nim inserire dati in tabella con ajax (ciclo foreach) Ajax 10
F Rinomina file multipli con foreach PHP 1
Athene Interazione tra il foreach e una tabella html PHP 12
F Foreach con link selezionato PHP 3
M Ciclo foreach dentro un ciclo while PHP 5
nim funzione array(); e chiarimenti foreach PHP 6
A incolonnare i risultati foreach HTML e CSS 1
Monital array non riconosciuta fuori dal foreach PHP 9
@ foreach...in foreach (credo) PHP 1
P Iterazione Foreach dentro un ciclo for PHP 9
I Più foreach in database PHP 1
Z FOREACH o FOR PHP 4
I Eseguire foreach una volta PHP 4

Discussioni simili