Reply to Re: Functionally premature

Your name:

Reply:


Posted by strawberry on 12/04/06 10:43

strawberry wrote:

> The following functions are intended to return a set of ids, and their
> respective children, as a single dimensional array ($ids), however, I'm
> getting nothing. I think the problem is that the results are being
> returned prematurely - before the recursion has finished - but I'm not
> quite sure how to fix that. Any help appreciated.
>
> Note: Also posted at alt.php.mysql
>
> function array_merger($a,$b){
> $count = count($b);
> for ($i = 0; $i < $count; $i++) {
> $a[]=$b[$i];
> }
> return $a;
> }
>
> function display_children($parent) {
> $ids=array();
> $childres=array();
>
> if($parent == 'null'){
>
> $query = "SELECT `id` FROM `task` WHERE ISNULL(`parent`);";
>
> }else{
>
> $query = "SELECT `id` FROM `task` WHERE `parent`= '$parent';";}
> $result = mysql_query($query);
> while ($row = mysql_fetch_array($result,MYSQL_ASSOC)) {//
> $ids[]=$row['id'];
> $childres[]=display_children($row['id']);
> }
> $count=count($childres);
> for($i=0;$i<$count;$i++){
> $ids=array_merger($ids,$childres[$i]);
> }
> return $ids;
> }

It really can be this simple?

$ids=display_children('null');

Anyone using an adjacency list model must need to do this kind of thing
ALL the time so I'm printing the script here in its entirety in case
anyone else can make use of it, or perhaps improve it.

<?php
function array_merger($a,$b){
$count = count($b);
for ($i = 0; $i < $count; $i++) {
$a[]=$b[$i];
}
return $a;
}

function display_children($parent) {
$ids=array();
$childres=array();

if($parent == 'null'){

$query = "SELECT `id` FROM `task` WHERE ISNULL(`parent`);";
}else{
$query = "SELECT `id` FROM `task` WHERE `parent`= '$parent';"; }

$result = mysql_query($query);
while ($row = mysql_fetch_array($result)) {
$ids[]=$row['id'];
$childres[]=display_children($row['id']);
}
$count=count($childres);
for($i=0;$i<$count;$i++){
$ids=array_merger($ids,$childres[$i]);
}
return $ids;
}

include('../gantt.inc'); //Connection script

$ids=display_children('null');
print_r($ids);

?>

[Back to original message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация