PHP incrementation bu tür yapmak nasıl?

0 Cevap php

Ben bu kategorideki komut dosyası kullanıyorum:

<?php

include("connect.php");

$nav_query = mysql_query("SELECT * FROM `categories` ORDER BY `id`");
$tree = "";
$depth = 1;
$top_level_on = 1;
$exclude = array();
array_push($exclude, 0);

while ($nav_row = mysql_fetch_array($nav_query)) {
    $goOn = 1;
    for ($x = 0; $x < count($exclude); $x++) {
        if ($exclude[$x] == $nav_row['id']) {
            $goOn = 0;
            break;
        }
    }
    if ($goOn == 1) {
        $tree .= $nav_row['name'] . "<br>";
        array_push($exclude, $nav_row['id']);
        if ($nav_row['id'] < 6) {
                    $top_level_on = $nav_row['id'];
                }

        $tree .= build_child($nav_row['id']);
    }
}

function build_child($oldID) {
    global $exclude, $depth;
    $child_query = mysql_query("SELECT * FROM `categories` WHERE parent_id=" . $oldID);
    while ($child = mysql_fetch_array($child_query)) {
        if ($child['id'] != $child['parent_id']) {
            for ($c=0; $c < $depth; $c++) {
                            $tempTree .= "&nbsp;";
                        }
            $tempTree .= "- " . $child['name'] . "<br>";
            $depth++;
            $tempTree .= build_child($child['id']);
            $depth--;
            array_push($exclude, $child['id']);
        }
    }

    return $tempTree;
}

echo $tree;

?>

Bu, aşağıdaki MySQL veritabanı yapısına dayanır:

id | parent_id | name

1                Cats
2    1           Siamese Cats
3    2           Lilac Point Siamese Cats
4                Dogs

etc...

Komut sınırsız kategori derinlik verir ama bir büyük düşüşünü vardır. Öyle gibi ön ucuna kategori navigasyon görüntüler:

Cats
 - Siamese Cats
 - Lilac Point Siamese Cats
Dogs

Nasıl böyle görüntülemek olabilir:

Cats
 - Siamese Cats
   - Lilac Point Siamese Cats
Dogs

Böylece her ek kategori derinliği için başka bir alan kategori metnin başında girinti eklenebilir?

0 Cevap