Seite 1 von 1

dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 17:11
von matin
hallo,

habe ein kleines problem. habe mir einen code für ein dynamisches menü heruntergeladen und auch irgendwie geschafft, dass das ganze funktioniert (habe keine erfahrung mit php). der code sieht so aus:

<?
/*
die Variable $siteRoot muss angepasst werden, wenn die dateien in einem Unterverzeichnis abgelegt werden. Wenn das Unterverzeichnis z.B. "DIR" heißt, dann muss $siteRoot="/DIR/"; sein
*/

$siteRoot="/";
$menuStruct=array(
"Home"=>array("root"=>$siteRoot."home.php"),
"Menüpunkt 1"=>array("root"=>$siteRoot."menuepunkt1.php", "Untermenü 1"=>$siteRoot."untermenue1.php", "Untermenü 2"=>$siteRoot."untermenue2.php"),
"Menüpunkt 2"=>array("root"=>$siteRoot."menupunkt2.php", "Untermenü 3"=>$siteRoot3."untermenu3php"),
);


if($PHP_SELF == $menuStruct[0]['root']){
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<div class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></div>\n";
}
else{
echo "<div class=\"fstLevel\"><a href=".$value['root'].">$key</a></div>\n";
}
}
} else {
foreach($menuStruct as $key=>$value){
if($PHP_SELF == $value['root']){
echo "<div class=\"fstLevelActive\"><a href=".$value['root'].">$key</a></div>\n";
}else{
echo "<div class=\"fstLevel\"><a href=".$value['root'].">$key</a></div>\n";
}
foreach($value as $key2=>$value2){
if(array_search($PHP_SELF,$value)){
if($key2 != "root")
if($PHP_SELF == $value2){
echo "<div class=\"secLevelActive\"><a href=".$value2.">$key2</a></div>\n";
}else{
echo "<div class=\"secLevel\"><a href=".$value2.">$key2</a></div>\n";
}
}
}
}
}
?>

das problem ist folgender code-abschnitt:
$siteRoot="/";

das "/" brauche ich im code, damit der weitere code den "aktiven Menüpunkt" ausliest und es entsprechend darstellt. wenn ich den slash weglasse, funzt das menü zwar, aber der aktive menüpunkt wird nicht angezeigt.

soweit so gut. das problem ist nur, wenn ich mit validitor.w3c.org den code überprüfe, zeigt es mir eine fehlermeldung wegen dem "/" vor dem link.

wie gesagt, ich versteh die ganzen codes da oben nicht wirklich. gibt es eine möglichkeit, dass man den "/" weglässt und trotzdem der aktive link ausgelesen wird?

Verfasst:
von

Hochwertiger Linkaufbau bei ABAKUS:
  • Google-konformer Linkaufbau
  • nachhaltiges Ranking
  • Linkbuilding Angebote zu fairen Preisen
  • internationale Backlinks
Wir bieten Beratung und Umsetzung.
Jetzt anfragen: 0511 / 300325-0

dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 18:23
von Christophe
Es würde helfen, wenn du den HTML-Code den das Skript ausspuckt hier einstellen würdest.

dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 18:39
von matin
<div id="content_left">
<div class="fstLevel"><a href=/home.php>Home</a></div>
<div class="fstLevel"><a href=/menuepunkt1.php>Menüpunkt 1</a></div>

<div class="fstLevelActive"><a href=/menuepunkt2.php>Menüpunkt 2</a></div>
<div class="secLevel"><a href=/untermenue1.php>Untermenü 1</a></div>
<div class="secLevel"><a href=/untermenue2.php>Untermenü 2</a></div>

<div class="secLevel"><a href=/menuepunkt3.php>Menüpunkt 3</a></div>
</div>

Verfasst:
von

dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 19:35
von Liesl_Weppen
Hallo,

das Problem liegt vermutlich an fehlenden Anführungszeichen

Code: Alles auswählen

<a href=/home.php>Home</a>
so wärs korrekt mit HTML 4.01 Transitional

Code: Alles auswählen

<a href="/home.php">Home</a>
im php-Script, wo die Links geschrieben werden

Code: Alles auswählen

<a href=".$value&#91;'root'&#93;.">
vor und hinter das

Code: Alles auswählen

".$value&#91;'root'&#93;."
je ein Anführungszeichen setzen

Re: dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 19:44
von matin
Liesl_Weppen hat geschrieben:
vor und hinter das

Code: Alles auswählen

".$value&#91;'root'&#93;."
je ein Anführungszeichen setzen
... die anführungzeichen sind drin (s. oben), aber er scheint sie nicht zu übernehmen ... warum?

Re: dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 19:59
von Tutsn
matin hat geschrieben:
... die anführungzeichen sind drin (s. oben), aber er scheint sie nicht zu übernehmen ... warum?
Weil du sie nicht maskiert hast. Wenn du mit

Code: Alles auswählen

 echo "text"
arbeitest, dann muss du Anführungszeichen, welche ausgegeben werden sollen maskieren indem du ein \ voranstellst. Ansonsten wird das als Ende des auszugebenen Textes interpretiert.

Verfasst: 04.12.2005, 20:01
von Liesl_Weppen
mit vor und hinter meinte ich, es soll dann so sein:

Code: Alles auswählen

"".$value&#91;'root'&#93;.""

Verfasst: 04.12.2005, 20:13
von Liesl_Weppen
Slashes haben auch noch gefehlt, hier jetzt der überarbeitete Code:

Code: Alles auswählen

<? 
/* 
die Variable $siteRoot muss angepasst werden, wenn die dateien in einem Unterverzeichnis abgelegt werden. Wenn das Unterverzeichnis z.B. "DIR" heißt, dann muss $siteRoot="/DIR/"; sein 
*/ 

$siteRoot="/"; 
$menuStruct=array&#40; 
"Home"=>array&#40;"root"=>$siteRoot."home.php"&#41;, 
"Menüpunkt 1"=>array&#40;"root"=>$siteRoot."menuepunkt1.php", "Untermenü 1"=>$siteRoot."untermenue1.php", "Untermenü 2"=>$siteRoot."untermenue2.php"&#41;, 
"Menüpunkt 2"=>array&#40;"root"=>$siteRoot."menupunkt2.php", "Untermenü 3"=>$siteRoot3."untermenu3php"&#41;, 
&#41;; 


if&#40;$PHP_SELF == $menuStruct&#91;0&#93;&#91;'root'&#93;&#41;&#123; 
foreach&#40;$menuStruct as $key=>$value&#41;&#123; 
if&#40;$PHP_SELF == $value&#91;'root'&#93;&#41;&#123; 
echo "<div class=\"fstLevelActive\"><a href=\"".$value&#91;'root'&#93;."\">$key</a></div>\n"; 
&#125; 
else&#123; 
echo "<div class=\"fstLevel\"><a href=\"".$value&#91;'root'&#93;."\">$key</a></div>\n"; 
&#125; 
&#125; 
&#125; else &#123; 
foreach&#40;$menuStruct as $key=>$value&#41;&#123; 
if&#40;$PHP_SELF == $value&#91;'root'&#93;&#41;&#123; 
echo "<div class=\"fstLevelActive\"><a href=\"".$value&#91;'root'&#93;."\">$key</a></div>\n"; 
&#125;else&#123; 
echo "<div class=\"fstLevel\"><a href=\"".$value&#91;'root'&#93;."\">$key</a></div>\n"; 
&#125; 
foreach&#40;$value as $key2=>$value2&#41;&#123; 
if&#40;array_search&#40;$PHP_SELF,$value&#41;&#41;&#123; 
if&#40;$key2 != "root"&#41; 
if&#40;$PHP_SELF == $value2&#41;&#123; 
echo "<div class=\"secLevelActive\"><a href=\"".$value2."\">$key2</a></div>\n"; 
&#125;else&#123; 
echo "<div class=\"secLevel\"><a href=\"".$value2."\">$key2</a></div>\n"; 
&#125; 
&#125; 
&#125; 
&#125; 
&#125; 
?> 

dynamisches menü nicht ganz w3c valid

Verfasst: 04.12.2005, 22:29
von matin
supi!! funzt! vielen dank!!!!