-
Üyelik
06.04.2016
-
Yaş/Cinsiyet
33 / E
-
Meslek
Yazılım Uzmanı
-
Konum
İzmir
-
Ad Soyad
M** K**
-
Mesajlar
119
-
Beğeniler
7 / 15
-
Ticaret
0, (%0)
Arkadaşlar merhaba,
php ile çektiğim verileri sorunsuz listeledim ve bu verileri çeşitli kriterlere göre sorgulayabiliyorum. bunları sayfalandırmak istiyorum şimdide. verileri bütün halinde sorunsuz olarak sayfalayabiliyorum. fakat kriterler işin içine girdiğinde sıkıntı yaşıyorum. muhtemelen mantık hatası var.
Basit olarak mantık şu şekilde;
if($_POST['sorgula']){
***sorgulanan veriler***
}else{
***bütün veriler***
}
***sayfalama kodları***
örneğin falanca bölümde öğrencileri sorguladım diyelim. sorunsuz bir şekilde geldi. fakat sayfalama kısmında 2. ya da 3. sayfaya geçince bütün öğrencilerin bulunduğu kısmın 2. ve 3. sayfasını getiriyor. mantık olarak nerede hata yapıyor olabilirim? sayfalama php kodlarının yeri doğru mu?
Umarım anlatabilmişimdir. kodlar uzun diye atmadım. isterseniz koyabilirim.
şimdiden teşekkürler..
www.instegral.com
ontedi
www.ontedi.com
Kullanıcı
-
Üyelik
03.10.2013
-
Yaş/Cinsiyet
44 / E
-
Meslek
Yazılım Uzmanı, Matematikçi
-
Konum
Ankara
-
Ad Soyad
S** T**
-
Mesajlar
1118
-
Beğeniler
325 / 324
-
Ticaret
2, (%100)
QueryString sayfa numarasını taşıdığını varsayıyorum, ayrıca php bilmediğimi beyan edeyim. MySQL tarafındaki sorgunu yazayım gerisini sen çıkar. (C# yazıyorum fakat çıkarabilirsin.).
Mantık şu:
1 - Koşuluna uygun toplam kaç kayıt var (Örnek: 23)
2 - Koşuluna uygun kaydın bütün listesini veren sorgu: ({1, Ali, İnal}, {2, Osman, Maltaş}, {3, Koray, Cingöz},...{23, Serkan, Usta})
Peki bize bunlar ne için lazım. Toplam 23 kayıt var ve biz her sayfa 10 kayıt olmak üzere kaç tane sayfa göstereceğiz? Kod biraz karmaşık gelebilir fakat bunun kısa hali şöyle: Elimde x koşulu var sorguyu x'e göre filtrele. Elimde y koşulu var sorguyu y'ye göre filtrele. Daha da ilerisi elimde hem x hem de y var o zaman sorguyu hem x'e hem de y'e göre filtrele. Diyoruz kısaca.
public long fnToplam_Kayit(string strKelime, Guid? gdUst_Menu_ID_FK, Guid? gdDil_ID_FK, Guid? gdMenu_Yer_ID_FK, sbyte? sbDurum)
{
long lngSonuc = 0;
using (DB_CDIYS_MYSQL db = new DB_CDIYS_MYSQL())
{
string strSorgu = " SELECT COUNT(B.ID) FROM CDIYS_tblMenuler AS A INNER JOIN CDIYS_tblMenuler_ve_Diller AS B ON A.menu_ID = B.menu_ID_FK INNER JOIN IYS_tblMenu_Yerleri AS C ON A.menu_yer_ID_FK = C.menu_yer_ID WHERE 1=1";
if (!string.IsNullOrEmpty(strKelime))
strSorgu += " AND (B.menu LIKE '%" + strKelime + "%' OR C.kod LIKE '%" + strKelime + "%' OR C.yer LIKE '%" + strKelime + "%')";
if (gdUst_Menu_ID_FK != null)
strSorgu += " AND (A.ust_menu_ID_FK = '" + gdUst_Menu_ID_FK + "')";
if (gdDil_ID_FK != null)
strSorgu += " AND (B.dil_ID_FK = '" + gdDil_ID_FK + "')";
if (gdMenu_Yer_ID_FK != null)
strSorgu += " AND (A.menu_yer_ID_FK = '" + gdMenu_Yer_ID_FK + "')";
if (sbDurum == 0 || sbDurum == 1)
strSorgu += " AND B.durum = " + sbDurum;
lngSonuc = db.Database.SqlQuery(strSorgu).First();
};
return lngSonuc;
}
public List fnSayfala(string strKelime, Guid? gdDil_ID_FK, byte? bytDurum, long? lngBaslangic_Degeri, int? intGosterim_Adeti)
{
List liste = new List();
using (DB_CDIYS_MYSQL db = new DB_CDIYS_MYSQL())
{
string strSorgu = " SELECT * FROM CDIYS_tblMenuler_ve_Diller WHERE 1=1";
if (!string.IsNullOrEmpty(strKelime))
strSorgu += " AND (menu LIKE '%" + strKelime + "%' OR harici_baglanti LIKE '%" + strKelime + "%')";
if (gdDil_ID_FK != null)
strSorgu += " AND dil_ID_FK = '" + gdDil_ID_FK + "'";
if (bytDurum == 0 || bytDurum == 1)
strSorgu += " AND durum = " + bytDurum;
strSorgu += " ORDER BY menu_ID_FK DESC, dil_ID_FK DESC, sira ASC";
if (lngBaslangic_Degeri != null)
strSorgu += " LIMIT " + lngBaslangic_Degeri;
if (intGosterim_Adeti != null)
strSorgu += ", " + intGosterim_Adeti;
liste = db.Database.SqlQuery(strSorgu).ToList();
};
return liste;
}
1 kişi bu mesajı beğendi.
www.ontedi.com
www.cizgi.site