Yazar |
|
gokhanmnv
Kayıt: 06.04.2008 |
|
Arkadaşlar benim php de listeletme problemim var.
Kullanıcıdan aldığım verilere göre veritabanında arama yapıp gelen sonucları yine
kullanıcının istediği kadar (10 arlı,25 şerli,50 li) listeletmem gerekiyor.Tıpkı google
daki gibi listeletmeliyim.Problemim şu ilk listeletmeyi yapıyorum ancak 2.3.sayfayı
görmek için tıkladığımda sayfa refresh oluyor tabi benim girdiğim kriterlerde gidiyor
dolyasısıyla 1.sayfa dışındaki verilere erişemiyorum.Acaba bu konuda herhangi bi
önerisi olan var mı?
gokhan.m.
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Kod örneği vermediğin için yorum yapmak zor, fakat "php paging" veya "php pagination" şeklinde google'da aratırsan bu konudaki değişik örnekleri inceleyebilirsin.
Let`s make this world a better place to live !
|
|
Yazar |
|
gokhanmnv
Kayıt: 06.04.2008 |
|
Verdiğin kelimeleri googleda aratıp dediğin gibi listeletme ile ilgili birçok makale buldum.
Ancak hepsi kullanıcıdan kriter almadan listeletme hakkında bilgi vermiş.Yani direk veritabanındaki verileri olduğu gibi listeletmiş.Bu şekilde ben zaten yapmıştım.Ancak kullanıcıdan alınan veriye göre listeletmek istediğimizde kod yapısı oldukça değişiyor.Aşağıdaki kod bi fikir verir mi bilemiyorum.Ancak asıl yazdırma kısmı biraz uzun o yüzden koymadım.
<?php
include("baglanti.php");
$kayitSorgu="SELECT COUNT(status) FROM kriterler WHERE status='2'";
$ara = $_GET['ara'];
if($ara!='' or $_GET['limit']!=""){
$limit=$_GET["limit"];
if(!$limit) $limit=0;
$eserAdi=$_GET["eserAdi"];
$yazarAdi=$_GET["yazarAdi"];
$kutuphane=$_GET["kutuphane"];
$sonucSayisi=$_GET["sonucSayisi"];
$sorgu="SELECT * FROM kriterler WHERE status=2 AND ";
$ekSql = '';
$p = $_GET;
unset($p['ara']);
$var=false;
foreach($p as $pKey=>$pValue){
if($pValue != ''){
$ekSql .= "$pKey = '$pValue' AND ";
$var=true;
}
}
$sorgu .= $ekSql;
$sorgu = substr($sorgu,0,-30);
$sorgu=$sorgu." LIMIT $limit,$sonucSayisi ";
$sonuc = mysql_query( $sorgu );
$j=0;
while($kayit=mysql_fetch_array($sonuc)){
$data[$j] = $kayit;
$j++;
}
}
?>
gokhan.m.
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
$sorgu = substr($sorgu,0,-30);
bunu ne amaçla yaptığını pek anlayamadım, son 30 karakteri niçin kırpma ihtiyacı duydun?
Bir de arama kriterlerini sql sorgusuna yerleştirirken hata yapmış olabilirsin. Oradaki foreach bana biraz şaibeli gibi geldi. Sorguyu çalıştırmadan önce bir ekrana yazdırmayı dene, eğer sql sorgusunun oluşumu hatasız gerçekleşiyor ise başka yerlere bakmak lazım.
Let`s make this world a better place to live !
|
|
Yazar |
|
halit
Kayıt: 26.02.2006 |
|
parametreleri bir kere alarak birden fazla defada sorgu yapılacak anladığım kadarıyla.her sorguda belirli sayıda sonuç elde edeceksin.
bunu iki şekilde yapabilirsin:
ilk yöntemde bütün parametreleri 2.,3.... sayfa linklerine de GET olarak ilave edersin. ve bunlara ek olarak sayfa bumarası da eklersin. her seferinde sorgu baştan çalışır ama limit (sayfa_no*sayfadaki_kayit_sayisi), sayfadaki_kayit_sayisi şeklinde sqline bir ekleme yaparsın.
örneğin:
index.php?a=3&b=4&sayfa=1
sql: select * from tablo where alan1=$_GET['a'] AND alan2=$_GET['b'] Limit 0,10 // sayfada 10 kayıt için
ikinci yöntem olarak sayfalinkinin biraz güzelleştirmeye yarar. parametreleri ilk defa aldığında onları bir session'a atarsın. ve linke sadece sayfa numarasını ekleyebilirsin. sql yine aynı mantıkta olacak ama; bu sefer parametreleri GET'ten değil SEssion'dan alırsın.
index.php?sayfa=2
select * from tablo where alan1=$_SESSION['a'] AND alan2=$_SESSION['b'] Limit 20,10
birde şimdi vereceğim linkte otomatik sayfalama linkleri oluşturan bir kod var. bir seferlik toplam kayıt sayısını veriyorsun ve linkin içerdiği parametreleri set ediyorsun. linkleri otomatik oluşturuyor. tabi ihtiyaçlarına göre de modifiye edebilirsin.
http://maseko.com/2005/07/19/page-navigation-function/
inşallah verdiğim bilgiler işine yarar...
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| |