Php & jquery sınırsız kategori listeletme

Bu soru iptal edilmiştir...
Merhabalar arkadaşlar ;

sahibinden.com'daki kategori secimi gibi sınırsız kategori sistemini selectboxlara çekmeye çalışıyorum ama sanırım yanlış yol üzerindeyim.

Veritabanım ;


KategoriID KatagoriUstID KategoriAdi


Listeletme sayfam ;


<head>
<script type="text/javascript">            
function katgetir(id) {
 $('#kategorilistele').html('Yükleniyor…');
 var data = $('#'+id).val();
 $.ajax({
 type: 'GET',
 url: 'kategori-getir.php',
 data: 'id='+ data,

 success: function(sonuc) {
  $('#kategorilistele').html(sonuc);
 }              
});            
}
</script>
</head>
<body>
.
.
.
.

<fieldset id="kategoriselect">                                        
<?php        
$dbo->setSql("select * from kategori where KategoriUstID=0");        
$dbo->runSql();    
?>                                        

<select id="0" class="small-input" style="width:462px;margin-bottom:10px;" onChange="katgetir(0);">        
 <option>Seçiniz</option>        
 <?php foreach($dbo->getAll() as $kategori){ ?>
 <option value="<?php print $kategori->KategoriID;?>"><?php print $kategori->KategoriAdi; ?></option>
 <?php } ?>                                        
</select>                                        

<div id="kategorilistele">                                            
</div>                        

</fieldset>


Ajax için kullandığım kategori-getir.php ;


<?php        

$id = @$_GET["id"];        

require_once "dbo/dbo.init.php";        

$dbo->setSql("select * from kategori where KategoriUstID=%d");    
$dbo->setArg($id);    
$dbo->runSql();       

 $giris = "<select id='".$id."' class='small-input' style='width:462px;margin-bottom:10px;' onChange='katgetir(".$id.");'>";    

foreach($dbo->getAll() as $kategoriler){    

@$orta .= "<option value='".$kategoriler->KategoriID."'>".$kategoriler->KategoriAdi."</option>";    }    $cikis = "</select>";        

$sonuc = $giris.$orta.$cikis;        

print $sonuc;       

?>

Şu hali ile ilk kategoriler listelendikten sonra seçiyorum alt kategorisi geliyor selectbox'da ama 2.selectbox'ın alt kategorileri gelmiyor yani 2 adım gidiyor sınırsız kategori. Kodda yanlış olan yer neresi veya bu konu ile ilgili döküman varmıdır ben bulamadım. Hep belirli sayıda kategoriler ile yapmışlar yani selectbox sayısı belli iken sınırsız olarak nasıl yapılabilir.

Şimdiden teşekkürler.
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • Avatar of wwwonrsoftcom
    4 hafta önce
    7 cevap - 0 soru
    Öncelikle tavsiyem id="sayı" gibi bir kullanım yerine sayıdan farklı bir kullanım geliştirmen dogrudan bu problemin çözümü olmasa da daha sıhhatli olacaktır. Sorunun çözümü içinse
    var data = $("#"+id).val();
    

    yerine
    var data = $("#"+id+" option:selected").val();
    

    Yazmayı dener misin? Bildiğim kadarıyla select değişse de val değeri altında seçili olan optiona bağlı önerdiğim şekilde daha kesin sonuç alabilirsin sanırım. Kolay gelsin
    • Avatar of wwwonrsoftcom wwwonrsoftcom
      Düşündü de ilk yaklaşımım problemine çözüm oluşturmayacak.
      kodunu şu şekilde değiştirsek sanırım daha iyi olur.
      <head>
      <script type="text/javascript">
      katgetir("kategoriselect","kategorilistele");
      var sayac = 0;           
      function katgetir(id,hedef) {
      $("#"+id).change(function(){
       $('#kategorilistele').html('Yükleniyor…');
       var data = $('#'+id+' option:selected').val();
       $.ajax({
       type: 'GET',
       url: 'kategori-getir.php',
       data: 'id='+ data,
       success: function(sonuc) {
          $('#'+hedef).html(sonuc);
          var new_hedef = "kategorilistele"+sayac;
          sayac++;
          $("#"+hedef).after('<div id="'+new_hedef+'" class="katlist"></div>');
          var new_id = $('#'+hedef).find("select").attr("id");
          katgetir(new_id,new_hedef);
       }              
      });}            
      }
      </script>
      </head>
      <body>
      
      <fieldset id="kategoriselect">                                        
      <?php        
      $dbo->setSql("select * from kategori where KategoriUstID=0");        
      $dbo->runSql();    
      ?>                                        
      <select id="0" class="small-input" style="width:462px;margin-bottom:10px;" onChange="katgetir(0);">        
       <option>Seçiniz</option>        
       <?php foreach($dbo->getAll() as $kategori){ ?>
       <option value="<?php print $kategori->KategoriID;?>"><?php print $kategori->KategoriAdi; ?></option>
       <?php } ?>                                        
      </select>                                        
      <div id="kategorilistele" class="katlist">                                            
      </div>                        
      </fieldset>
      
      

      temelde iteratif bir şekilde yeni alt kategoriler eklemeye ve her alt kategori için fonksiyonu tekrar tekrar ateşlemeye çalıştım umarım yardımcı olur.
      4 hafta önce yazılmış
    • Avatar of wwwonrsoftcom wwwonrsoftcom
      Yazdığım bu kodda mantıksal olmayan hatalar var onun için çalışmayacak. İstersen vaktim olunca düzeltebilirim tabi bu kadarı işimi görmez diyorsan.
      4 hafta önce yazılmış
    • Avatar of eozgilik eozgilik
      info adresinize konu ile ilgili mail ve dosyaları attım yardımınız için şimdiden teşekkürler. Sorunu çözersek çözümünü buraya yazarım.
      3 hafta önce yazılmış