Hi gurus, I need to call php function for fetching data from mysql but I dont want to move internal row pointer (IRP) forward. Or even get the actual IRP position then fetch data and move IRP back to remembered position. Function mysql_data_seek() is not suitable for my example because I am trying to fetch data recursive here is code (See the pseudocode commented section):

Code:
<?php

include_once("connection.php");
$tree="";
$depth=1;
$tempTree="";

// THIS RETURNS THE ROOTS FROM WHICH I WILL BEGIN
$sql_query="SELECT DISTINCT(ppid) FROM process WHERE (ppid) NOT IN (SELECT pid from process);";
$nav_query = MYSQL_QUERY($sql_query);

WHILE ( $nav_row = MYSQL_FETCH_ARRAY($nav_query) )
{
    //echo "calling build_child() from while with argument: " . $nav_row['ppid'] . "<br>";
    $tree .= build_child($nav_row['ppid']);
}

FUNCTION build_child($ppID)
{
    GLOBAL $depth, $tempTree;
    //$depth = $GLOBALS['depth'];
    //$tempTree = $GLOBALS['tempTree'];

    /*
    PSEUDOCCODE THAT SHOULD BE PASTED HERE:
    1 FETCH ARRAY WITHOUT MOVING DATA POINTER AND STORE t_begin ADN t_end;
    2 MAKE NEW SELECT INSTEAD CURRENT WHICH WILL CONTAINT STORED VALUES FROM PREVIOUS AS CONDITION
    
    */

    // THIS SHOULD BE REPLACET WITH SOMETHING LIKE:
    // SELECT * FROM process WHERE ppid=2541 AND t_begin >= 1302865259 AND t_end <= 1302865269;
    // THE t_begin and t_end SHOULD COME FROM PREVIOUS SELECT WHICH DID NOT MOVE INTERNAL POINTER
    $sql_query = "SELECT * FROM process WHERE ppid=" . $ppID . ";";
    $nav_query = MYSQL_QUERY($sql_query);

    WHILE ( $nav_row = MYSQL_FETCH_ARRAY($nav_query) )
    {
        FOR ( $c=0;$c<$depth;$c++ )
        {
            //$tempTree .= "&nbsp;";
            $tempTree .= " - ";
        }
                
        $tempTree .= $nav_row['name'] . " (" . $nav_row['pid'] . ") <br>";
        //echo "tempTree: " . $tempTree;
        $depth++;
        //echo "depth: " . $depth . "<br>";
        
        //echo "calling build_child() from buildchild with argument: " . $nav_row['pid'] . "<br>";
        build_child($nav_row['pid']);        
    }
    $depth--;
    
    //echo "depth: " . $depth . "<br>";

    RETURN $tempTree;
}

echo "<br>";
echo $tree;



?>
For better understanding data in table looks like:
Code:
mysql> select * from process;
+----+------------+------------+------+------+------------------------------+
| id | t_begin    | t_end      | pid  | ppid | name                         |
+----+------------+------------+------+------+------------------------------+
|  1 | 1302865260 | 1302865269 | 2544 | 2541 | bash-new-child1-child1       |
|  2 | 1302865259 | 1302865269 | 2541 | 2510 | bash-new-child1              |
|  3 | 1302865261 | 1302865269 | 2542 | 2510 | bash-new-child2              |
|  4 | 1302800037 | 1302800049 | 2544 | 2541 | bash-old-child1-child1       |
|  5 | 1302800036 | 1302800049 | 2541 | 2510 | bash-old-child1                |
|  6 | 1302800038 | 1302800049 | 2542 | 2510 | bash-old-child2              |
|  7 | 1302866248 | 1302866250 | 2546 | 2545 | bash2-child1                 |
|  8 | 1302866248 | 1302866250 | 2547 | 2546 | bash2-child1-child1          |
|  9 | 1302866248 | 1302866250 | 2550 | 2545 | bash2-child2                 |
| 10 | 1302866248 | 1302866250 | 2551 | 2550 | bash2-child2-child1          |
+----+------------+------------+------+------+------------------------------+
10 rows in set (0.01 sec)
and at the output of php I would like something like ptree:

Code:
2510
 | - 2541 (bash-new-child1)
 |    |- 2544 (bash-new-child1-child1)
 |
 | - 2542 (bash-new-child2)


2510
 | - 2541 (bash-old-child1)
 |    |- 2544 (bash-old-child1-child1)
 |
 | - 2542 (bash-old-child2)

2545
 | - 2546 (bash2-child1)
 |    | - 2547 (bash2-child1-child1)
 |
 | - 2550 (bash2-child2)
    | - 2551 (bash2-child2-child1)