[plug] PHP / mySQL - recursive query problem
Ady Gould
KiltOtter at bdu.org
Tue Mar 30 06:32:46 WST 2004
Ok my fubar for not giving all the details...
> > I have been battling using ADOdb / PHAkt (for Dreamweaver
> MX/MX 2004)
> > with infinite loops happening :(
>
> Can you work around it using a fixed, fairly large limit on
> the depth and structuring your data in a way that doesn't
> require recursion?
> That'd be my first response if I thought it was possible.
I have the following structure, and the following starter code... Not that
it is working :(
The data structure is simply:
Table definition:
+------------+---------------------------+------+-----+---------+-----------
-----+
| Field | Type | Null | Key | Default | Extra
|
+------------+---------------------------+------+-----+---------+-----------
-----+
| locationID | int(10) unsigned zerofill | | PRI | NULL |
auto_increment |
| Location | varchar(128) | | MUL | |
|
| foundWhere | int(10) unsigned zerofill | YES | | NULL |
|
+------------+---------------------------+------+-----+---------+-----------
-----+
[note the zerofill was just me having a look at the possible things that
mySQL was able to do on the fly, and entirely optional]
Test Data:
+------------+------------------------------+------------+
| locationID | Location | foundWhere |
+------------+------------------------------+------------+
| 0000000001 | Australia | NULL |
| 0000000002 | Western Australia | 0000000001 |
| 0000000003 | New South Wales | 0000000001 |
| 0000000004 | Australian Capital Territory | 0000000001 |
| 0000000005 | Perth | 0000000002 |
| 0000000006 | Canberra | 0000000004 |
| 0000000007 | Sydney | 0000000003 |
| 0000000008 | Kalgoorlie-Boulder | 0000000002 |
| 0000000009 | Bayswater | 0000000002 |
| 0000000010 | Bassendean | 0000000002 |
| 0000000011 | South Australia | 0000000001 |
| 0000000012 | Britain | NULL |
| 0000000013 | London | 0000000012 |
| 0000000014 | Queensland | 0000000001 |
| 0000000015 | United States of America | NULL |
| 0000000016 | San Francisco | 0000000015 |
| 0000000017 | Victoria | 0000000001 |
| 0000000018 | Melbourne | 0000000017 |
+------------+------------------------------+------------+
I found a hint at http;//www.easysoft.com/tech/php/tut_002/main/phtml and
based this on that.
<?php
//Begin Displaythread( ParentMessage )
function displayLocations ( $fromWhere = "")
{
global $connStationeryQuery;
// begin Recordset
if ( $fromWhere == "" )
{
$query_rsLocations = "SELECT * FROM tblLocations WHERE
foundWhere = NULL ORDER BY location ASC" ;
}
else
{
$query_rsLocations = "SELECT * FROM tblLocations WHERE
foundWhere = '$fromWhere' ORDER BY location ASC" ;
}
echo "<br /> $query_rsLocations - - ";
$rsLocations = $connStationeryQuery->Execute($query_rsLocations) or
die($connStationeryQuery->ErrorMsg());
// end Recordset
$FoundLocation = false;
while ( !$rsLocations->EOF )
{
$FoundLocation = true;
$locID = $rsLocations->Fields['locationID'];
echo "[$locID]";
$result = " -> " . $rsLocations->Fields['location'] .
displayLocations ( $locID );
$rsLocations->MoveNext();
} // end while
$result .= "<br />";
$rsLocations->Close();
if ($FoundLocation)
{
echo " [$fromWhere]<br />";
return $result;
}
else
{
echo " [$fromWhere]<br />";
return "";
}
}
?>
<?php
echo displayLocations();
?>
More information about the plug
mailing list