Çocuklara kategoriyi sayma sorun

1 Cevap php

Ben bu tablo vardır:

fourn_category (id , sub)

Ben saymak için bu kodu kullanıyorum:

function CountSub($id){
$root = array($id);
 $query = mysql_query("SELECT id FROM fourn_category WHERE sub = '$id'");                                            

    while( $row = mysql_fetch_array( $query, MYSQL_ASSOC ) ){

        array_push($root,$row['id']);
       CountSub($row['id']);
    }        

    return implode(",",$root);  
}

Bu 1,2,3,4,5 gibi IN() tarafından alt saymak kullanmadan kategori id döndürür

Ama sorun bu sayar ki:

category 1> kategori 2> kategori 3> kategori 4> kategori 5

Category 1 has 1 child not 4. Why? How can I get all children's trees?

1 Cevap

Anladığım kadarıyla, ben size kodu bir kapsam sorunu var sanıyorum. Deneyin:

function CountSub($id, &$current=array()){
    array_push($current, $id);
    $query = mysql_query("SELECT id FROM fourn_category WHERE sub = '$id'");                                            

    while( $row = mysql_fetch_array( $query, MYSQL_ASSOC ) ){
        CountSub($row['id'], $current);
    }        

    return implode(",",$current);  
}

CountSub(1)

Senin kod, yeni bir $root dizisi özyinelemeli fonksiyonun her düzeyde oluşturulan ve özyinelemeli aramalar sorunu olabilir özgün oluşturulan dizi, değiştirmek asla

I Hope this will help Jerome