im sorun yaşıyorsanız kategori ve alt kategorileri oluyor

0 Cevap php

İşte benim veritabanı bulunuyor:

id         name       parent_id

1          Computers   NULL
2          Apple       1
3          Books       1
4          Music       NULL
5          CDs         4
6          Records     4

Benim kategorileri işlev:

 public function showCategories($parent_id = 0){
        if($parent_id == 0){
            $sql = "SELECT * FROM categories WHERE parent_id IS NULL";
        } else {
            $sql = "SELECT * FROM categories WHERE parent_id =:parentid";
        }

        $stmt = $this->db->prepare($sql);
        $stmt->bindParam(':parentid', $parent_id);
        $stmt->execute();

        $categories = array();
        while($row = $stmt->fetch(PDO::FETCH_ASSOC)){
            array_push($categories, array($row['id'] => $row['name']));
        }
        return $categories;
    }

İşte benim kategori sayfası:

<?php
//Instantiate categories class
$categories = new categories($db);
$categoriesMain = $categories->showCategories(0);
?>
<html>
   <head></head>
   <body>
       <form action="" method="post">
           <?php //Get parent categories and put them into a select box ?>
           <select name="categoriesMain">
                <?php for($i=0;$i<count($categoriesMain);$i++){ ?>
                      <option value="<?php echo $i; ?>">
                           <?php echo $categoriesMain[$i]; ?>
                      </option>
                <?php } ?>
           </select>
       <input type="submit" name="submit" value="submit"/>
       </form>

       <?php //if form submits then show sub categories ?>
          <?php if(isset($_POST['submit'])){
                    $categoriesSub = $categories->showCategories($_POST['categoriesMain']);
                    for($i=0;$i<count($categoriesSub);$i++){
                        echo $categoriesSub[$i];
                    }
          } ?>
    </body>
</html>

Bana sorun yaşıyorsanız im ne anlatmaya çalışalım. Ben o ama şu anda bir beyin bloğuna sahip im gibi hissediyor çünkü benim bütün tasarım yersiz olduğunu düşünüyorum.

Gibi bir dizi dönen fonksiyon im Array ( [0] => Array ( [1] => Computers ) [1] => Array ( [4] => Music ) ). Eğer düşünüyorsanız bu, bana bildirin dönmek için yanlış bir yoldur. Tamam o zaman görüyorsunuz CategoriesMain? Çıkışına döngü bu dizi için ve option=value im echoing $i için kullanarak Im ancak bu $ i 1, 2, 3, 4 Ancak ben değeri üst kategori örneğin değeri olmak istedikleri gibi gider 1, 4 i $_POST['cateogoriesMain'] döngü için bir sonraki kullanarak değerini toplamak böylece nerede im o {[olanlar için veritabanı satır alacak cateogriesSub burada görüntüleniyor (7)]} önce. Ben im yapma duygusu umut?

0 Cevap