Merhaba arkadaşlar, bir sorum olacaktı. Belki çok kolay belki çok zor bilmiyorum.
Sitemin anasayfasında;
GÜN | HAFTA| AY | YIL
şeklinde navbarım var. Bunlara tıklandığında ayrı ayrı veri tabanı sorgusu çalıştıracağım. Nasıl yapabilirim.
Örn: GÜN e tıkladığımda günlük kayıtların sorgusu çalışacak, HAFTA için haftalık kayıtların sorgusu çalıştıracak. Sorgu işlemi TIKLAMA İŞLEMİ YAPILDIĞINDA olacak. Bütün sorguları çalıştırıp verileri sayfaya dökmek verimli olmaz diye düşündüm. Yardımlarınızı bekliyorum.
Sorunuzu tam olarak anlayamamış olabilirim ama karar yapıları ile yapsanız sorununuza çözüm olur diye düşünüyorum. Navbara link verin : örn : index.php sayfası ise index.php?islem=gun , index.php?islem=ay gibi. sonra aşağıdaki işlemleri yapıp {} aralarına sorgu kodlarını yerleştirin.
Sorunuzu tam olarak anlayamamış olabilirim ama karar yapıları ile yapsanız sorununuza çözüm olur diye düşünüyorum.
Navbara link verin : örn : index.php sayfası ise index.php?islem=gun , index.php?islem=ay gibi. sonra aşağıdaki işlemleri yapıp {} aralarına sorgu kodlarını yerleştirin.
Cevap için teşekkürler. Peki bunu javascript ile nasıl yapabilirim. index.php?islem=gun bu şeklide sayfa yenilenmesi gerekiyor sanırım. Yenileme olmadan sizin yazdığınız if else işlemini nasıl yaparım. Mantığını anlayamadım bir türlü.
Bootstrap ile tab kullandım. GÜN | HAFTA| AY | YIL Bunlara tıkladığında sayfa yenileme yapmadan tıklama yaptığım sekmenin çalışmasını istiyorum. Yani GÜN e tıkladığında sorgu veritabanından 100 tane kayıt listeleyecek. Listeleme yapıyorum. Bu tablara tıkladığında javascript ile tıklamayı alıp php de kullanamıyorum.
Anasayfam açıldığında GÜN için => 100 tane kayıt sayfaya yüklenecek HAFTA için => 100 tane kayıt sayfaya yüklenecek AY için => 100 tane kayıt sayfaya yüklenecek YIL için => 100 tane kayıt sayfaya yüklenecek
Toplamda 400 kayıt anasayfamda olacağında iyi olmayacaktır diye düşünüyorum. Ben hangisine tıklarsam o sorgu çalışşın o kayıtlar yüklensin. Hepsine sorgu yazarsam 400 kayıt arkaplanda yüklenmiş olacak :(
Php ile sayfalara şekil vermeyi biliyorsanız şu an anlatacaklarımı anlayıp uygulayabilirsiniz diye düşünüyorum. Şimdi bir tane bu görüntülemek istediğiniz php dosyanız bir tane de arka planda işlemleri yakalayacak olan x.php dosyamız olsun. Bu bootstrap tab düğmelerinin id değerleri olur, bu düğmelere tıklandığı zaman event i yakalayıp hangi düğmeye tıklandıysa o görevi yaptıracağız. Diyelim gün tabına tıklandı x.php dosyasına diyeceğiz ki sen günlere ait verileri yolla bana, ay tabına tıklandı ise yine aynı şekilde bana aylara ait 100 tane veri yolla. Bir tanesine örnek vereyim gerisini siz onun üzerinden yaparsınız. Sayfa İlk açıldığında active olacak tab ınıza direkt php ile 100 tane veriyi yüklüyorsunuz başta zaten. Diğer tabların içi boş olsun. İlk açıldığında gün tab ı aktif olsun ve 100 tane gün kaydı listelensin. Sonra hafta tab ının düğme id sine örnek veriyorum hafta değerini verin. O tab düğmesinin açtığı tab ekranının id sine de hafta_goster deyin, tabii çalışması için gerekli değişiklikleri yapmanız gerekir orayı ayarlarsınız, id değerleri uyuşması için. Sonra jquery dosyasını çağırdınız kısımdan SONRA şu kodları yazmaya başlayın . <script> $(document.body).on("click",'#hafta', function () { //hafta düğmesine bastığımızda çalışacak işlemler $.ajax({ url: 'x.php', // x.php dosyasına method: 'POST', // POST metodu ile data : {listele : 'hafta'}, // listele değeri hafta olan bir bilgi gönderioruz beforeSend: function () { //Eğer sayfaya veriler yüklenirken bir yükleniyor tarzı uyarı çıkarmak istiyorsanız buraya koldar yazabilirsiniz //İstemezseniz de beforeSen fonksiyonun komple silin }, success: function (response) { $("#hafta_goster").html(response) // x.php dosyasından dönen değeri tab sisteminin hafta için olan kısmına yazdırıyoruz } }) }); </script>
x.php dosyasının içeriği de şöyle bir şey olsun
if (isset($_POST['listele'])) { if ($_POST['listele'] == 'hafta') { //Bütün bu kısımda 100 tane hafta kaydı oluşturacak kodları yazıp veri tabanından çekin ve echo ile ekrana yazdırın. ana sayfada normal listelermiş gibi } elseif ($_POST['listele'] == 'ay') { //Burada yıl tabı için aynı işlemleri yapın. ay değerini yakalamak için üstteki kodda olan data : {listele : 'hafta'}, kısmını data : {listele : 'ay'}, yapmanız yeterli } elseif ($_POST['listele'] == 'yil') { //diye devam ediyor } }
@Abdullahx kodları uyguladım ve sonuç tam istediğim gibi oldu. Teşekkür az kalır herhalde. Sonuç mükkemmel :)
Yapılabilirliği var mı bilemiyorum ama HTML Kodu: alanındaki ajax kodlarını her bir sorgulama için kopya oluşturdum. Gün için hafta için Ay için Yıllık için. Belki daha fazla oluşturabilirim. Peki kopyalamadan tek başına yapabilir miyiz. (sadece öneri; tıkladığım yerdeki id alınıp ajax tıklanan id ile işlem yapsa)
Elbette yapılır hocam, zaten makbul olanı da sizin düşündüğünüz gibi olanıdır. Bir kod şablonu olur ve aynı görevi yapan kodlar bu şablon üzerinden işlem yapar. Birkaç farklı şekilde yapılabilir, biraz da fonksiyon mantığının kolaylığını anlayabilmeniz adına şöyle bir örnek vereyim.
Bu butonlar sizin tab düğmeleriniz olsun
Düğmelere her tıklandığında fx fonksiyonunu çağıracak ve aldığı bilgileri oraya gönderecek, fonksiyon da yukarıdaki kodun aynısını yapıyor. İsteğe bağlı değerleri silip kendinize göre düzenlersiniz :) <script> /** * * @param surec - Periyot olarak hangi süreci seçtiğimizin değeri * @param limit - Kaç adet veri listeleyeceğimizi isterseniz bu kısma değişken olarak verip php tarafında sabit olarak belirtmekten kurtulabilirsiniz. Belki ileride fikriniz değişir ve farklı bir değer vermek istersiniz */ function fx(surec, limit = 100) { // Eğer limit değeri verilmezse varsayılan olarak 100 kayıt seçsin $.ajax({ url: 'x.php', // x.php dosyasına method: 'POST', // POST metodu ile data : { listele : surec, // listele değerine onclick olayından aldığımız butonun id değerini veriyoruz limit : limit // Limit de eğer belirtmezseniz 100 olarak gider, belirtirseniz belirttiğiniz saı kadar gider }, // listele değeri hafta olan bir bilgi gönderiyoruz beforeSend: function () { //Eğer sayfaya veriler yüklenirken bir yükleniyor tarzı uyarı çıkarmak istiyorsanız buraya koldar yazabilirsiniz //İstemezseniz de beforeSen fonksiyonun komple silin }, success: function (response) { console.log(response); // $("#hafta_goster").html(response) // x.php dosyasından dönen değeri tab sisteminin hafta için olan kısmına yazdırıyoruz } }) } </script>
x.php nin içine şu kodları koyup PHP tarafında postları nasıl alacağınızı görebilirsiniz :) İyi çalışmalar
if (isset($_POST['listele'])) { print_r($_POST); }