php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.06.2008, 11:41  
Neuer Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 1
JahX befindet sich auf einem aufstrebenden Ast
Standard Menue -> dynamisch machen...

Hallo zusammen - Ich bin neu hier!
Vill. könnt ihr mir ja helfen. Mein Problem ist, meine Webseite ist aus vielen einzelnden PHP-Komponenten aufgebaut. (index.php, seite1.php, impressum.php ... etc) Und da ich recht häufig das Menü ändern muss, habe ich mir gedacht das ich es einfach auf jeder Seite include. Das Design sorgt aber dafür das im Menü die grade geöffnete Seite ein Symbol enthält und das nur die seiten der untergruppe zu sehen sind. (Hört sich kompliziert an...)

In dem Beispiel ist "Seite4" geöffnet:
  • Übergruppe1
    • - Seite1
    • - Seite2
    • - Seite3
    • -->Seite4
    • - Seite5
  • Übergruppe2
  • Übergruppe3
  • Übergruppe4
Im Code könnte das so aussehen:
Code:
          <div id="menumain">
            <a class="menuitem" href="ueber1.php">Übergruppe1</a>
            <div class="menusub" style="display:block;">
            <a class="menuitem" href="seite1.php">Seite1</a>
            <a class="menuitem" href="seite2.php">Seite2</a>
            <a class="menuitem" href="seite3.php">Seite3</a>
            <a class="menuitem" href="seite4.php" id="menuitemselect">Seite4</a>
            <a class="menuitem" href="seite5.php">Seite5</a>
            </div>

            <a class="menuitem" href="ueber2.php">Übergruppe2</a>
            <div class="menusub">
            <a class="menuitem" href="seite6.php">Seite6</a>
            <a class="menuitem" href="seite7.php">Seite7</a>
            <a class="menuitem" href="seite8.php">Seite8</a>
            <a class="menuitem" href="seite9.php">Seite9</a>
            <a class="menuitem" href="seite10.php">Seite10</a>
            </div>

            <a class="menuitem" href="ueber3.php">Übergruppe3</a>
            <div class="menusub">
            <a class="menuitem" href="seite11.php">Seite11</a>
            <a class="menuitem" href="seite12.php">Seite12</a>
            </div>

            <a class="menuitem" href="ueber2.php">Übergruppe3</a>
            <div class="menusub">
            <a class="menuitem" href="seite13.php">Seite13</a>
            </div>

            <a class="menuitem" href="ueber4.php">Übergruppe4</a>
            <div class="menusub">
            <a class="menuitem" href="seite14.php">Seite14</a>
            </div>
          </div>
Also: Durch style="display:block;" wird der Menüblock amgezeigt und durch id="menuitemselect" wird der Menüeintrag hervorgehoben.
Und jetzt würde ich gerne daraus ein dynamisches Menü machen sodass ich zumbeispiel einfach nur ein der PHP-datei das Menü durch eine Funktion aufrugen kann (menue("Übergruppe1","Seite4"); ??)

Vill. habt ihr ja eine Idee wie sich das realisieren lässt.

Freue mich über jede Idee, JahX
JahX ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.06.2008, 17:09  
dex
Erfahrener Benutzer
 
Registriert seit: 17.06.2008
Beiträge: 195
dex befindet sich auf einem aufstrebenden Ast
dex eine Nachricht über ICQ schicken
Standard

Schau dir doch bitte mal die $_GET-Methode an...
Findest bei Google...

Dann kannst du 's viel einfacher lösen!
Beispiel:
PHP-Code:
if(!isset($_GET["site"])) { $site "startseite.php"; } else { $site $_GET["site"]; }

include(
$site); 
Sowas in der Art!

Versuch erstmal die $_GET-Methode anzuwenden, bei weiteren Fragen, poste sie..


Gruß, dex

Geändert von dex (28.06.2008 um 22:54 Uhr).
dex ist offline  
Alt 28.06.2008, 17:39  
Erfahrener Benutzer
 
Benutzerbild von David
 
Registriert seit: 05.09.2007
Beiträge: 5.044
David wird schon bald berühmt werden
Standard

Vielleicht ist auch PEAR :: Package :: HTML_TreeMenu etwas für Dich.
David ist offline  
Alt 28.06.2008, 18:16  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Zitat:
Zitat von dex Beitrag anzeigen
Beispiel:
PHP-Code:
if(!isset($_GET["site"])) { $site "startseite.php"; } else { $site $_GET["site"]; }

include(
$site); 
Stop Stop! Auf keine Fall so machen. Damit kannst Du über die URL jedes beliebige Script includen!

Sieh Dir statt dessen mal dieses Posting ([Erledigt] Allgemeine Frage) und den gesamten Thread dazu an. Oder diese einfache Variante.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--

Geändert von nikosch (28.06.2008 um 18:21 Uhr).
nikosch ist gerade online  
Alt 28.06.2008, 21:53  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Kann man vielleicht so machen:

in jede Seite muss zuerst mal der Seitenname rein:

$seite = 'seite1';

In einer menu.php, die auf allen Seiten includiert wird, kommt dann rein:

PHP-Code:

// Menüpunkt1 ausgeben
echo $menupunkt1
if($seite=='seite1') {
  
// Untermenüpunkt für Seite 1 ausgeben
  
echo $menupunkt11;
  echo 
$menupunkt12;
}

// Menüpunkt2 ausgeben
echo $menupunkt2
if($seite=='seite2') {
  
// Untermenüpunkt für Seite 2 ausgeben
  
echo $menupunkt21;
  echo 
$menupunkt22;
 } 
In die Unterseiten des Menüpunktes 1 muss dann auch der $seite = 'seite1'. Dann sollte das schon funktionieren. GETten muss man da nix.

Geändert von Wolla (28.06.2008 um 22:25 Uhr). Grund: Fehler Korrigiert
Wolla ist offline  
Alt 28.06.2008, 22:14  
Neuer Benutzer
 
Registriert seit: 28.06.2008
Beiträge: 12
Bullymeo befindet sich auf einem aufstrebenden Ast
Standard

Möglich, dass du es schon weißt..., ... aber es ist viel einfacher, wenn man eine Standard-Seite hat (z.B. die index.php), in die man die Dinge jenach bedarf includet

--- index.php---
PHP-Code:
...
...
include(
"menu.php");
include(
$seitendatei);
...
... 
--------------

wobei $seitendatei aus der "menu.php" übergeben wird.

Auf diese Art brauchst du das Menü nicht in jede einzelne Seite includen sondern nur in eine einzige.
Und nicht nur das Menü, sondern auch Kopf- und Fuss- und sonstige Bereiche, die überall gleich sind.
In der Menu.php kannst du ja via Variable und CSS den ausgewählten Menüpunkt "highlighten"
Bullymeo ist offline  
Alt 28.06.2008, 22:49  
dex
Erfahrener Benutzer
 
Registriert seit: 17.06.2008
Beiträge: 195
dex befindet sich auf einem aufstrebenden Ast
dex eine Nachricht über ICQ schicken
Standard

Ich danke Dir, nikosch77...
Hab bisher nie ein Risiko dabei feststellen können, doch wenn man es sich genau überlegt, dann ist ein sehr Hohes dabei..

Hier mein "2." Quelltext, ich hoffe mal damit kann ich in Punkto Sicherheit nichts falsch machen:

PHP-Code:
<?php
if(isset($_GET["site"]))
            { 
            
$erlaubt = array("seite1.php","seite2.php",...);
            
$anzahl count($erlaubt);
            
$i 0;
            while(
$i $anzahl)
                 {
                 if(
$_GET["site"] == $erlaubt[$i])
                   {
                   include(
$erlaubt[$i]);
                   
$included 1;
                   }
                  
$i++;
                 }
            if(!isset(
$included))
              {
              echo 
"Include dieser Seite ist nicht erlaubt.";
              }
            }
          else
            { include(
"startseite.php"); }
?>
Bitte sagen, wenn ich damit falsch liege!

Gruß, dex

Geändert von dex (28.06.2008 um 22:52 Uhr).
dex ist offline  
Alt 29.06.2008, 00:57  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

Ich finde die Lösung in mehrfacher Hinsicht nicht so dolle (und empfehle weiterhin eine Lösung ähnlich der hier beschriebenen: http://www.php.de/php-einsteiger/133....html#post9744 ([Erledigt] Allgemeine Frage))

1/ Die Links sind nicht sehr hübsch und konfrontieren den Anwender mit Scriptnamen. Auch Suchmaschinen freuen sich über sprechende URL Bestandteile

2/ Ich finde es sinnvoll, Aliase und Fallbacks verwenden zu können, bspw. Home als Alias zu Start. Bei Deiner Lösung müßte man dazu dagegen zwei Dateien mit identischen Inhalten anlegen.

3/ URL Parameter sollte Groß/Kleinschreibung-unanhängig sein.

Speziell zu Deinem Code

- Die Schleife ist unnötig -> in_array () . Die for Schleife könnte ansonsten durch foreach besser gelöst werden

- Die Schleife erzeugt ein fehlerhaftes Verhalten, wenn Seiten mehrfach in $erlaubt enthalten sind: durch eine fehlende Abbruchbedingung würde der Inhalt mehrfach eingebunden

- Die Verwendung von $included ist obligat
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
Alt 29.06.2008, 23:44  
Moderator
 
Registriert seit: 06.06.2008
Beiträge: 4.945
PHP-Kenntnisse:
Fortgeschritten
Wolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer AnblickWolla ist ein wunderbarer Anblick
Wolla eine Nachricht über ICQ schicken
Standard

Irgendwie hat das wenig mit dem eingangs geschilderten Problem zu tun. Da steht, dass es eine Reihe von php-Dateien gibt - index.php, seite1.php, impressum.php und dass das noch statisch vorhandene Menü ausgelagert und dann includiert werden soll.

Also muss in jede der einzelnen Dateien rein: include "menu.php" - da muss kein GET-Parameter verifiziert werden und auch sonst nichts includiert werden.

Wie man das Menü gestaltet muss, damit es sich "ausklappt" habe ich schon gepostet. Aber ich vermute mal, dass der Fragesteller schon das Weite gesucht hat.
Wolla ist offline  
Alt 30.06.2008, 00:33  
moderatives Dielektrikum
 
Benutzerbild von nikosch
 
Registriert seit: 21.05.2008
Beiträge: 35.989
PHP-Kenntnisse:
Fortgeschritten
nikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunftnikosch hat eine strahlende Zukunft
Standard

@wolla: Das stimmt, zwar, aber es ist um vieles leichter ein automatisches Menüfeedback umzusetzen, wenn die Seitennavigation auch zentral gesteuert ist. Eine zentrale Indexdatei ist hier meist sinnvoller, als in lauter verschiedene Einzelseiten gleiche Seitenelemente einzubauen.

Mein Vorschlag war primär auch eine Reaktion auf den gefährlichen Vorschlag, GET Parameter direkt einzubinden.
__________________
--
One pixel is still too big. Please make it smaller. ASAP.

Initiative Mittelstand.
Die wichtigste Gestaltungsregel im Screendesign ist Pi mal Daumen des Arbeitgebers.
--
nikosch ist gerade online  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine 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
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Javaskript klappmenü dynamisch mit PHP Schubbcasten PHP Tipps 2008 9 15.07.2008 15:45
Checkboxen dynamisch in Tabelle erzeugen nussbaum PHP Tipps 2007 4 21.01.2007 16:50
tabelle... dynamisch etc.. goelliboy HTML, Usability und Barrierefreiheit 1 25.07.2006 01:09
Serverzeit dynamisch wiedergeben Rockmaster PHP Tipps 2006 4 19.02.2006 19:34
$_POST-Abfrage bei dynamisch erzeugten Komponenten SvenLittkowski PHP Tipps 2007 16 19.01.2006 08:54
kleines admin menue PHP Tipps 2007 25 29.12.2005 01:39
$_POST dynamisch auslesen? pino PHP Tipps 2007 7 02.12.2005 21:18
Pulldown Menü dynamisch aus Datei erzeugen PHP Tipps 2005-2 14 20.10.2005 11:18
dynamisch generierte HTML Seite speichern PHP Tipps 2005-2 10 19.10.2005 14:22
db tabellen dynamisch erstellen GELight PHP Tipps 2005-2 5 22.07.2005 14:35
dynamisch erstellte Formularfelder mit POST übergeben RoDa PHP Tipps 2005-2 3 19.06.2005 12:41
Uploadfelder dynamisch erzeugen und abfragen PHP Tipps 2005-2 1 03.06.2005 23:01
Absoluten Pfad in HTML-Seite dynamisch generieren Malfunction PHP Tipps 2005 4 30.01.2005 12:05
Variablenname dynamisch zusammensetzen RoDa PHP Tipps 2004 3 19.09.2004 14:13
Dynamisch erstellte Variablen ansprechen PHP Tipps 2004 2 08.08.2004 20:15

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
menü item php übergeben

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:52 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum