Autor Zpráva
Hantos
Profil *
Ahoj mám problém s aktivní položkou navigace, spíše jen s podmínkou. Ptám se - jestliže obsahuje url adresa parametr, když ano vytiskni tento HTML kód a nakonci každé položky seznamu je echo pro případ kdy nebude položka aktivní.

Problém je v tom, že když je položka aktivní, tedy obsahuje parametr v url adrese, vytiskne se i echo pro případ že není. Zkoušel jsem tam dát ELSE ale nefunguje... moc se v tom neorientuji, dělal jsem to pomocí

> http://polopate.jakpsatweb.cz/index.php?page=include4

Můj kód je tady...

<?php $page = $_GET['page']; ?>

<?php
echo "<menu>";
echo "<li class='sekce1'";
if ($page=="podstranka1") {
echo " class='active'>
<a class='sekce1_active' href='podstranka1.php'> </a>
<span> <a href='podstranka1.php'> Podstranka 1 </a> </span></li>";
}
if ($page=="podstranka2") {
echo " class='active'>
<a class='sekce1_active' href='podstranka1.php'> </a>
<span> <a href='podstranka1.php'> Podstranka 1 </a> </span></li>";
}
if ($page=="podstranka3") {
echo " class='active'>
<a class='sekce1_active' href='podstranka1.php'> </a>
<span> <a href='podstranka1.php'> Podstranka 1 </a> </span></li>";
}
echo "> <a class='sekce1' href='podstranka1.php'> </a>
<span> <a href='podstranka1.php'> Podstranka 1 </a> </span></li>";



atd další položky menu....



echo "</menu>";
?>


Ve výsledku se mi vytiskne do HTML kodu dvakrát za sebou aktivní položka...


Na HTML se nedívejte, více těch tříd i prázný odkaz má svůj důvod... jde mi jen o tu podmínku, aby se v případě, že je to active, netiskl kod pro neaktivni polozku...

diky moc za kazdou pomoc... ;)
krteczek
Profil
tenhle kód vygeneruje menu z položek v array, je univerzální, takže přidáš na jednom místě (do array) jméno stránky a jaý bude odkaz a máš vystaráno
#array do které se uloží vždy parametr v adrese a text odkazu.
$stranky = array(
  'podstranka1' => 'název podstránky1',
  'podstranka2' => 'název podstránky2',
  'podstranka3' => 'název podstránky3',
  'podstranka4' => 'název podstránky4',
);
$rad = array();
$page = !empty($_GET['page']) ? $_GET['page'] : '';
foreach($stranky as $adresa => $text)
{
  # vytvoření class
  $class = 'class="sekce1';
  if($page == $adresa)
  {
     $class .= ' active' 
  }
  $class .= '"';
  # vytvoření jednotlivých položek jako položky pole (array)
  $rad[] = '<li ' . $class . '><a href="index.php?page=' . $adresa . '">' . $text . '</a></li>';
}
# vygenerování celého menu (html) z pole $rad
$menu = "\n<ul>\n\t" . join("\n\t", $rad) . "\n</ul>";
echo $menu;
krteczek
Profil
když nad tím přemýšlím, tak když se to zabalí do funkce:
<?php
# array $stranky do které se uloží vždy parametr v adrese a text odkazu.
$stranky = array(
		  'podstranka1' => 'název podstránky1',
		  'podstranka2' => 'název podstránky2',
		  'podstranka3' => 'název podstránky3',
		  'podstranka4' => 'název podstránky4',
		);

function generateMenu($array)
	{
		# funkce slouží k generování menu z array, která musí mít následující vlastnosti:
		# klíč je vždy hodnota,která bude parametrem adresy
		# hodnota je text který se zobrazí v odkazech	
		$radky = array();
		$page = !empty($_GET['page']) ? $_GET['page'] : '';
		foreach($array as $adresa => $text)
			{
				# vytvoření class
				$class = 'class="sekce1';
				if($page == $adresa)
					{
						$class .= ' active' ;
					}
				$class .= '"';
				
				# vytvoření jednotlivých položek jako položky pole (array)
				$radky[] = '<li ' . $class . '><a href="index.php?page=' . $adresa . '">' . $text . '</a></li>';
			}
		# vygenerování celého menu (html) z pole $radky a vrácení scriptu
		return "\n<menu>\n\t" . join("\n\t", $radky) . "\n</menu>";
	}
echo generateMenu($stranky);
?>

tak to bude elegantnější, a použitelnější ;-)
opraven nesmysl s menu místo li, položky jsou vždy li ale typ seznamu se určuje menu, ul, ol...
Hantos
Profil *
díky, ale neřeší to můj problém, stačilo by mi kdyby jste mi někdo opravili tu podmínku... tohle je pro mě až zbytečně složité

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: