PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   Rekursiv Daten aus einer MYSQL Tabelle auslesen (http://www.selfphp.de/forum/showthread.php?t=12091)

blankend 05.01.2006 14:00:35

Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Hallo zusammen,

ich habe mal eine Frage (bin noch php Anfänger). Ich habe einen Code der so aussieht:

<?php

include_once "inc.db.php";
$link = mysql_connect($db_host, $db_user, $db_pass) or mysql_error();
$conn = mysql_select_db($db_name) or mysql_error();

$result0 = mysql_query("select * from ksh where is_sub = '$row[1]'");
while ($row = mysql_fetch_row($result0)){
echo "<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
$result1 = mysql_query("select * from ksh where is_sub = '$row[1]'");
while ($row = mysql_fetch_row($result1)){
echo "<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
$result2 = mysql_query("select * from ksh where is_sub = '$row[1]'");
while ($row = mysql_fetch_row($result2)){
echo "<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
$result3 = mysql_query("select * from ksh where is_sub = '$row[1]'");
while ($row = mysql_fetch_row($result3)){
echo "<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
}
}
}
}

?>

und möchte das Ganze rekursiv machen da sich die Tiefe der Ebenen ($result1, $result 2 usw.) ändern können. Kann mir jemand sagen wie das aussehen müsste ?
Abbruchbedingung wäre, wenn mysql_query einen leeren Array zurückgibt.

Vielen Dank

Dirk

ThomasK 05.01.2006 15:41:38

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Sollte ja eigentlich gehen wie bei einer Ordnerstruktur...

Vielleicht hilft dir das.
http://lists.phpbar.de/pipermail/php...25/013698.html

Achte darauf, wenn immer möglich keine Rekursion brauchen. Es ist meist auch mit While möglich.

Gruss Thomas

blankend 05.01.2006 16:13:46

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Hallo Thomas,

danke, ich versuchs mit ner Schleife. Würde denke ich so ausehen wie unten. Die läuft bloss im Moment endlos weil ich (so glaube ich jedenfalls ) die Variable $result sozusagen bei jedem Schleifendurchlauf erhöhen müsste (z.B. in der Form $result1, $result2 usw. oder kann ich in PHP die Variable $result auf "nichts" setzen (sowie etwa in vbscript "result = nothing")

<?php

include_once "inc.db.php";
$link = mysql_connect($db_host, $db_user, $db_pass) or mysql_error();
$conn = mysql_select_db($db_name) or mysql_error();


do{
$result = mysql_query("select * from ksh where is_sub = '$row[1]'");
while ($row = mysql_fetch_row($result)){
echo "<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
}
}while($result != "");

?>


Viele Grüße

Dirk

vt1816 05.01.2006 16:22:02

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Bitte benutze den im Forum üblichen php-Tag für Deinen Quelltext wenn Dir geholfen werden soll.

Ansonsten $result = "".

blankend 05.01.2006 16:51:54

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
ok, danke, danke

habe dann nur noch das Problem wie ich in php sage, dass er die Variable $result als fortlaufenden Index ($result1, $result2 usw. )in der DO WHILE Schleife benutzt.

Danke Dirk

ThomasK 05.01.2006 18:09:25

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Stichwort Array: $result[$cnt]

Meinst du das? Ansonsten poste nochmals code und beschreib es bitte genauer...

thomas

blankend 05.01.2006 18:23:02

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Hallo ,

dann würde das so aussehen:

<?php

include_once "inc.db.php";
$link = mysql_connect($db_host, $db_user, $db_pass) or mysql_error();
$conn = mysql_select_db($db_name) or mysql_error();

do{
$result[$cnt] = mysql_query("select * from ksh where is_sub = '$row[1]'");
while ($row = mysql_fetch_row($result[$cnt])){
echo "<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
}
}while($result[$cnt] = "");

?>

dann muss ich nur noch dafütr sorgen das $cnt hochgezählt wird oder ?

Viele Grüsse

Dirk

blankend 09.01.2006 10:29:41

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Hallo,

oder anders ausgedrückt. Warum funktioniert folgender Code nicht ?

PHP-Code:

<?php

include_once "inc.db.php";
$link mysql_connect($db_host$db_user$db_pass) or mysql_error();
$conn mysql_select_db($db_name) or mysql_error();

baum(0);

function 
baum($counter){
    
$result[$counter] = mysql_query("select * from ksh where is_sub = '$row[1]'");
    If (
$result[$counter] != ""){
        while (
$row mysql_fetch_row($result[$counter])){
            echo 
"<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
            
baum($result[$counter++]);    
        }    
    }
}

?>

Viele Grüße

Dirk

vt1816 09.01.2006 11:55:32

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Zitat:

Zitat von blankend
Hallo,

oder anders ausgedrückt. Warum funktioniert folgender Code nicht ?

...

Welche Fehlermeldung erhälst Du?

blankend 09.01.2006 12:15:43

AW: Rekursiv Daten aus einer MYSQL Tabelle auslesen
 
Hallo,

er gibt den ersten Datensatz unendlich mal aus anstatt weiterzumachen. Folgender Code übrigens (der eigentlich das selbe machen sollte) funktioniert (hat allerdings noch keine Abbruchbedingung enthalten, geht einfach bis zur 4.Ebene ($result3)):

PHP-Code:

<?php

include_once "inc.db.php";
$link mysql_connect($db_host$db_user$db_pass) or mysql_error();
$conn mysql_select_db($db_name) or mysql_error();

$result0 mysql_query("select * from ksh where is_sub = '$row[1]'");
    while (
$row mysql_fetch_row($result0)){
        echo 
"<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
        
$result1 mysql_query("select * from ksh where is_sub = '$row[1]'");
            while (
$row mysql_fetch_row($result1)){
                echo 
"<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
                
$result2 mysql_query("select * from ksh where is_sub = '$row[1]'"); 
                    while (
$row mysql_fetch_row($result2)){
                        echo 
"<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
                        
$result3 mysql_query("select * from ksh where is_sub = '$row[1]'"); 
                            while (
$row mysql_fetch_row($result3)){
                                echo 
"<br>http://rgrusvmwww.grz.roche.com/korelex_test/kostenstellen.php?is_sub=$row[1]&konto=$row[1] $row[2]</br>";
                            }
                    }
            }
    }

?>

Viele Grüße

Dirk


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:20:40 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.