Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?

Einloggen mit Benutzername, Passwort und Sitzungslänge

 
Erweiterte Suche

5476 Beiträge in 1178 Themen- von 498 Mitglieder - Neuestes Mitglied: Rithaquesri

22.05.2012 10:59
ProfiHost - SupportforumTechnikProgrammiersprachenMenü dynamisch erzeugen - bekommt man Dateiname per PHP raus
Seiten: [1]   Nach unten
Drucken
Autor Thema: Menü dynamisch erzeugen - bekommt man Dateiname per PHP raus  (Gelesen 2584 mal)
bryce
Newbie
*
Offline Offline

Beiträge: 45


Profil anzeigen
« am: 30.01.2004 10:33 »

Hallo ..

ich möchte eine Mouse-over-Funktion per PHP dynamisieren :-))

Da ich noch nicht so der CRACK in PHP bin, vorab gleich ne Frage, ob sowas überhaupt geht.

Also ich mache mit folgender Javascript-Funktion den Farbwechsel des Menühintergrundes:

-----
function back_farbwechsel(obj, farbe)  
{
   obj.style.backgroundColor=farbe
}
-----

Im Menü sieht der Aufruf so aus:
(Die erste Zeile ist ohne der Funktion. Die zweite Zeile mit der Funktion. Das hat den Hintergrund das der erste Menüpunkt nicht wechseln soll beim mouseover, weil dieser Punkt aktiv ist.)

-----
<td bgcolor="#FF9900"><a href="index.php">Home</a></td>

<td bgcolor="#CCCCCC" onMouseOver="back_farbwechsel(this, '#FF9900')" onMouseOut="back_farbwechsel(this, '#cccccc')"><a href="philo.php">Philosophie</a></td>
-----

Jetzt bräuchte ich eine Möglichkeit beim laden festzustellen, welcher Menüpunkt aktiv sei muss (also keine Mouseover-Funktion erhält). Dann bräuchte ich das Menü nicht bei jeder Datei manuell anpassen, da bei jeder geladenen Datei ein andere Menüpunkt aktiv sein muss.

Ich habe auch schon eine Idee.
Wenn man den Dateinamen irgendwie per PHP fassen kann, dann könnte ich per if-Abfrage sagen: Wenn der  Dateiname "index.*" ist der Menüpunkt Home aktiv. Wenn der Dateiname "impress.*" ist, dann ist der Menüpunkt Impressum aktiv.
(Wenn es möglich ist, kann ich auch aus dem <title> Tag den Vergleich holen, welche Datei geladen ist, mir ist das eigentlich wurst).

Das müsste doch machbar sein.
Dann hätte ich viel weniger Arbeit.

Ich hoffe ich habe alles gut erklärt damit man mir auch helfen kann, ansonsten stehe ich für Rückfragen gerne zur Verfügung. Ich bedanke mich schonmal vorab für eure Hilfe.

Viele Grüsse
Peter
Gespeichert
Netizen
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen WWW
« Antworten #1 am: 30.01.2004 21:02 »

Zitat von: "bryce"
ich möchte eine Mouse-over-Funktion per PHP dynamisieren :-))

Da ich noch nicht so der CRACK in PHP bin, vorab gleich ne Frage, ob sowas überhaupt geht.

Es gibt nicht viel, was nicht geht. Zwinkernd

Zitat
Also ich mache mit folgender Javascript-Funktion den Farbwechsel des Menühintergrundes: [...]

Dazu brauchts kein Javascript. Bist Du mit CSS vertraut?

a:link {background: #CCC; color: ...}
a:hover {background: #F90}

Falls die Links wie Buttons aussehen sollen - auch das geht mit CSS (display: block).

Zitat
Jetzt bräuchte ich eine Möglichkeit beim laden festzustellen, welcher Menüpunkt aktiv sei muss (also keine Mouseover-Funktion erhält). [...]

Ich habe auch schon eine Idee.
Wenn man den Dateinamen irgendwie per PHP fassen kann, dann könnte ich per if-Abfrage sagen: Wenn der  Dateiname "index.*" ist der Menüpunkt Home aktiv. Wenn der Dateiname "impress.*" ist, dann ist der Menüpunkt Impressum aktiv.

Es gibt diverse vordefinierte Variablen im Array $_SERVER, die Du dafür zu Rate ziehen kannst:

Predefined Variables: Server variables: $_SERVER
http://www.php.net/manual/en/reserved.variables.php#reserved.variables.server

Ich hatte bei mir mal folgenden Code im Einsatz:

Code:
 $script = preg_replace('#index.html$#i', '', preg_replace('#html.+$#i', 'html', $_SERVER['SCRIPT_NAME']));

  preg_match('#(.*\/)(.*)#', $script, $result);
  $scriptPath = $result[1];
  $scriptName = $result[2];

Die erste Zeile greift sich die Variable $_SERVER['SCRIPT_NAME'] und entfernt daraus die letzte Dateiendung (da meine Dateien auf .html.php enden) sowie im Falle von Index-Dateien den gesamten Dateinamen. Das an sich reicht schon, die Variable $script enthält dann den Namen des Skripts.

Die nachfolgenden 3 Zeilen splitten das nur noch mal auf in Pfad und Dateiname. Dafür gibts zwar 'ne vordefinierte Funktion in PHP, die hat aber Probleme, wenn der Dateiname leer ist.

Zitat
(Wenn es möglich ist, kann ich auch aus dem <title> Tag den Vergleich holen, welche Datei geladen ist, mir ist das eigentlich wurst).

Dateiname ist besser.

Zitat
Ich hoffe ich habe alles gut erklärt

Das hoffe ich auch. Zwinkernd

Gruß
n!
Gespeichert
bryce
Newbie
*
Offline Offline

Beiträge: 45


Profil anzeigen
hmm
« Antworten #2 am: 30.01.2004 23:07 »

danke ..

das Problem mit CSS ist, dass bei a:active, also bei noch aktiviertem Button wenn dieser gedrückt wurde,

das dann, wenn man später etwas anderes anklickt die active / bzw. hover Funktion weggeht ..
und das will ich nicht ..

ich will ja das beim Laden der Datei der richtige Menüpunkt gleich aktiviert ist (und auch bleibt - solange man sich in der Datei befindet) und das geht dann mit CSS glaube ich nicht, oder?

zu sehen unter: http://www.RealityWEB.de :-)

Danke
Peter
Gespeichert
Netizen
Newbie
*
Offline Offline

Beiträge: 37


Profil anzeigen WWW
« Antworten #3 am: 31.01.2004 09:13 »

Zitat von: "bryce"
ich will ja das beim Laden der Datei der richtige Menüpunkt gleich aktiviert ist (und auch bleibt - solange man sich in der Datei befindet) und das geht dann mit CSS glaube ich nicht, oder?

Das macht man besser serverseitig (mit CSS gehts auch, ist aber etwas "tricky" und nicht gerade die beste Methode).

Ich bezog mich aber auch eher auf den reinen hover-Effekt, den kannst Du komplett mit CSS machen, Javascript ist da eigentlich unnötig.

Gruß
n!
Gespeichert
Seiten: [1]   Nach oben
Drucken
Gehe zu: