Konuyu görüntüle
IUCODERS FORUM > Programlama > PHP > Php Listeleme
Yazar
gokhanmnv


avatar

Kayıt: 06.04.2008
06.04.2008-23:58 #41337
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


avatar
Antalya
Kayıt: 05.05.2006
07.04.2008-00:03 #41340
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


avatar

Kayıt: 06.04.2008
07.04.2008-00:19 #41343
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


avatar
Antalya
Kayıt: 05.05.2006
07.04.2008-01:07 #41352
$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


avatar

Kayıt: 26.02.2006
07.04.2008-04:21 #41366
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