php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 27.08.2006, 18:10  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard Fehler in rekursiver Funktion

Hallo zusammen,

ich komme leider kein Stück weiter. Mal läuft es durch, mal läd es unendlich, mal gibt es einen Fehler der Art:
Fatal error: Maximum execution time of 120 seconds exceeded in ...

Ich verstehs nicht, vielleicht seht ihr irgendetwas.

Ist ein Teil einer Sitemap, die "hirachisch" angeordnet werden kann. Es gibt also Elternelemente. Diese Funktionen stellen diese Sitemap in einer Liste dar, so dass entsprechend Kindelemente eingerückt werden usw. Diese Liste ermöglicht es dann die entsprechenen Elternelemente auszuwählen.

PHP-Code:
// Aufruf der Funktion
$lists = array();
$lists['parents'] = SitemapParentList$row ); 
Wird dann an den HMTL Output übergeben.
$row enthält als Objekt alle Daten der entsprechenden Tabelle aus der Datenbank.

PHP-Code:
function SitemapParentList$row ) {

    global 
$database;

    
$id '';
    if ( 
$row->id ) {
        
$id "\n WHERE s.id != $row->id";
    }
        
    
// get a list of the menu items
    // excluding the current menu item and its child elements
    
$query "SELECT s.id, s.parent, s.name, s.menu_id, m.menutype"
    
"\n FROM jos_sitemap_xtd AS s"
    
"\n INNER JOIN jos_menu AS m"
    
$id
    
"\n ORDER BY s.parent, s.ordering"
    
;
    
$database->setQuery$query );
    
$sitems $database->loadObjectList();

    
// establish the hierarchy of the menu
    
$children = array();
            
    if ( 
$sitems ) {
        
// first pass - collect children
        
foreach ( $sitems as $v ) {
            
$pt     $v->parent;
            
$list     = @$children[$pt] ? $children[$pt] : array();
            
array_push$list$v );
            
$children[$pt] = $list;
        }
    }

    
// second pass - get an indent list of the items
    
$list makeSitemapTree0'', array(), $children200);
            
    
// assemble menu items to the array
    
$sitems     = array();
        
// create an select list option item
    
$sitems[]     = mosHTML::makeOption'0''Top' );
        
    foreach ( 
$list as $item ) {
        
$sitems[] = mosHTML::makeOption$item->id''$item->treename );
    }

    
$output mosHTML::selectList$sitems'parent''class="inputbox" size="'.count($sitems).'"''value''text'$row->parent );

    return 
$output;
}

function 
makeSitemapTree$id$indent$list, &$children$maxlevel=9999$level=0) {

    if (@
$children[$id] && $level <= $maxlevel) {
        foreach (
$children[$id] as $v) {
            
$id $v->id;
            
            
$pre     '-';
            
$spacer '';
            
            empty(
$v->menutype) ? $menutype='no menu item' $menutype "$v->menutype";

            if ( 
$v->parent == ) {
                
$txt     $v->name .' ('$menutype .' | Itemid: '$v->menu_id .')';
            } else {
                
$txt     $pre $v->name.' ('$menutype .' | Itemid: '$v->menu_id .')';
            }

            
$pt $v->parent;

            
$list[$id] = $v;

            
$list[$id]->treename "$indent.$txt"//Hier gibt es angeblich den 'Maximum execution time' Fehler

            
$list[$id]->children count( @$children[$id] );

            
$list =  makeSitemapTree$id$indent $spacer$list$children$maxlevel$level+);
        }
    }
    return 
$list;

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

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

Alt 27.08.2006, 20:24  
Erfahrener Benutzer
 
Registriert seit: 16.02.2006
Beiträge: 303
tinchen
Standard

Hab ihn gerade nach drei Stunden Suche gefunden:

PHP-Code:
    $query "SELECT s.id, s.parent, s.name, s.menu_id, m.menutype"
    
"\n FROM jos_sitemap_xtd AS s"
    
"\n INNER JOIN jos_menu AS m"
    
$id
    
"\n ORDER BY s.parent, s.ordering"
    

Hier fehlt die Verbindung der beiden Tabellen per ON - jetzt geht es.
Ganz schön blöde.

Gruß
Tine
tinchen 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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Rekursive Funktion bricht ab... duras666 PHP Tipps 2008 9 28.04.2008 11:36
Name der aufrufenden Funktion mAy^daY PHP Tipps 2007 5 20.01.2007 22:55
Komplexe Funktion: +Übersichtlichkeit, -Performance Jacks Rache PHP Tipps 2006 3 07.06.2006 14:22
fehler in einer funktion imported_master PHP Tipps 2006 3 08.04.2006 21:10
[Erledigt] Zugriff auf eine Klasse innerhalb einer Funktion -&amp;amp;gt; Fehle PHP-Fortgeschrittene 23 05.02.2006 13:02
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Funktion in Koordinatensystem zeichnen - Finde Fehler nicht PHP Tipps 2005-2 5 20.10.2005 22:05
Rückgabewert einer rekrusiven Funktion PHP-Fortgeschrittene 7 06.10.2005 18:44
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
In einer Funktion auf eine Funktion der Klasse zugreifen phpbeginner PHP Tipps 2005-2 2 28.07.2005 00:30
Funktion in einer Funktion aufrufen? PHP Tipps 2005-2 11 14.06.2005 15:14
Problem mit einer rekursiven Funktion in einer Klasse ajo_silent PHP-Fortgeschrittene 6 13.06.2005 16:40
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
mail funktion funzt net es kommt ein fehler phpfortgeschrittener PHP Tipps 2004 4 29.08.2004 01:07
LIMIT(?) Fehler Schaelle Datenbanken 0 28.08.2004 14:11

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
rekursive funktion get childs, loadobjectlist bricht ab

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