Sie befinden sich hier im Forenarchiv von phpforum.de wenn Sie direkt ins Forum möchten, klicken Sie bitte hier. Zur Startseite kommen Sie hier.

Horizontale Menüzeile mit PHP

Hallo zusammen

Ich steige gerade ein wenig in die php-Programmierung ein und möchte nun eine einfache Menüzeile mit html und php erzeugen (Siehe Bild). Je nachdem welcher Menüpunkt gerade gewählt ist, ändert er seine Farbe. Wird ein anderer Menüpunkt gewählt, dann soll die Farbe des vorherigen wieder zurückgesetzt werden und der neu selektierte die Selektionsfarbe annehmen - solange bis wieder ein anderer Menüpunkt gewählt wird.

Da ich php lerenen möchte, würde ich das Ganze gerne in dieser Sprache lösen - wenn es Sinn macht.

Ich habe mir nun folgenden Lösungsweg überlegt:
1.) lege eine Sessionvariable namens MenuePunkt an. Sie hält die Information des aktuell selektierten Menüpunktes
2.) Die Menüpunkte werden durch Hyperlinks aufgebaut.
3.) in jener Seite, die gewählt wurde wird die Variable MenuePunkt entsprechend gesetzt
4.) in der Datei menu.php wird das menü codiert. Hier wird vor der Darstellung jedes man abgefragt, welcher menüpunkt gerade aktuell ist und die Farbe dann entsprechend gesetzt.

Macht das Eurer Meinung so Sinn oder gibt es vielleicht andere bessere Ansätze? Wenns geht bitte gleich mit Beispiel. Dann kannn ich die Löung schneller durchschauen.
Wie würde es auc interessieren wie es ein Profi machen würde?

Beste Grüsse und vielen Dank für Eure Anregungen
Geri

Hier gehts zum Orginal Eintrag "Horizontale Menüzeile mit PHP" im Forum

Antworten

Zitat:
(Siehe Bild)
Wohin muss ich schauen?


2.

Zitat:
Macht das Eurer Meinung so Sinn oder gibt es vielleicht andere bessere Ansätze?
Nein, weil man um das Menü zu ändern, die Seite neu laden müsste. PHP läuft auf dem Server, und dann macht es wenig Sinn, ein Menü zu ändern.

Du solltest dir mal DHTML ansehen, damit wäre sowas wohl auch möglich ohne die Seite neu laden zu müssen !


3.

Hallo zusammen

Vielen Dank für eure rasche Rückmeldung.

Sorry, hier das BIld.

@johnpatcher: danke, werde mich mal in DHTML schlau machen

Freundliche Grüsse
Geri




4.

So wie das aussieht, ist das einfachstes CSS und Anzeige des sog. aktiven Links. Das Aussehen wird über das Attribut a:hover gesteuert.


5.

Zitat:
So wie das aussieht, ist das einfachstes CSS und Anzeige des sog. aktiven Links. Das Aussehen wird über das Attribut a:hover gesteuert.
Nene, soweit ich das gesehen habe, war auch ein wenig JS mit dabei ...


6.

Hallo Rana

Ja, du hast recht, man kann das mit CSS auch lösen. Das Problem geht aber noch etwas weiter, weil ich in meiner Anwendung wissen möchte welcher Menüpunkt gerade gewählt ist.

Ich habe das irgendwie so gelöst:

<td width="13%"><a href="/de_Faq.php" onMousedown=<? $_SESSION['menu']=1; ?>>H&auml;ufige<br> Fragen</a> </td>
<td width="16%"><a href="/de_Downloads.php" onMousedown=<? $_SESSION['menu']=2; ?>> Download-<br> Area</a> </td>

Nun erhalte ich aber die Meldung:
Warning: session_start() [function.session-start]: open(./save\sess_be991d40224dd52ef3469cd69ffe8af8, O_RDWR) failed: Permission denied (13) in c:\InetPub\wwwroot\de_Downloads.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at c:\InetPub\wwwroot\de_Downloads.php:2) in c:\InetPub\wwwroot\de_Downloads.php on line 4

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at c:\InetPub\wwwroot\de_Downloads.php:2) in c:\InetPub\wwwroot\de_Downloads.php on line 4


im Header meine seite index.php steht aber ganz oben:
Code:                   In Zwischenablage kopieren (nur IE)
1">

im wwwroot habe ich ein Verzeichnis save angelegt und das Verzeichnis freigegeben.

Ist das etwas voller Blödsinn:)?

Freundliche Grüsse
Geri


7.

Zitat:
Ist das etwas voller Blödsinn?

ehrliche antwort? dann ja...

sowas hier
Code:                   In Zwischenablage kopieren (nur IE)
2">

kann doch gar nicht klappen. php läuft auf dem server, und sobald die seite ausgeliefert ist, ist es wieder aus dem spiel. du kannst ohne einen reload (ajax mal aussen vor gelassen) keine parameter an php übermitteln.

die fehlermeldung betrifft deine session. du (dein skript) hat nicht das recht auf den ordner ./save zuzugreifen. überprüfe die rechte.

btw. session_register() ist veraltet und sollte nicht mehr verwendet werden.


8.

Hallo Alexander

Vielen Dank für Deine Rückmeldung:)

Den Code habe ich auf einer PHP-Seite gefunden:) Sah für mich aber irgendwie logisch aus:)
Das Problem mit dem Rechtezugriff konnte ich lösen indem ich unter MS-Windows die Berechtichtung eingerichtet habe (im Windows-Explorer unter security IUSER_XX_XX hinzugefügt und alle Rechte gegeben:) Sicherheitstechnische s.w. nicht optimal aberes funktioniert.

Diese Meldung kommt aber immer noch:)
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at cInetPub\wwwroot\de_Downloads.php:2) in cInetPub\wwwroot\de_Downloads.php on line 4


bzg. session_register() : Durch was wird/wurde die Methode bitte abgelöst?

Beste Grüsse
Geri


9.

Zitat:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at cInetPub\wwwroot\de_Downloads.php:2) in cInetPub\wwwroot\de_Downloads.php on line 4
Dazu sag ich nur:

Standard-Antwort:
Deine Frage wurde im Forum schon einige Male beantwortet. Bitte benutze die Suchfunktion, um nach anderen Themen zu suchen, in denen dieses Problem schon behandelt wurde.

Wenn Du eine Fehlermeldung zu sehen bekommen hast wäre es empfehlenswert nach dieser zu suchen.


10.

http://de2.php.net/session_register
insbesondere
Zitat:
Wenn Sie $_SESSION (oder $HTTP_SESSION_VARS) verwenden, sollten Sie nicht session_register(), session_is_registered() und session_unregister() verwenden.

du benutzt also einzig und allein das array $_SESSION. mit den üblichen funktionen wie. z.b. isset($_SESSION['varname']) prüfst du existenz usw.


zur fehlermeldung:
@johnpatcher hat dich schn drauf hingewiesen. kurzfassung: vor session_start() darf keine einzige ausgabe an den browser erfolgen (auch htmlcode oder ein leerzeichen zählt dazu). bei dir findet eine ausgabe aber schon in zeile 2 statt.


11.

Hallo zusammen

Allen vielen Dank. Ich habe das Problem nun gelöst. Die Lösung sieht folgendermassen aus:

Jede Seite, die geöffnet wird, setzt eine globale Variable Namens " Menu"
als z.B.
Code:                   In Zwischenablage kopieren (nur IE)
3">

oder auf der Seite Impressum:
Code:                   In Zwischenablage kopieren (nur IE)
4">

Daneben gibt es ein kleines Skript Names HorizontalMenu.php, wleches in jede Seite eingebunden ist.
ür jeden Menüpunkt wird abgefragt:

Code:                   In Zwischenablage kopieren (nur IE)
5">

Nochmals vielen DAnk für Eure Hinweise.

@johnpatcher: Hast recht, aber im Schreibfluss habe ich das gerade vergessen...:)

Beste Grüsse und ein schönes Wochenende
Geri

PS: Gerne sähe ich anhand eines konkreten Beispiels, wie ihr es mit Hilfe von php machen würdet


12.

Zitat:
PS: Gerne sähe ich anhand eines konkreten Beispiels, wie ihr es mit Hilfe von php machen würdet
Du hast es doch mit PHP gelöst, wodurch ein Seitenreload erforderlich ist ...


13.

mir ist nichts passenders eingefallen....:)

Gerne nehme ich aber interessante Anregungen entgegen.

Beste Grüsse
Geri


14.

Wie gesagt, eine andere (und meines Erachtens bessere) Methode wäre es, das ganze mit DHTML zu realiseren. Näheres dazu erfährst du hier.


Hier gehts zum Orginal Eintrag "Horizontale Menüzeile mit PHP" im Forum
 
phpforum.de | Impressum