php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 01.04.2007, 17:37  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard Listenmenu

Servus,

derzeit arbeite ich an einem Listemmenü in HTML. Das Problem ist nun,
dass der HTML und CSS Code fertig ist, ich die Generierung aber nicht
auf die Reihe bekomme.

Das soll also rauskommen.

Code:
<ul id="menu">
	[*]punkt1
	[*]punkt2
	[*]punkt3
		<ul>
			[*]unterpunkt3.1
			[*]unterpunkt3.2
		[/list]	[/list]
Und so weiter.

Ich habe nur vier verschiedene Ansätze gehabt und vorhin alles
gekillt, weil ich einfach nicht weiter gekommen ist. Aus der DB habe
ich die Links und jeweils ein Flag Parent, der anzeigt, wann ein Menüpunkt
Eltern hat, wenn erste Ebene dann eben 0. Zudem gibt es ein ordering,
innerhalb der Menüpunkte. Und selbstverständlich sind mehre Ebenen
möglich. Ich komm einfach nicht klar. Habt ihr da einen Tipp, wie man
das am geschicktesten macht?

Grüße
Tine
tinchen ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 01.04.2007, 18:10  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

die tabellenstruktur mit parrent_id ist Ok und ist für Menu vollkommen ausreichend.
damit ich dir weiter was empfehlen kann, würde ich gerne wissen wie offt wird sich menu verändern? wenn es nur um die selltene veränderungen handelt, dann sind die mögliche Einsätze ganz anders als bei einem Menu, die sich ständig dynamisch verändert.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 01.04.2007, 18:12  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Rekursion

PHP-Code:
<?php
function displayMenu($iParentMenu 0$iDepth 0)
{
  
$sQuery sprintf('SELECT * FROM menu WHERE parentid = %u ORDER BY ranking ASC'$iParentMenu);
  
// das übliche
  
if (mysql_num_rows() > 0) {
    print(
'<ul>');
    while (..) {
      
printf('[*]%s'$row['menuname']);
      
displayMenu($row['parentid'], $iDepth 1);
      print(
'');
    }
  }
}
//..
displayMenu();
?>
Das Menü solltest du aber entweder cachen oder in die displayMenu() einen Cache-Parameter einbauen, um nicht pro Menütiefe und Punkt eine Datenbankabfrage abzuschicken.
Zergling-new ist offline  
Alt 01.04.2007, 18:14  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Hallo Slava,

das Menu ist vollkommen dynamisch. Eine Tabellenkonstruktion wäre zumindest für
mich viel einfacher, aber dieses ineinander verschachtelte ul il ul, stellt mich
vor Probleme, gerade da die Tags ja nicht immer wieder sofort geschlossen werden.
Vielleicht ist die Lösung auch ganz nah, aber seit drei Tagen beiße ich mir die Zähne aus.
tinchen ist offline  
Alt 01.04.2007, 18:15  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Sind ein paar Fehler drin und vollständig ist es auch nicht, aber das bekommst du hin
Zergling-new ist offline  
Alt 01.04.2007, 18:18  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Bei Rekursion war ich schon, nur dieses öffnen und schließen der ul/li im richtigen
Moment macht mich kirre.
tinchen ist offline  
Alt 01.04.2007, 18:21  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

jetzt hast du die lösung von Zergling bekommen.

die Menu ändern sich nicht von aleine, sondern werden von bestimmten Scripten verändert.
bei dem script, der eine veränderung im menu macht muss du die ausgaben von dem Zergling vorgeschlagener function in eine datei speichern und bei zeichnen von deinem menu einfach der inhalt von deiser Datei an passender stelle einbinden.
Im klar-text wird deine Menu nie von DB sondern von datei gelesen.
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 01.04.2007, 18:28  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Zitat:
Zitat von tinchen
Bei Rekursion war ich schon, nur dieses öffnen und schließen der ul/li im richtigen
Moment macht mich kirre.
Dann sag ich dir besser wo's einen Fehler gibt:[/list]muss hinter die while-Schleife aber noch vor die schließende geschweifte Klammer von if
Zergling-new ist offline  
Alt 01.04.2007, 18:33  
Erfahrener Benutzer
 
Registriert seit: 17.01.2006
Beiträge: 468
Slava
Standard

OT:
Hi Zergling!
du hast ein super-ranking bei google
http://www.google.de/search?hl=de&q=...in+Kalifornien
__________________
Slava
http://bituniverse.com
Slava ist offline  
Alt 01.04.2007, 19:41  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard

Am liebsten wärs mir garnicht da aufzutauchen. Ich werd demnächst zumindest mal die Signatur wieder ändern
Zergling-new ist offline  
 


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


Alle Zeitangaben in WEZ +2. Es ist jetzt 18:45 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

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.