根据空间或其他任何方式计算字符串数据

时间:2012-05-10 07:21:30

标签: php mysql

我有像这样的邻接列表模式结构,我想要计算所有父母的标题,如Food = 9,Fruit = 6

enter image description here

使用该功能计数标题

  function display_children($parent, $level) 
     {

    $result = mysql_query('SELECT title FROM tree '.'WHERE parent="'.$parent.'"');

       while ($row = mysql_fetch_array($result))
        {
           $data=  str_repeat(' ',$level).$row['title']."\n";
           echo $data;
           $this->display_children($row['title'], $level+1);
        }   
  }

通话功能

  display_children('Food',0);

结果

通过echo $ data;我得到了正确的结果,但我想要算得上9

 Fruit Green Peer Red Cherry Yellow Banana Meat Pork

所以当我调用函数时,plz指导如何计算所有数据

2 个答案:

答案 0 :(得分:2)

function display_children($parent, $level) 
{

   $result = mysql_query('SELECT title FROM tree '.'WHERE parent="'.$parent.'"');

   $count = 0;
   while ($row = mysql_fetch_array($result))
    {
       $data=  str_repeat(' ',$level).$row['title']."\n";
       echo $data;
       $count += 1 + $this->display_children($row['title'], $level+1);
    }  
    return $count; 
}

答案 1 :(得分:0)

您可以使用mysql_num_rows,它将包含您的查询返回的行数。

function display_children($parent, $level) 
{
    $result = mysql_query('SELECT title FROM tree '.'WHERE parent="'.$parent.'"');
    $count = mysql_num_rows($result);

    while ($row = mysql_fetch_array($result))
    {
       $data=  str_repeat(' ',$level).$row['title']."\n";
       echo $data;
       $this->display_children($row['title'], $level+1);
    }   
  }

您的菜单虽然很重要,但您应该真正研究如下解决方案:http://www.sitepoint.com/hierarchical-data-database-2/