php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 09.01.2005, 20:31  
Gast
 
Beiträge: n/a
Standard Hilfe - Rekursive Funktion

Hallo,

habe das ein kleines Problem und weiß nicht, wie ich es am besten lösen soll!

Also ich habe eine Tabelle mit User, wobei die Spalte parent_user jeweils den übergeordneten User angibt (z.B. 1->2->8; 7->3)

|-user_id-|-parent_user-|
| 1 | 0 |
| 2 | 1 |
| 8 | 2 |
| 7 | 0 |
| 3 | 7 |

und ein array aus einer mysql-Abfrage

|-einheiten-|-user_id-|
| 12.39 | 1 |
| 2.00 | 2 |
| 1.5 | 3 |
| 2.00 | 8 |

Jetzt brauche ich eine Liste, die einerseits die Einheiten pro Nutzer gegliedert nach den jeweiligen parent_user und einmal die gesamte Summe aller untergeordneten User eines Users.

z.B. bei User 1

12.39 (von User 1) + 2.00 (von User 2) + 2.00 (von User 3).

Kann mir jemand sagen, wie ich dies am effektivsten erledigen kann?
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 09.01.2005, 22:54  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Gehe einmal davon aus, dass du eher das da meinst:

12.39 (von User 1) + 2.00 (von User 2) + 2.00 (von User 8).


Wenn nicht, hab ich den Sinn des ganzen nicht kapiert

Du hast zwei Arrays (1. User-ID --> Einheiten und 2. Parent-User --> eine oder mehrere User-IDs) und hast einen Startwert (ID 1). Du holst die Einheiten und anschliessend aus em zweiten Array alle untergeordneten User der ID 1. Für diese springst du wieder in die Funktion mit dem jeweils neuen Startwert.
Wenn du bereits im Vorfeld Cycles ausschliesst, ist das eigentlich alles kein Problem...
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 09.01.2005, 23:14  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von mepeisen
Gehe einmal davon aus, dass du eher das da meinst:

12.39 (von User 1) + 2.00 (von User 2) + 2.00 (von User 8).
Ja, das stimmt.

Wie würde so eine Funktion aussehen? Habe noch nicht lange mit PHP programmiert.
 
Alt 09.01.2005, 23:30  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

hmmmmm.

So ins blaue einmal dies:
Code:
function berechneEinheiten($ID)
{
    global $user_einheiten, $user_hierarchie;
    $einheiten = $user_einheiten[$ID];
    if (isset($user_hierarchie[$ID]))
    {
        foreach ($user_hierarchie[$ID] as $untergeordnet_ID)
        {
            $einheiten+=berechneEinheiten($untergeordnet_ID);
        }
    }
    return $einheiten;
}
Musst halt dafür sorgen, dass die zwei Arrays vorher richtig aufgebaut wurden und vielleicht etwas damit spielen. Probiere es einmal aus
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 10.01.2005, 16:30  
Gast
 
Beiträge: n/a
Standard

Vielen Dank für die schnelle Antwort.

Der Code funktioniert einwandfrei!
 
Alt 10.01.2005, 22:19  
Gast
 
Beiträge: n/a
Standard

PHP-Code:
<?php 
function berechneEinheiten($ID

    global 
$user_einheiten$user_hierarchie,$strg_user,$user,$a,$b,$count
    
$einheiten $user_einheiten[$ID];

    if (isset(
$user_hierarchie[$ID])) 
    { 
        foreach (
$user_hierarchie[$ID] as $untergeordnet_ID
        {         
                
                
$einheiten+=berechneEinheiten($untergeordnet_ID); 
            
        } 
     
    }
    
$a $einheiten//kumulierte Einheiten
    
$b $user_einheiten[$ID]; // Einheiten je User
    
$strg_user "<tr><td width=\"200\">" .$user[$ID]['lastname'] .", " .$user[$ID]['firstname'] ."</td><td width=\"50\">" .$a ."</td><td width=\"50\">".$b ."</td></tr>\n" .$strg_user;
    return 
$einheiten
}
?>
soweit so gut ... nur habe ich noch ein bissl Probleme mit der Strukturierung. Wo muss ich den entsprechenden Code reinschreiben?
Die untergeordneten User sollen etwas eingerückt werden.
 
 


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
JS: Einführung - Javascript im Schichtenmodell nikosch Tutorials 4 11.04.2009 17:06
Rekursive Funktion funktioniert lokal, aber nicht remote? Anotherone PHP-Fortgeschrittene 1 21.06.2008 08:11
gpc_quotes funktion: verbesserungsvorschläge? Promaetheus PHP Tipps 2007 10 12.08.2007 19:29
Rekursive Funktion tinchen PHP Tipps 2007 7 18.02.2007 19:54
Ein Funktion mit einem Link öffnen? hilfe gebraucht Bruce PHP Tipps 2006 1 19.01.2006 13:37
ergi_replace & funktion Hilfe zapate PHP Tipps 2006 6 04.01.2006 13:31
[Erledigt] HILFE HILFE HILFE mysqladmin.exe fehlt Datenbanken 7 20.12.2005 14:00
PHP-GTK Tutorial Beitragsarchiv 9 02.11.2005 21:07
Hilfe bei kleiner Funktion PHP Tipps 2005-2 1 24.08.2005 09:35
[Erledigt] Wie kann ich beliebig viele Werte an eine Funktion übergeben PHP Tipps 2005 11 25.01.2005 10:44
Funktion() anwendung -bitte um Hilfe PHP Tipps 2004-2 17 08.12.2004 11:58
sql anfrage in funktion greenrover PHP Tipps 2004-2 4 10.11.2004 14:58
Anfänger braucht hilfe bei blättern funktion PHP Tipps 2004 3 04.11.2004 12:46
js funktion HTML, Usability und Barrierefreiheit 5 28.07.2004 12:52
Hilfe bei einer if/else funktion PHP Tipps 2004 6 12.07.2004 13:00

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
forum rekursive funktion php, php rekursive funktion, rekursive funktion php, http://www.php.de/php-tipps-2005/15683-hilfe-rekursive-funktion.html

Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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.