İç içe bir listesini oluşturun

1 Cevap php

Ben iç içe bir liste oluşturmak istiyorum nasıl, ben şu anda bu var

public function getNav($cat,$subcat){
    //gets all sub categories for a specific category
    if(!$this->checkValue($cat)) return false;  //checks data

    $query = false;
    if($cat=='NULL'){
        $sql = "SELECT itemID, title, parent, url, description, image 
                FROM p_cat 
                WHERE deleted = 0
                AND parent is NULL
                ORDER BY position;";
        $query = $this->db->query($sql) or die($this->db->error);
    }else{
        //die($cat);
        $sql = "SET @parent = (SELECT c.itemID FROM p_cat c WHERE url = '".$this->sql($cat)."' AND deleted = 0);

                SELECT c1.itemID, c1.title, c1.parent, c1.url, c1.description, c1.image, (SELECT c2.url FROM p_cat c2 WHERE c2.itemID = c1.parent LIMIT 1) as parentUrl
                FROM p_cat c1
                WHERE c1.deleted = 0
                AND c1.parent = @parent
                ORDER BY c1.position;";
        $query = $this->db->multi_query($sql) or die($this->db->error);
        $this->db->store_result(); $this->db->next_result();
        $query = $this->db->store_result();
    }
    return $query;
}


public function getNav($cat=false, $subcat=false){
        //gets a list of all categories form this level, if $cat is false it returns top level nav

    if($cat==false || strtolower($cat)=='all-products') $cat='NULL';
    $ds = $this->data->getNav($cat, $subcat);
    $nav = $ds ? $ds : false;
    $html = '';

    //create html
    if($nav){
        $html = '<ul>';
        //var_dump($nav->fetch_assoc());
        while($row = $nav->fetch_assoc()){
            $url = isset($row['parentUrl']) ? $row['parentUrl'].'/'.$row['url'] : $row['url'];
            $current = $subcat==$row['url'] ? ' class="current"' : '';
            $html .= '<li'.$current.'><a href="/'.$url.'/">'.$row['title'].'</a></li>';
        }
        $html .='</ul>';
    }
    return $html;
}

Sql, her ebeveyn için bir listede yuva çocuk gerekir, ebeveynler ve çocuklar döner.

1 Cevap

Ben herhangi bir PHP yapılır ama bu iş olacak merak ettik çünkü bir süre oldu. Sizin ise döngü içinde, sadece özyineleme ve yeni bir

  • tekrar getNav çıkışını ($ cat = $ row ['url']) eklemek, tür gibi:

    while($row = $nav->fetch_assoc()){
        $url = isset($row['parentUrl']) ? $row['parentUrl'].'/'.$row['url'] : $row['url'];
        $current = $subcat==$row['url'] ? ' class="current"' : '';
        $html .= '<li'.$current.'><a href="/'.$url.'/">'.$row['title'].'</a>';
        /* Add subNav HTML */
        $html .= $this->getNav($row['url']);
        $html .= '</li>';
    }
    

    It seems that "getNav" refers to both the function to get the SQL as well as the function that renders the nav HTML - maybe change the HTML getNav function name to getNavHtml just for clarity. Also seems like the $subcat argument may be able to be removed from the SQL getNav function since it is never used.