PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr (https://www.php-resource.de/forum/)
-   PHP Developer Forum (https://www.php-resource.de/forum/php-developer-forum/)
-   -   PHP Navi Aktivzustand Probleme! (https://www.php-resource.de/forum/php-developer-forum/102125-php-navi-aktivzustand-probleme.html)

mellajoon 31-08-2011 13:04

PHP Navi Aktivzustand Probleme!
 
Hallo liebe Mitglieder,
nun habe ich viel gegoogelt und leider keine Hilfe bekommen und hoffe hier geholfen zu werden. Bin ganz neu im Bereich PHP und habe eine Seite home.php worin ein <?php include("navi.php")?> eingebaut habe.
Alles funzt super, nur möchte ich, wenn die Seite aufgerufen wird z.B. Vorwort, dass der Link im Navibereich rot bleibt. Beim Hover zeigt es rot an, aber so wie man auf der Seite ist, verschwindet es wieder. So sieht meine navi.php Seite aus:

PHP-Code:

<?php

echo'<a href="home.php">&bull; Home</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="vorwort.php">&bull; Vorwort</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="klassische_massagen.php">&bull; Klassische Massagen</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="ayurvedische_massagen.php">&bull; Ayurvedische Massagen</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="Wellness_Massagen.php">&bull; Wellness Massagen</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="Massagen_am_Arbeitsplatz.php">&bull; Massagen am Arbeitsplatz</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="Ulrike_Gibbert">&bull; Kurzprotait Ulrike Gibbert</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="Preise.php">&bull; Preise</a><br>';
echo
'--------------------------------------------<br><br>';

echo
'<a href="Kontakt">&bull; Kontakt</a><br>';
echo
'--------------------------------------------<br><br>';


?>

Hoffe Ihr könnt mir helfen!!!

Vielen lieben Dank!!!

AmicaNoctis 31-08-2011 13:16

Hallo,

nur mit CSS alleine ist das nicht möglich. Um das zu erreichen, musst du ermitteln, welche Seite geladen werden soll und welcher Navigationspunkt dazu gehört. Diesen Punkt musst du dann mit PHP so auszeichnen, dass er als aktiv erscheint, z. B. über class="active" oder aber gar nicht als Link, sondern z. B. als strong-Element, da man ihn ja ohnehin nicht mehr anzuklicken braucht.

Ich hab auf Home page ein Beispiel hinterlegt, wie man es machen könnte. Dort wird zunächst eine hierarchische Sitemap definiert und dann gibt es zwei Funktionen – eine zum Erzeugen der Navigation und eine zum ermitteln des richtigen Seitentitels. Vielleicht hilft dir das als Anregung.

Gruß,

Amica

mellajoon 31-08-2011 13:27

Ohje, geht das nicht irgendwie einfacher??? :(

Das ist der Link zur Seite, was in Aufbau ist. Bisher hat das mein Programmierer gemacht, aber der hat Urlaub und nun hab ich da die Probleme :-(

Home

Danke!!!

AmicaNoctis 31-08-2011 13:32

Klar, geht auch. Frag $_SERVER["REQUEST_URI"] ab, und überprüfe für jeden Navigationspunkt, ob die URI passt. Da kannst du per Fallunterscheidung (if…else) oder ternärem Operator (…?…:…) festlegen, wie der Navigationspunkt zusammengebaut werden soll.

Das ist zwar dann nur eine Ebene und damit sind keine hierarchischen Menüs möglich, aber es ist etwas einfacher.

mellajoon 31-08-2011 13:34

Danke für deine Hilfe, nur wenn ich wüsste wie das geht :{ bin total neu auf dem Gebiet

AmicaNoctis 31-08-2011 13:38

Wenn du es lernen willst, musst du da durch. Wie du vorgehen musst, weißt du ja jetzt, also kannst du ja etwas herumexperimentieren und im Handbuch lesen. Fertige Lösungen gibt es hier nicht, nur Hilfe zur Selbsthilfe. Ansonsten musst du halt warten, bis dein Programmierer frisch erholt zurückkehrt.

mellajoon 31-08-2011 13:43

Das ist mir schon klar und natürlich möchte ich das auch selber machen und nichts fertiges vor die Nase bekommen, nur hilft es mir nicht wirklich weiter, wenn ich nicht mal weiß wo ich das einsetzen muss :-(

Dennoch vielen Dank!!!

AmicaNoctis 31-08-2011 13:51

Zitat:

Zitat von mellajoon (Beitrag 656346)
wenn ich nicht mal weiß wo ich das einsetzen muss

Wenn du deine Fragen etwas konkretisieren kannst, können wir dir vielleicht helfen. Was meinst du z. B. genau mit dem obigen Satz? Welche Kenntnisse hast du bereits?

mellajoon 31-08-2011 14:03

Vielen Dank für deine Mühe und das du helfen möchtest :jo:

Okey, ich versuche es noch mal zu beschreiben :)

Mein Problem ist, dass ich bisher nur sehr einfach PHP bearbeitet habe. Include und echo, so wie ich es oben gepostet habe. Nun habe ich auf eine separate Datei (navi.php) die Navi eingebaut (was oben auch zu sehen ist). In CSS habe ich die Farben, Größe usw festgelegt, aber wenn die Seite auf der entsprechenden Seite ist, ist der Link nicht mehr rot (also im aktivstzustand) und nun würde ich gerne wissen, ob man auf eine einfache Weise ohne großen Programmierung mit if else usw. ein Befehl in CSS oder in der navi.php einfügen kann.

Hoffe ich konnte es einigermaßen gut erklären :rolleyes:

AmicaNoctis 31-08-2011 14:09

Okay, darauf kann ich dir eine klare Antwort geben: Nein. Nur mit include und echo ist da nichts zu machen und es geht nur mit if und else und sowas.

Die gute Nachricht: if und else sind nicht schwer zu erlernen. Das Kapitel Sprachreferenz im Handbuch sollte für diese Aufgabe locker reichen.

mellajoon 31-08-2011 14:14

Wie schade..., dann werde ich mich da mal schlau machen. Vielen lieben Dank!

Malachite 31-08-2011 17:16

Wie wärs, wenn du die einzelnen Links in einem verschachtelten Array speichertest und das dann per foreach ausgäbest? ;)
Spart Platz (ist also performanter), ist leichter zu warten (weil der Code nicht redundant gespeichert wird), spart außerdem Tipparbeit und ist übersichtlicher. So sähe das dann aus (mit der Lösung deines eigentlichen Problems, also dass auf der aktuellen Seite deren Link rot bleibt):
PHP-Code:

<?php
$menu 
= array (
  array(
"index","Home"),
  array(
"vorwort","Vorwort"),
// und so weiter; immer array("Dateiname ohne .php","Beschriftung")
)
/*
Noch ein paar Tipps:
- Da alle Dateien auf .php enden (bei "Ulrike_Gibbert" und "Kontakt" hast du das offenbar vergessen,
  denn diese Links geben nur einen 404 Error),
  kann man das hier weglassen und in die foreach-Schleife einbauen
- Die Startseite sollte immer index.dateinamensendung (hier also index.php) heißen,
  damit sie vom Browser aufgerufen wird, wenn dieser keine Zieldatei angibt
- Bei einem Unix-Server (auf welchem deine Seite höchstwahrscheinlich läuft),
  wird Großschreibung bei Dateinamen beachtet, d.h. Index.php != index.php. 
  Daher sollte man sich angewöhnen, Dateinamen immer kleinzuschreiben. Folgendes wird bei Unix-Servern nicht funktionieren: 
    Dateiname: ulrike_gibbert.php
    HTML-Link: <a href="Ulrike_Gibbert.php">Kurzportait Ulrike Gibbert</a>
- &bull; ist für Listenzeichen im laufenden Text gedacht. Für Auflistungen gibt es ul und li
So, jetzt weiter:
*/
echo "<ul>";
foreach (
$menu as $element) {
  if (
$element[0]."php" == $_SERVER['PHP_SELF']) { // Wenn Link gleich aktuelle Seite
    
$add " style=\"color:red\""// oder per CSS-Klasse
  
} else { // Damit es keine Notice' gibt
    
$add "";
  }
  echo 
"<li><a href=\"$element[0].php\"$add>$element[1]</a></li>\n";
}
echo 
"</ul>";
?>

Ich habe den Code jetzt nicht getestet, kann sein dass er noch fehlerhaft ist.

TobiaZ 31-08-2011 18:42

dann doch gleich so:

array('vorwort' => 'Vorwort', ...);

Auf den ersten Blick fehlt noch mindestens ein Punkt. Aber ansonsten gefällt mir der Ansatz gut (ohne das Problem gelesen zu haben) :).

Malachite 31-08-2011 18:54

Zitat:

Zitat von TobiaZ (Beitrag 656356)
dann doch gleich so:

array('vorwort' => 'Vorwort', ...);

Und wie willst du dann den Dateinamen rausfinden ;) ? Und wozu braucht man eigentlich assoziative Arrays, wenn man sie nur mit foreach-Schleifen behandeln will?

TobiaZ 31-08-2011 19:43

na, der dateiname steckt genauso wie bei dir im "vorwort".

und die assoziativen arrays machen auch die Arbeit mit den foreach-Schleifen einfacher... ;)


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:00 Uhr.

Powered by vBulletin® Version 3.8.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.0
[c] ebiz-consult GmbH & Co. KG