php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 27-08-2007, 19:10
Diablo
 Newbie
Links : Onlinestatus : Diablo ist offline
Registriert seit: Aug 2007
Beiträge: 3
Diablo ist zur Zeit noch ein unbeschriebenes Blatt
Exclamation Probleme mit Menübaum, bzw. "versteckten" Links

Hi Leute,

ich bin leider ein ziemlicher Neuling im Bereich PHP. Vor kurzem habe ich mir ein Script für einen "Menü - Baum" aus dem Internet geladen und entsprechend angepasst. Das Menü läuft auch einwandfrei, alle Punkte werden angezeigt / aufgeklappt etc.

Aber ich habe ein Problem : Ich möchte unter dem Submenüpunkt "Songtexte & Sounds" eine Site einrichten wo diverse Songtexte von A - Z angesehen werden können. Solange sich der User auf der Site "songtexte.php" befindet wird der Menpunkt "Discographie" aufgeklappt dargestellt. Sobald aber der User einen Songnamen aus der Übersicht auswählt um auf die Site mit dem Text zu gelangen klappt "Discographie" wieder zu, weil ja der jeweilige Songtext nicht über die Hauptnavigation erreichbar ist, sondern nur über die "Songtexte.php" - Site.
Wie kann ich erreichen, dass der Menüpunkt aufgeklappt bleibt, selbst wenn der User auf eine Site "springt" die nicht über das Hauptmenü erreichbar ist ?

Habe unten meinen kompletten Code eingefügt. Dieser befindet sich in der Datei menue.inc und wird per "Include" in die einzelnen Sites eingefügt.

Ich habe schon ziemlich viel gegoogelt und auch in diesem und anderen Foren gesucht. Da sich diese Frage aber nicht mit einem Schlagwort definieren lässt wurde ich leider nicht fündig. Mir ist auch kein Befehl bekannt, über den ich googeln könnte um eine Lösung zu finden.

Wäre super, wenn mir jemand helfen könnte und erklären kann wie eine entsprechende Lösung aussehen muss oder zumindest den Befehl kennt den ich googeln könnte. Bin, wie gesagt ein absoluter "Dummie" was PHP angeht, da ich erst begonnen habe es zu lernen.

Vorab schon einmal vielen Dank für Eure Hilfe und liebe Grüße

Diablo


PHP-Code:

<?php

$menu 
= array (

"HOME" => array ("home.php"),
"NEWS" => array ("news.php"),
"TERMINE" => array ("termine.php"),

"DISCOGRAPHIE" => array ("discographie.php",
"Songtexte & Sounds" => "songtexte.php",
"CD - Kritiken" => "cdkritiken.php"),

"BIOGRAPHIE" => array ("biographie.php",
"Vita" => "vita.pdf"),

"LINKS" => array ("links.php"),
"KONTAKT" => array ("kontakt.php"),
"BOOKING" => array ("bookings.php"),
"IMPRESSUM" => array ("impressum.php")

);

?>

<?php

$uri 
basename(getenv("REQUEST_URI"));

foreach(
$menu as $main => $mainlink){
foreach(
$mainlink as $sub =>$sublink){
$x count ($mainlink);

if(
$sub[0] == "" && $mainlink[0] == $uri && $x 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\">$main</a></div>";
}

else
if(
$sub[0] == "" && $mainlink[0] == $uri && $x == 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\">$main</a></div>";
}

else
if(
$sub[0] == "" && $x 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\" href=\"$mainlink[0]\"> $main</a></div>";
}

else
if(
$sub[0] == "" && $x == 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\" href=\"$mainlink[0]\"> $main</a></div>";
}

else
if(
$mainlink[0] == $uri) {
echo 
"<div class=\"menue\" style=\"margin-top: 0px\"><a class=\"navigation_u\" href=\"$sublink\"> $sub</a></div>";
}

if(
array_search($uri,$mainlink)&& $sub[0] != ""){
if(
$uri == $sublink){
echo 
"<div class=\"menue\" style=\"margin-top: 0px\"><a class=\"navigation_u\"> $sub</a></div>";
}

else{
echo 
"<div class=\"menue\" style=\"margin-top: 0px\"><a class=\"navigation_u\" href=\"$sublink\"> $sub</a></div>";
}

}
}
}
?>
Mit Zitat antworten
  #2 (permalink)  
Alt 27-08-2007, 20:38
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Ehm.. Rekursion?
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #3 (permalink)  
Alt 27-08-2007, 22:31
Diablo
 Newbie
Links : Onlinestatus : Diablo ist offline
Registriert seit: Aug 2007
Beiträge: 3
Diablo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hi,
vielen Dank für den Tipp. Also, ich habe eine Funktion übernommen und versucht für meine Zwecke anzupassen. Aber es funktioniert nicht so richtig.
Die Funktion zählt jetzt einfach alle Sites die im Hauptverzeichnis liegen auf, aber eigentlich möchte ich ja, dass einfach nur der Menüpunkt "Discographie" aufgeklappt bleibt, selbst wenn ich einen Link auswähle der nicht im Menüpunkt "Discographie" enthalten ist.

Sollte also so aussehen :

- Discographie (Mainlevel)
- Songtexte & Sounds (Sub) --> und hier geht ein Link ab, der nicht unter "Discographie" zu finden ist, sondern nur über "Songtexte..." erreichbar.

Das Problem, sobald man diesem Link folgt und sich die neue Site öffnet klappt "Discographie" wieder zu, sollte aber eigentlich offen bleiben, damit man sich weiterhin in diesem Menüpunkt bewegen kann.

Habe meinen Code folgendermaßen erweitert, weiß aber nicht ob diese Funktion überhaupt für mein Problem geeignet ist, bzw. wie ich sie so anpassen kann / muss, dass sie wie oben beschrieben funktioniert.

Vielleicht hat jemand eine Lösung, ich bin langsam am verzweifeln weil ich seit Tagen nach einer Möglichkeit suche...:-(

Hier der neue Code

PHP-Code:

<?php

$menu 
= array (

"HOME" => array ("home.php"),
"NEWS" => array ("news.php"),
"TERMINE" => array ("termine.php"),

"DISCOGRAPHIE" => array ("discographie.php",
"Songtexte & Sounds" => "songtexte.php",
"CD - Kritiken" => "cdkritiken.php"),

"BIOGRAPHIE" => array ("biographie.php",
"Vita" => "vita.pdf"),

"LINKS" => array ("links.php"),
"KONTAKT" => array ("kontakt.php"),
"BOOKING" => array ("bookings.php"),
"IMPRESSUM" => array ("impressum.php")

);

?>

<?php
    
function get_dir ($dir)
             {
    
$fp=opendir($dir);
    while(
$datei=readdir($fp))
             {

         if (
is_dir("$datei") && $datei!="." && $datei!="..") {echo "$datei";}

         else {echo 
$datei."";}
        }
    
closedir($fp);
        }
?>

<?php get_dir("../neu/"); ?>

<?php

$uri 
basename(getenv("REQUEST_URI"));

foreach(
$menu as $main => $mainlink){
foreach(
$mainlink as $sub =>$sublink){
$x count ($mainlink);

if(
$sub[0] == "" && $mainlink[0] == $uri && $x 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\">$main</a></div>";
}

else
if(
$sub[0] == "" && $mainlink[0] == $uri && $x == 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\">$main</a></div>";
}

else
if(
$sub[0] == "" && $x 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\" href=\"$mainlink[0]\"> $main</a></div>";
}

else
if(
$sub[0] == "" && $x == 1) {
echo 
"<div class=\"menue\"><a class=\"navigation\" href=\"$mainlink[0]\"> $main</a></div>";
}

else
if(
$mainlink[0] == $uri) {
echo 
"<div class=\"menue\" style=\"margin-top: 0px\"><a class=\"navigation_u\" href=\"$sublink\"> $sub</a></div>";
}

if(
array_search($uri,$mainlink)&& $sub[0] != ""){
if(
$uri == $sublink){
echo 
"<div class=\"menue\" style=\"margin-top: 0px\"><a class=\"navigation_u\"> $sub</a></div>";
}

else{
echo 
"<div class=\"menue\" style=\"margin-top: 0px\"><a class=\"navigation_u\" href=\"$sublink\"> $sub</a></div>";
}

}
}
}
?>
Mit Zitat antworten
  #4 (permalink)  
Alt 27-08-2007, 22:41
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

Mal kurz so als Frage... du hast dir aber schon durchgelesen was Rekursion eigentlich is ne? Du verwendest Sie nämlich nirgendwo. Tipp falls du das mit der Rekursion hinbekommen hast: Verwende eine Variable (bestenfalls ein Array) um den Elter-Pfad zu speichern. Denk mal drüber nach

Sicherlich haben mehrere hier eine Lösung für dein Problem, aber besser ist allenfalls, dass du da von alleine drauf kommst.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
  #5 (permalink)  
Alt 27-08-2007, 22:51
Diablo
 Newbie
Links : Onlinestatus : Diablo ist offline
Registriert seit: Aug 2007
Beiträge: 3
Diablo ist zur Zeit noch ein unbeschriebenes Blatt
Exclamation

Hi,

das ist eben genau mein Problem. Ich habe heute zum ersten Mal von Rekursionen gehört und mir einiges dazu durchgelesen. Aber PHP ist für mich noch zu komplex, um es wirklich zu verstehen.

Ich lerne gerade PHP und kann einige kleinere Sachen (Formulare etc.) auch schon realisieren.

Hilfe für das oben genannte Problem suche ich ja gerade deshalb, weil ich es momentan noch nicht selbst lösen kann, aber relativ schnell eine Lösung brauche...wenn es nicht eilen würde wäre es für mich kein Problem so lange zu basteln bis es passt, aber die Menüstruktur wird schnell gebraucht, daher muss ich schnellstmöglich eine Lösung finden.

Vielleicht hat ja jemand Mitleid und hilft mir auf die Sprünge ;-)

Ich wäre jedenfalls dankbar...:-)

LG,
Diablo
Mit Zitat antworten
  #6 (permalink)  
Alt 28-08-2007, 01:07
ArSeN
 Registrierter Benutzer
Links : Onlinestatus : ArSeN ist offline
Registriert seit: Feb 2006
Ort: Berlin
Beiträge: 1.052
ArSeN ist zur Zeit noch ein unbeschriebenes Blatt
ArSeN eine Nachricht über ICQ schicken ArSeN eine Nachricht über AIM schicken ArSeN eine Nachricht über Yahoo! schicken
Standard

OffTopic:
Wenigstens biste jemand der nicht gleich ausrastet wenn er im ersten Post keine vorgelegte Lösung findet.


Also, Rekursion bedeutet kurzgesagt, dass du eine Funktion hast, die sich selbst wieder aufruft. Ich schreib dir mal kurz den logischen Ablauf auf und hoffe, dass dir das ein Wenig weiterhilft.
[list=1][*]Die oberste Ebene des Menüs wird ausgegeben. Ist dein Pfad nur 1 Lang (also nur eine Seite im Array enthalten z.B.) brauchst du garkeine Unterseiten ausgeben lassen.[*]Ist dein Pfad länger als 1, dann rufst du die anzeigefunktion an Stelle der ersten Position des Pfades wieder auf, undzwar mit dem entsprechenden Menüpunkt als geforderte Ebene.[*]Ist dein Pfad jetzt immernoch länger als 2, dann lässt du an Position[obersteEbene][zweiteEbene] die Dritte ausgeben. Folgend verfährst du analog hierzu.[/list=1]

Darauf wie du den Pfad aufbauen musst kommst du denke ich mal grade noch selber.

Hint: Von unten nach oben aufbauen! (und ggf. )array_reverse() verwenden um das Array umzudrehen.

Viel Erfolg.
__________________
Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni

Wissensbestand in Unternehmen
Wissensbestand in UnternehmenLebenslanges Lernen und Weiterbilden sichert Wissensbestand in Unternehmen

25.05.2018 | Berni


 

Aktuelle PHP Scripte

PHP Server Monitor

PHP Server Monitor ist ein Skript, das prüft, ob Ihre Websites und Server betriebsbereit sind.

11.09.2018 Berni | Kategorie: PHP/ Security
PHP WEB STATISTIK ansehen PHP WEB STATISTIK

Die PHP Web Statistik bietet Ihnen ein einfach zu konfigurierendes Script zur Aufzeichnung und grafischen und textuellen Auswertung der Besuchern Ihrer Webseite. Folgende zeitlichen Module sind verfügbar: Jahr, Monat, Tag, Wochentag, Stunde Folgende son

28.08.2018 phpwebstat | Kategorie: PHP/ Counter
Affilinator - Affilinet XML Produktlisten Skript

Die Affilinator Affilinet XML Edition ist ein vollautomatisches Skript zum einlesen und darstellen der Affili.net (Partnerprogramm Netzwerk) Produktlisten und Produktdaten. Im Grunde gibt der Webmaster seine Affilinet PartnerID ein und hat dann unmittelb

27.08.2018 freefrank@ | Kategorie: PHP/ Partnerprogramme
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:16 Uhr.