• 27-02-2018, 13:58:32
    #1
    Merhaba Arkadaşlar,Php ile kategorinin tüm alt kategorilerini aşağıdaki recursive fonksiyon yardımıyla alabiliyorum. Merak ettiğim bir konu var. Aşağıdaki fonksiyon içerisinde yer alan sql sorgusunda desc/asc ile sıralatabiliyor. Ancak $kid değerine GET ile aldığım veriyi aktardığım zaman neden desc/asc çalışmıyor?
    <?php  kategoriYaz(); ?>
    <?php
    function kategoriYaz($kid = NULL) {
    db = new mysqli('sunucu', 'kullanici', 'sifre', 'vt_adi');
      $rs = $db->query("SELECT * FROM kategori WHERE ".($kid ? "kid = ".$kid : "ISNULL(kid)")."  ORDER BY id desc");
        if($rs->num_rows) {
          while($row = $rs->fetch_assoc()) {
            echo $row['isim'];
            kategoriYaz($row['id']);
          }
        }
      }
    ?>
  • 27-02-2018, 14:02:08
    #2
    Hacı kodda zaten hata var bu şekilde çalıştığında. Eğer $kid gelmezse WHERE ve ORDER yan yana geliyor, ayrıca recursive çalıştırımlarda sorgu çağırmamanız performans açısından daha iyi olacaktır. Kaldı ki siz mysql bağlantısını bile tekrar tekrar yapmayı göze almışsınız.
  • 27-02-2018, 14:15:40
    #3
    DWather adlı üyeden alıntı: mesajı görüntüle
    Hacı kodda zaten hata var bu şekilde çalıştığında. Eğer $kid gelmezse WHERE ve ORDER yan yana geliyor, ayrıca recursive çalıştırımlarda sorgu çağırmamanız performans açısından daha iyi olacaktır. Kaldı ki siz mysql bağlantısını bile tekrar tekrar yapmayı göze almışsınız.
    Where ve order birlikte kullanılmasında ne gibi bir sakınca olabilir. Diğer taraftan recursive içerisinde sql kullanmazsam bile bu sorgular zaten yapılacak. Açıkcası left join kullanmak veya nested hiyerarşi aklıma pek yatmadı.
  • 27-02-2018, 14:17:08
    #4
    emre0606 adlı üyeden alıntı: mesajı görüntüle
    Where ve order birlikte kullanılmasında ne gibi bir sakınca olabilir. Diğer taraftan recursive içerisinde sql kullanmazsam bile bu sorgular zaten yapılacak. Açıkcası left join kullanmak veya nested hiyerarşi aklıma pek yatmadı.
    where ve order'in yan yana gelmesinde şöyle bir sıkıntı var, eğer $kid gelmezse kodun şöyle oluyor : "SELECT * FROM kategori WHERE ORDER BY id desc" mysql syntax hatası demek bu da.
  • 27-02-2018, 14:19:17
    #5
    DWather adlı üyeden alıntı: mesajı görüntüle
    where ve order'in yan yana gelmesinde şöyle bir sıkıntı var, eğer $kid gelmezse kodun şöyle oluyor : "SELECT * FROM kategori WHERE ORDER BY id desc" mysql syntax hatası demek bu da.
    Hocam zaten bunun kontrolü yapılmadan olur mu? Ben burada okuyan vakit kaybetmesin diye yalın halini paylaştım.
  • 27-02-2018, 14:21:42
    #6
    Sana tavsiyem, recursive fonksiyonunun içine, $kid -> SQL şeklinde print ettir bak hangi sql komutu çalışıyor.
  • 27-02-2018, 14:54:31
    #7
    DWather adlı üyeden alıntı: mesajı görüntüle
    Sana tavsiyem, recursive fonksiyonunun içine, $kid -> SQL şeklinde print ettir bak hangi sql komutu çalışıyor.
    Sürekli ve değiştirerek kullanmak istediğim bir ağaç kategori listesini döngüyle mi kur diyorsun? Anlamadım demek istediğini.
  • 27-02-2018, 15:00:21
    #8
    Şöyle :
    <?php  kategoriYaz(); ?>
    <?php
    function kategoriYaz($kid = NULL) {
    db = new mysqli('sunucu', 'kullanici', 'sifre', 'vt_adi');
    $sql  = "SELECT * FROM kategori WHERE ".($kid ? "kid = ".$kid : "ISNULL(kid)")."  ORDER BY id desc";
      $rs = $db->query($sql );
    print $kid  . " -> " . $sql;
        if($rs->num_rows) {
          while($row = $rs->fetch_assoc()) {
            echo $row['isim'];
            kategoriYaz($row['id']);
          }
        }
      }
    ?>