Fahrtenbuch genial!
-


Hinweise


Antwort
 
LinkBack Themen-Optionen Thema durchsuchen Thema bewerten
Alt 05.08.2003, 12:49   #1
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt

Rekurisve Funktion probs


Hi Folks!

Hab mir eine rekursive Funktion gebaut mit der ich eine Art Navigation ala Explorer dartstellen will.

PHP-Code:
    // Rekurisve Funktion für darstellen des Baums
    
function getBaum ($id,$openID,$space="",$level=0){
        
        
$baum "";
        
        
$erg $this->query("SELECT objekt_id,name,mutterobjekt_id FROM objekte WHERE mutterobjekt_id = '".$id."'");
        while (
$record mysql_fetch_array($erg)){
            
            if (
$level == 0$baum.= $space."<a class=\"navi\" onClick=\"javascript:zweiFrames(0,'navi.php?openID=".$record['objekt_id']."',1,'showobjekt.php?objekt_id=".$record['objekt_id']."');\" href=\"#\">".$record['name']."</a><br />";
            else 
$baum.= $space."<a target=\"mainFrame\" class=\"navi\" href=\"showobjekt.php?objekt_id=".$record['objekt_id']."\">".$record['name']."</a><br />";

            if (
$openID != 0){
                if (
$openID == $record['objekt_id']) // Let's party
                    
$baum.= $this->getBaum($record['objekt_id'],$record['objekt_id'],$space."&nbsp;&nbsp;&nbsp;",1);
                if (
$level == 1)
                    
$baum.= $this->getBaum($record['objekt_id'],$record['objekt_id'],$space."&nbsp;&nbsp;&nbsp;",1);
            }
            
        }
        
        return 
$baum;
    } 
Er liest die Sachen aus einer Tabelle aus. Mutterobjekte haben die Mutterobjekt_id 0. Habe die Navigation aus performancegründen in einen Frame gepackt, deshalb auch das JS, falls ihr euch fragt.

Das Problem ist jetzt, dass er mir bei einem n-tiefen Level einfach aufhört, das komische ist aber, dass das in verschiedenen Levels passiert.

Was kann dafür der Grund sein?
Gruß
Alex
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten


Alt 05.08.2003, 13:33   #2
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
wozu ist das gut?:

if ($level == 1)
$baum.= $this-> getBaum($record['objekt_id'],$record['objekt_id'],$space."&nbsp;&nbsp;&nbsp;",1);
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 05.08.2003, 13:41   #3
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
PHP-Code:
if ($openID != 0){

                if (
$openID == $record['objekt_id']) // Let's party

                    
$baum.= $this-> getBaum($record['objekt_id'],$record['objekt_id'],
$space."&nbsp;&nbsp;&nbsp;",1);

                if (
$level == 1)

                    
$baum.= $this-> getBaum($record['objekt_id'],$record['objekt_id'],
$space."&nbsp;&nbsp;&nbsp;",1);

            } 
Hi Michael!

Das ist zum Öffnen einer Struktur (es soll nur ein Mutterobjekt immer n-tief angezeigt werden. Ich brauche auch 2 verschiedene Links: Das Muterobjekt braucht einen anderen Link als die Childobjekte.
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 05.08.2003, 13:59   #4
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
echt? ich dachte das machst du damit:

if ($level == 0) $baum.= $space."<a class=\"navi\" onClick=\"java script:zweiFrames(0,'navi.php?openID=".$record['objekt_id']."',1,'showobjekt.php?objekt_id=".$record['objekt_id']."');\" href=\"#\">".$record['name']."</a><br />";
else $baum.= $space."<a target=\"mainFrame\" class=\"navi\" href=\"showobjekt.php?objekt_id=".$record['objekt_id']."\">".$record['name']."</a><br />";



also: warum dann die gleiche rekursion zweimal durchfetzen?
ich vermute nämlich, dass du dir einen stack-overflow verursachts (geht mit reks relativ einfach )
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 05.08.2003, 14:22   #5
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Es war ein simpler Denkfehler:

Diese Abfrage
if ($openID != 0){
}
ist bei nicht nur bei Mutterobjekten war sondern auch bie solchen bei denen die ID mit einen Buchstaben beginnt.

Gerniere meine ID's mit md5(microtime())

Alex
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 05.08.2003, 14:25   #6
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Zitat:
Original geschrieben von holunda
Gerniere meine ID's mit md5(microtime())
Warum
Stuck Mojo ist offline   Mit Zitat antworten
Alt 05.08.2003, 14:29   #7
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
genau! warum, das hab ich mir auch gedacht.

und ich bin immer noch der meinung, dass du nur einmal einen Verweis auf die Rekursion benötigst.
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 05.08.2003, 16:27   #8
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
wollte kein auto_increment machen ... und durch dieses Verfahren ist die Wahrscheinlichkeit gering dass die ID 2mal kommt ...
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 05.08.2003, 16:34   #9
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein

is es das mit autoincrement nicht auch?
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 05.08.2003, 16:47   #10
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
ich sag jetzt gar nichts mehr
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 05.08.2003, 16:56   #11
TP-Specialist
 
Benutzerbild von mike
 
Registriert seit: Jan 2002
Ort: TP/Dynamik
mike bringt sich richtig ein
's is halt heiss heut...
__________________
Gehelft? Hier kannst du dich bedanken.

mike
mike ist offline   Mit Zitat antworten
Alt 05.08.2003, 18:30   #12
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Ich weiss warum!
MD5 sieht halt verdammt cool aus!
Stuck Mojo ist offline   Mit Zitat antworten
Alt 06.08.2003, 13:36   #13
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Zitat:
Original geschrieben von Stuck Mojo
Ich weiss warum!
MD5 sieht halt verdammt cool aus!
wirkt so, als ob man Ahnung von der Mterie hätte .

Hätte da noch eine Frage:
Mein System dürfte ja jetzt dann klar sein:
Habe Objekte. Jedes Objekt hat eine MutterID. Die oberste Stufe hat die ID 0.

Nun soll es durch eine rekursive Funktion möglich werden ganze Objekt Bäume zu kopieren. aber wie muss das aussehen? Ich muss quasi den alten Baum auslesen und dann wieder mit neuer Mutter ID eintragen, aber wie?

Meine Objekte Table:
Objekt_ID,Name,Mutter_ID,stream.

hoffe ihr wisst was ich meine
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Alt 07.08.2003, 12:16   #14
TP-Moderator
 
Benutzerbild von Stuck Mojo
 
Registriert seit: Feb 2001
Ort: Helmstedt/Wolfsburg
Stuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKEStuck Mojo ist ein richtiges Arbeitstier - DANKE
Also ich würd den Quell-Baum in ein assoziatives Array einlesen und dann an eine Funktion übergeben, die den Baum in die DB einspielt.
In dieser Funktion holst du dir einfach nach jedem Insert die ID und ordnest Sie den aktuellen "Ast" als neu ID zu. Wenn jetzt ein Kind von einem Element kommt, bekommst du die neue ID über eben vergebene ID heraus. Also du musst 2 Beziehungen herstellen. 1. zwischen dem Original (Mutter/Kind IDs) + 2. der evtl. neu entstandenen IDs.

...ich glaube ich würde es nicht verstehen, wenn ichs lesen würde ... aber ich probiers trozdem.

Gruss
Jan

EDIT
und wenn du den Quatsch mit dem MD5 rauslassen würdest, könnte man das sogar noch in der DB mit den Augen gegenchecken
Stuck Mojo ist offline   Mit Zitat antworten
Alt 07.08.2003, 12:51   #15
TP-Veteran
 
Benutzerbild von holunda
 
Registriert seit: Oct 2001
Ort: Oberau
holunda macht alles soweit korrekt
Zitat:
Original geschrieben von Stuck Mojo

EDIT
und wenn du den Quatsch mit dem MD5 rauslassen würdest, könnte man das sogar noch in der DB mit den Augen gegenchecken
[/b]
Gute/Schnelle Augen können das MIT md5 auch
__________________
Gruß vom holu
holunda ist offline   Mit Zitat antworten
Antwort

  Aktuelles Thema
  TP Hilfe Forum > Web-Editoren & Coding > Traum-Dynamik
Rekurisve Funktion probs Rekurisve Funktion probs
« Chmod | daten werden nicht übernommen »

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
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 02:28 Uhr.

Powered by: vBulletin Version 3.7 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd. / Search Engine Friendly URLs by vBSEO 3.2.0 ©2008, Crawlability, Inc.
Traum-Projekt.com | Suchen | Archiv | Impressum | Kontakt | | | Nach oben |



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67