• 06-07-2019, 19:44:12
    #1
    Merhaba, küçük bir noktada takıldım,
    Veritabanımda subeler tablom var. Burada şubeleri birbirine bağlamam gerekiyor. Üst şubesi 0 olan bir şube altına bu şubeyi belirterek istediğim kadar şube eklemem gerekiyor.

    Tablo yapım ve Örnek Veri;
    subeID -subeAdi - ustSube - status
    1 - Doğu kampüsü - 0 - 1
    2- Fen Bilimleri - 1 - 1
    3- 8. Sınıf - 2 -1

    Aşağıdaki kod ile Ana şubeleri çekiyorum ve foreach ile döngüye sokabiliyorum.
    try  {
    $sql = "SELECT * FROM subeler WHERE okulID='$userSchoolData[id]' AND ustSube='0' ORDER BY subeAdi ASC";
    
    $statement = $connection->prepare($sql);
    $statement->execute();
    $result = $statement->fetchAll();
    
    } catch(PDOException $error) {
    // echo $sql . "<br>" . $error->getMessage();
    }
    foreach($result as $item){
    ...
    }
    Manuel olarak foreach içine alt şubeyi yazmak istediğimde foreach'i tekrar yazınca geliyor ama o alt şubenin alt şubesi gelmiyor, standart bir alt şube sayısı standart olmadığı için manuel olarak yapmam mümkün olmuyor.

    Bu işlemi nasıl otomatize edebilirim yardımlarınızı bekliyorum arkadaşlar.
  • 06-07-2019, 20:01:42
    #2
    DBJoin yapabilirsiniz
  • 06-07-2019, 20:04:23
    #3
    arxdelta adlı üyeden alıntı: mesajı görüntüle
    DBJoin yapabilirsiniz
    O nasıl olacak hocam nasıl bir sorgu yazmam gerekli?
    İşin aslı mantığını kuramadım kafamda.
  • 06-07-2019, 22:34:39
    #4
    fonksiyonlarla yapılabilir tablo yapınızı tam anlamadım ama siz yazdığım koddaki mantığı çözersiniz. Sadece biraz ingilizce gerektiriyor. Diyorum ki önce foreach döngüsünden geçir. Sonra her elemanı kontrol et alt elemanı var mı varsa tekrardan aynı fonksiyona sok yoksa yazdır.
    function getChild($obj){
        foreach($obj->subElement as $subElement){
            if($subElement->hasSubElement()){
                getChild($subElement);
            }else{
                echo $subElement;
            }
        }
    }