• 30-03-2009, 19:38:48
    #1
    Bir formum var ve bunun için il ve ilçelerin, kategori ve alt kategori şeklinde gösterildikleri bir menu elementi var. Bunlar veritabanından doğru çekiliyor fakat 800 den fazla veri çektiği için sayfa yavaş açılıyor, kategoriler yüklenene kadar beklemek zorunda kalıyorum. Bu durumun üstesinden gelmek için önerebileceğiniz bir şey var mı?
    Not: php bilgim var mantığı söylemeniz yeterli.
  • 30-03-2009, 19:49:04
    #2
    Ajax ile istediğini gerçekleştirebilirsin,
    JQuery kütüphanesini incelemeni öneririm...
  • 30-03-2009, 20:28:59
    #3
    cache mantigi gibi yapabilirsin. o kategori bölümünün cıktısını db ye kaydet tek bir veri olarak cek.
  • 30-03-2009, 20:53:59
    #4
    Eposta Aktivasyonu Gerekmekte
    uysal_rockci adlı üyeden alıntı: mesajı görüntüle
    Ajax ile istediğini gerçekleştirebilirsin,
    JQuery kütüphanesini incelemeni öneririm...
    En verimlisi ajax ile. PHPLD nin kullandığı select box. İncelersen belki uygulayabilirsin.
    AJAX Category Selection | Frozenminds Modules for phpLD
  • 31-03-2009, 02:54:48
    #5
    @uysal_rockci; ajax sonradan benim de aklıma geldi, öyle yapmaya başladım.
    @LaCReMeL; il ilçe olan yer kategori kolonu gibi, daha sonra eklenenler olacak ama ajax ile kafama yatmazsa kategori eklendikçe cache yapan bir kod yazabilirim.
    @taylanaktepe; verdiğin linke baktım fakat bir modül olduğundan scripti kurup incelemeye üşendim, sıfırdan yazmak daha kolayıma geldi.

    Hepinize teşekkürler.

    Bir sorum daha olacak.
    Bir div'in içinde kategori listesi açılacak. Form değiştiğinde (onChange) yanında alt kategori listesini gör linki olacak, kategori id'si de o linkte olacak, isterse o listeden bir kategoriye ekleyecek, isterse alt kategorilerden birine. Sonsuz kategorileme kullanıyorum fakat bu şekilde sorun olmaması gerek.

    Sorum şudur; form değiştiğinde seçilen id'yi nasıl yanındaki linke aktarabilirim?
  • 31-03-2009, 03:23:03
    #6
    Üyeliği durduruldu
    şöyle
    <select name="xxx" onchange="jsfonksiyonun(this.options[this.selectedIndex].value);">

    ezberlemeni tavsiye ederim sık lazım oluyor
  • 31-03-2009, 09:19:15
    #7
    Üyeliği durduruldu
    saho adlı üyeden alıntı: mesajı görüntüle
    şöyle
    <select name="xxx" onchange="jsfonksiyonun(this.options[this.selectedIndex].value);">
    ezberlemeni tavsiye ederim sık lazım oluyor
    onun yerine direk this.value e de kullanılabiliyor
  • 31-03-2009, 21:54:05
    #8
    js ile linke direk etki edemem diye biliyorum, edebiliyorsam bilen biri lütfen söylesin. Direkt etki edemediğim için şöyle bir kod kullandım fakat bir soun var;
    <head>
    <script type="text/javascript" src="ajax.js"></script>
    <script language="JavaScript">
    function degistir(){
    metinkutusu.value=menu.options[menu.selectedIndex].value;
    }
    </script>
    </head>
    <? $id=$_GET['id']; ?>
    <body>
    <div id="content1" style="border: 1px solid #cccccc;width:640px;height:240px;">
    <? if($id==1) { ?>
    <select id="menu" onchange="javascript:degistir()">
     <option id="secenekadi" value="3">altkategori1</option>
     <option id="secenekadi" value="4">altkategori2</option>
    </select>
    <input type="hidden" id="metinkutusu" name="mt"><br>
    <? } ?>
    <? if($id==2) { ?>
    <select id="menu" onchange="javascript:degistir()">
     <option id="secenekadi" value="5">altkategori3</option>
     <option id="secenekadi" value="6">altkategori4</option>
    </select>
    <input type="hidden" id="metinkutusu" name="mt"><br>
    <? } ?>
    <? if(!isset($id)) { ?>
    <select id="menu" onchange="javascript:degistir()">
     <option id="secenekadi" value="1">kategori1</option>
     <option id="secenekadi" value="2">kategori2</option>
    </select>
    <input type="hidden" id="metinkutusu" name="mt"><br>
    <? } ?>
    <? 
    echo "Secilen id:".$_GET['id'];
    ?><br>
    <input type="submit" value="Gonder" onClick="javascript:ajaxpage('index.php?id='+metinkutusu.value, 'content1');">
    </div>
    </body>
    İlk kategoriyi seçtiğimde ve göndere bastığımda id yi alıyor ve gerekli yeri gösteriyor fakat bir kere seçtikten sonra bir daha kategori seçimi yapıp göndere basıyorum id değişmiyor. Gözden kaçırdığım bir şeyler var ama ben bir türlü bulamadım.
    Lazım olur diye ajax.js'yi de ekliyorum.
    <!--
    var loadedobjects=""
    var rootdomain="http://"+window.location.hostname
    
    function ajaxpage(url, containerid){
    var page_request = false
    if (window.XMLHttpRequest) 
    page_request = new XMLHttpRequest()
    else if (window.ActiveXObject){
    try {
    page_request = new ActiveXObject("Msxml2.XMLHTTP")
    } 
    catch (e){
    try{
    page_request = new ActiveXObject("Microsoft.XMLHTTP")
    }
    catch (e){}
    }
    }
    else
    return false
    page_request.onreadystatechange=function(){
    loadpage(page_request, containerid)
    }
    
    page_request.open('GET', url, true)
    page_request.send(null)
    }
    
    function loadpage(page_request, containerid){
    if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1))
    document.getElementById(containerid).innerHTML=page_request.responseText
    }
    
    function loadobjs(){
    if (!document.getElementById)
    return
    for (i=0; i<arguments.length; i++){
    var file=arguments[i]
    var fileref=""
    if (loadedobjects.indexOf(file)==-1){ 
    if (file.indexOf(".js")!=-1){
    fileref=document.createElement('script')
    fileref.setAttribute("type","text/javascript");
    fileref.setAttribute("src", file);
    }
    else if (file.indexOf(".css")!=-1){
    fileref=document.createElement("link")
    fileref.setAttribute("rel", "stylesheet");
    fileref.setAttribute("type", "text/css");
    fileref.setAttribute("href", file);
    } }
    if (fileref!=""){
    document.getElementsByTagName("head").item(0).appendChild(fileref)
    loadedobjects+=file+" "
    } } }
    
    function MM_swapImgRestore() { 
      var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
    }
    
    function MM_preloadImages() { 
      var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
        var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
        if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
    }
    
    function MM_findObj(n, d) { 
      var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
        d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
      if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
      for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
      if(!x && d.getElementById) x=d.getElementById(n); return x;
    }
    
    function MM_swapImage() { 
      var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
       if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
    }
    //-->
  • 31-03-2009, 22:42:57
    #9
    Üyeliği durduruldu
    forumxtr adlı üyeden alıntı: mesajı görüntüle
    js ile linke direk etki edemem diye biliyorum, edebiliyorsam bilen biri lütfen söylesin.
    direk linke etki edemem ne demek?