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

  • wwwonrsoftcom adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    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
    • wwwonrsoftcom adlı üyenin fotoğrafı 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.
      11 yıl önce yazılmış
    • wwwonrsoftcom adlı üyenin fotoğrafı 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.
      11 yıl önce yazılmış
    • eozgilik adlı üyenin fotoğrafı 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.
      11 yıl önce yazılmış