• 15-11-2022, 20:31:06
    #1
    Merhaba Arkadaşlar; 15 senedir yazılım geliştiriyorum böyle problem görmedim. şimdi bunu çözene anında 50 tl atacağım.
    Şu gördüğünüz tablodaki (adi birimler)listenin fonksiyonu yapılacak.
    bana oyle bir fonksiyon hazırlayın ki
    fonksiyona gönderdiğim değere göre alt id lerin arrayini oluştursun

    //////
    alt kategorileri olan menu sistemi
    kategori->alt_kategori->onun_altkategorisi....
    ////

    mesela
    liste(0) fonksiyonunu çağırdığımda
    0,ve parenti 0 olanlar ve onların alt kategorileri tek array içinde olsun
    örnekler
    liste(0)=array(0,1,2,3,4,5,6,7,8);
    liste(1)=array(1,2,3,4,5,7,8) (dikkat 6 yok, çünkü 6 nın parenti liste içinde yok )
    liste(2)=array(2,3,7,8)(2 ve parenti 2 olanlar ayrıca parenti 3 olanlar neden 3 çünkü 3'ün parenti2 )
    liste(3)=array(3,7,8)(3 ve parenti 3 olanlar);

    örnek fonksiyonu alta koyuyorum ama onu okumadan önce kendi fonksiyonununuz deneyin derim yoksa kafanız aynı yerde sıkışabilir benim gibi



    function liste($id,$arr=array()){
    $q=("select * from birimler where parent=$id);
    foreach($q as $value){
    array_push(arr,$value->id);
    liste($value->id,$arr);
    }
    return $arr;
    }
  • 15-11-2022, 20:41:13
    #2
    function Liste($id)
    {

    $kod=$db->query("SELECT *,
    (SELECT COUNT(A.id) FROM birimler AS A WHERE A.parent=K.id ) as alt
    FROM birimler AS K
    WHERE K.parent={$id}")->fetchAll();

    foreach($kod as $veri)
    {
    $data[$id]=$veri

    if($veri["alt"]>0)
    $data[$id][]=kategoriListe($veri["id"]);

    }
    return $data;
    }


    direk denemedim ama şu iş görmesi lazım hocam
  • 15-11-2022, 20:46:05
    #3
    select * from birimler where id=$id or parent=$id seklinde denedin mi?
  • 15-11-2022, 21:02:40
    #4
    by_ala adlı üyeden alıntı: mesajı görüntüle
    function Liste($id)
    {

    $kod=$db->query("SELECT *,
    (SELECT COUNT(A.id) FROM birimler AS A WHERE A.parent=K.id ) as alt
    FROM birimler AS K
    WHERE K.parent={$id}")->fetchAll();

    foreach($kod as $veri)
    {
    $data[$id]=$veri

    if($veri["alt"]>0)
    $data[$id][]=kategoriListe($veri["id"]);

    }
    return $data;
    }


    direk denemedim ama şu iş görmesi lazım hocam
    ne yazıkki donene değer bu

  • 15-11-2022, 21:10:43
    #5
    zadamobile adlı üyeden alıntı: mesajı görüntüle
    select * from birimler where id=$id or parent=$id seklinde denedin mi?
    ustad problem sorguda değil de sonuçarı array içine atmak
  • 15-11-2022, 21:12:51
    #6
    Mesela dediğiniz yeri anlamadım biraz daha anlaşılır yazabilir misiniz?
  • 15-11-2022, 21:17:56
    #7
    Seyit25 adlı üyeden alıntı: mesajı görüntüle
    Mesela dediğiniz yeri anlamadım biraz daha anlaşılır yazabilir misiniz?
    hocam benim gonderdiğim id ye göre tablodan bu id ve bu idlere bağlı alt satırları tek array içine çekecek fonksiyon.

    mesele 3 değeri gonderdiğimde bana array olarak 3 ve 3e bağlı tüm alt satırlar gelmeli;
  • 15-11-2022, 21:23:54
    #8
    bagimsiz adlı üyeden alıntı: mesajı görüntüle
    hocam benim gonderdiğim id ye göre tablodan bu id ve bu idlere bağlı alt satırları tek array içine çekecek fonksiyon.

    mesele 3 değeri gonderdiğimde bana array olarak 3 ve 3e bağlı tüm alt satırlar gelmeli;
    liste(0)=array(0,1,2,3,4,5,6,7,8); listede id=0 yok,
    ayrıca aşağıdaki id=1 de neden 7 varda 8 yok anlamadım.
    liste(1)=array(1,2,3,4,5,7) (dikkat 6 yok, çünkü 6 nın parenti liste içinde yok )

    Normalde algoritmada iyimdir anlasam yapabilirimde verdiğiniz örneği oturtamıyorum.
  • 15-11-2022, 21:32:07
    #9
    Seyit25 adlı üyeden alıntı: mesajı görüntüle
    liste(0)=array(0,1,2,3,4,5,6,7,8); listede id=0 yok,
    ayrıca aşağıdaki id=1 de neden 7 varda 8 yok anlamadım.
    liste(1)=array(1,2,3,4,5,7) (dikkat 6 yok, çünkü 6 nın parenti liste içinde yok )

    Normalde algoritmada iyimdir anlasam yapabilirimde verdiğiniz örneği oturtamıyorum.
    hocam eksik olmnuş
    liste(1)=array(1,2,3,4,5,7,8 olacak ) (dikkat 6 yok, çünkü 6 nın parenti liste içinde yok )

    hocam normal parent child menu sistemi
    alt menu ler onun alt menulerı gibi