• 05-07-2019, 19:19:52
    #1
    Bu kısım fonksiyonu çalıştırdığım kısım
    if(isset($kat_cek)){$kat_ust = $kat_cek['kat_ust'];}
    kategoriListeleSelect($db,'blog',$kat_ust);
    Burasıda fonksiyon

    function kategoriListeleSelect($db, $kategoriYer, $kat_ust, $id=0, $string = 1){
    $query = $db->query("SELECT * FROM kategoriler WHERE kat_yer=? AND kat_ust=?")->arr(array($kategoriYer,$id))->select();
    if($query==true){
    foreach ($query as $key => $kat) {
    echo '<option '. select($kat['kat_id'],$kat_ust) .' value="'.$kat['kat_id'].'">'.str_repeat('-',$string).$kat['kat_ad'].'</option>';
    echo kategoriListeleSelect($db,'blog',$kat['kat_ust'], $kat['kat_id'], $string + 1);
    }
    }
    }
    function select($value1, $value2){
        if ( $value1 == $value2 ){ return "selected";}
    }

    Sorunum selected de...
    Sorun şu ki ilk alt kategori de sıkıntı yok örnek veriyorum Yazılım->PHP bir altı buna kadar çalışıyor selected geliyor fakat.
    Bir alt kategori daha açıyorum Yani Yazılım->PHP->Arrayler oluyor ama Arrayler olunca düzenlerken select de PHP yi seçmem lazım seçemiyorum.

    Umarım anlatabilmişimdir.
  • 05-07-2019, 21:41:48
    #2
    BND
    Üyeliği durduruldu
    Anladığım kadarıyla sorun $kat_ust = $kat_cek['kat_ust'];
    kat_ust'ün son birimi göstermesi.

    Fonksiyondaki foreach içinde tekrar sorgulama yapmanız gerekir. Örn:

    $idsi=$kategoriidsi;
    // mysql bloğu:
    //sorgu şöyle: SELECT * FROM tablonuz WHERE ID < $idsi ORDER BY ID LIMIT 1
    //mysql bloğu-
    $sayim=mysqli_num_rows($sorgu);
    if ($sayim>=1) $bironceki=$x['id'];
    if ($bironceki>=1) $katustolarakbelirle;

    bu tür bir sorgu her seferinde değişmekle birlikte foreach son elemanı işleyince bir önceki elemanı belirlemiş olur.
  • 06-07-2019, 07:54:47
    #3
    BND adlı üyeden alıntı: mesajı görüntüle
    Anladığım kadarıyla sorun $kat_ust = $kat_cek['kat_ust'];
    kat_ust'ün son birimi göstermesi.

    Fonksiyondaki foreach içinde tekrar sorgulama yapmanız gerekir. Örn:

    $idsi=$kategoriidsi;
    // mysql bloğu:
    //sorgu şöyle: SELECT * FROM tablonuz WHERE ID < $idsi ORDER BY ID LIMIT 1
    //mysql bloğu-
    $sayim=mysqli_num_rows($sorgu);
    if ($sayim>=1) $bironceki=$x['id'];
    if ($bironceki>=1) $katustolarakbelirle;

    bu tür bir sorgu her seferinde değişmekle birlikte foreach son elemanı işleyince bir önceki elemanı belirlemiş olur.
    Emeğin için teşekkürler hocam dünden beri boş boş düşünüyorum kendi hatam
    fonksiyondan gönderdiğim kat_ust var zaten alttaki fonksiyondan da aynısını göndermem lazım ben başka şeylerle uğraşıyorum
    Hallettim şimdi
  • 06-07-2019, 11:18:31
    #4
    Ben de basit bir fonksiyon göstereyim.
    function kategoriler_listele($kategoriler,$parent = 0){
       $html = '<ul>';
       foreach($kategoriler as $kategori)
       {
         if($kategori['parent']==$parent){
           $html .= '<li>'.$kategori['ad'];
           $html .= menu_listele($kategoriler,$kategori['id']);
           $html .= '</li>';
         }
       }
       $html .= '</ul>';
       return $html;
    }
    
    $kategoriler = [
       [
          "id" => 1,
          "parent" => 0,
          "ad" => "Dersler"
       ],
       [
          "id" => 2,
          "parent" => 0,
          "ad" => "Güncel"
       ],
       [
           "id" => 3,
           "parent" => 0,
           "ad" => "Blog"
       ],
       [
          "id" => 4,
          "parent" => 1,
          "ad" => "Php Dersleri"
       ],
       [
          "id" => 5,
          "parent" => 1,
          "ad" => "CSS Dersleri"
       ],
       [
          "id" => 6,
          "parent" => 4,
          "ad" => "PHP PDO Dersleri"
       ],
       [
          "id" => 7,
          "parent" => 4,
          "ad" => "PHP Degisken Kullanimi"
       ],
    ];
    
      echo  kategoriler_listele($kategoriler);