php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 31.03.2006, 16:59  
axo
Erfahrener Benutzer
 
Registriert seit: 24.12.2004
Beiträge: 1.814
axo ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von alter mann
OK. Verstanden.
Frage mich nur warum Typo3 dann nicht nach dem Nested Set arbeitet?
Oder meint ihr das gerade deswegen Typo3 in der Performance langsam ist?

Würde mich mal interessieren.

Gruß
zu dem zeitpunkt, an dem kasper mit typo3 angefangen hat, gab es das modell glaub ich noch gar nicht , und ich trau mich wetten (beim anschauen des codes), dass er (zumindest damals) auch als datenbank-programmierer nicht erfahren genug war.

er hat sich aber auf andere weise beholfen: er hat einen mächtigen und relativ gut durchdachten caching-mechanismus gebaut, der diese 'design-schwächen' ausgleicht. außerdem braucht typo3 - soweit ich das sehe, nur eine abfrage pro menüebene, und da die meisten menüs nur ca. 3-5 ebenen tief sind, braucht er für's menü auch nur max. 5 abfragen.

mit dem nested set model braucht man aber nur fix 2 abfragen, egal wie tief das ganze geht. kleiner unterschied
axo ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 31.03.2006, 17:40  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi "alter mann".

Aus deinem Beispiel-Baum wird nicht ersichtlich, ob tatsächlich der komplette Baum angezeigt werden soll oder nur die übliche Navigationsansicht, in der quasi alle Knoten "collapsed" sind, die nicht auf dem Pfad zum aktuellen Knoten liegen.

Nested Sets eignen sich prima für Lesezugriffe, da sich viele übliche Anfragen in eine Query packen lassen. Allerdings sind Schreibzugriffe ziemlich teuer, da bei einer einfachen Änderung der ganze Rest des Baumes geändert weden muss. Also für Sitemaps prima geeignet, für Foren absolut nicht.

Hier ein ganz gutes Tutorial:
http://develnet.org/36.html

Basti
Basti ist offline   Mit Zitat antworten
Alt 31.03.2006, 17:53  
Gast
 
Beiträge: n/a
Standard

Hi Basti,

es soll der komplette Baum angezeigt werden, weil es kein Menu werden soll sondern eine Übersicht.

Dachte ich mir das Nested Set ein Manko hat. Wenn man nämlich einen Punkt verschiebt dann muß man alle Punkte die darunter liegen abändern. Viel zu kompliziert finde ich.

Vielleicht kannst du mir bei dem Problem helfen?

Wie gesagt will ich den kompletten Baum anzeigen lassen und komme bis jetzt nur wie bei 1 beschrieben.

:P
  Mit Zitat antworten
Alt 31.03.2006, 21:37  
Erfahrener Benutzer
 
Registriert seit: 18.07.2004
Beiträge: 2.162
PHP-Kenntnisse:
Fortgeschritten
Basti
Standard

Hi.

Ich kopier dir hier mal eine Sitemap-Klasse von mir rein, ist aber sicher schnell an deine
Anforderungen angepasst. Im Konstruktor liest du einfach die komplatte DB-Tabelle ein und die
Aufrufe an das Sitemap-Objekt kannst du ja leicht anpassen. Vielleicht geschickt erstmal alle
Datensätze durchzugehen und den Root-Knoten extra zu speichern, sowie ein Array mit allen
Knoten die Kinder haben. Etwa so:
PHP-Code:
<?php
while ($r->fetch() = $aRecord) {
    if (
$aRecord['parent'] === 0) {
        
$this->iRootNode $aRecord-['parent'];
    } else {
        
$this->aChildren[$aRecord][] = $aRecord;
    }
}
?>
Ach ja, die Klasse:
PHP-Code:
<?php

class SitemapMenu
{
    private 
$Sitemap null;
    
    public function 
__construct(Sitemap $Sitemap)
    {
        
$this->Sitemap $Sitemap;
    }
    
    public function 
render($sPre ''$sIndent="\t"$aSubTree null)
    {
        if (!isset(
$aSubTree))
            
$aSubTree = array($this->Sitemap->getRootNode());

        if (
=== sizeof($aSubTree))
            return 
'';
        
        
$sHTML "$sPre<ul>\n";
        
        foreach (
$aSubTree as $aItem) {
            
$sHTML .= "$sPre$sIndent[*]";
            
$sHTML .= sprintf(
                
'[url="%s"]%s[/url]',
                
$aItem['url'],
                
$aItem['title']);
            
            if (
$this->Sitemap->hasChildren($aItem['id'])) {
            
                
$sHTML .= "\n";
                
$sHTML .= $this->render(
                    
$sPre.$sIndent.$sIndent
                    
$sIndent,
                    
$this->Sitemap->getChildNodes($aItem['id']));
                
$sHTML .= "$sPre$sIndent";
            }    
                
            
$sHTML .= "\n";
        }
        
$sHTML .= "$sPre[/list]\n";
        
        return 
$sHTML;
    }
}
?>
Basti
Basti ist offline   Mit Zitat antworten
Antwort


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
RTF mit PHP auslesen und anzeigen möglich ? RaBastel PHP Tipps 2008 8 10.03.2008 10:03
Mehrere div's mit gleichen ID anzeigen / ausblenden phpbeginner HTML, Usability und Barrierefreiheit 9 06.09.2007 02:48
Baumstruktur die man drehen kann aktionkuba Datenbanken 1 07.04.2006 16:44
Anzeigen wenn keine Einträge in Datenbank! c-bass PHP Tipps 2006 6 22.03.2006 13:49
PHP Seiten auf der Festplatte anzeigen lassen? PHP Tipps 2006 7 25.01.2006 19:53
Bilder anzeigen und nicht anzeigen Cyrus PHP Tipps 2005-2 7 26.10.2005 20:23
Daten aus Datenbank auslesen und in PHP-Seite anzeigen PHP Tipps 2005-2 1 28.08.2005 20:16
PHP Code lässt sich nicht anzeigen! Asipak PHP Tipps 2005-2 7 19.07.2005 19:16
Schleifendurchlauf anzeigen Lia PHP Tipps 2005 9 03.06.2005 10:43
Datenbankabfrage: Ergebnisse anzeigen PHP Tipps 2005 5 07.04.2005 10:31
Formular nach UPDATE anzeigen PHP Tipps 2004-2 5 22.12.2004 02:06
[Erledigt] Cookie - Seite anzeigen / nicht anzeigen PHP Tipps 2004-2 2 11.11.2004 15:59
ANzeigen von Dateien oder Inhalten flual2000 PHP Tipps 2004-2 1 08.11.2004 12:31
Alle Datenbanken und Tabellen anzeigen anzeigen imported_Lumio PHP Tipps 2004 4 13.09.2004 14:26
Xampp, eigene Dateien anzeigen... Server, Hosting und Workstations 4 19.06.2004 23:36

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
website als baum anzeigen, website baumstruktur anzeigen, baumstruktur sitemap, nested set baumdarstellung mit html darstellen, webseiten in baumstruktur anzeigen, webseite als baumstruktur darstellen, php html-seite als baum ausgeben, typo3 sitemap als baum anzeigen, typo3 \$shtml\, typo3 verschachtelte datenbankabfrage, ebene linie baum php, baumstruktur seite anzeigen, datenbank baumstruktur in html darstellen, baumstruktur anzeige alles, typo3 nested sets, navigation \5 ebenen\ usability, php baumstruktur darstellen, seite als baum anzeigen, baumstruktur auflisten php, baumstruktur von webseite anzeigen von html:// anzeigen

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