lostyazilim
tr.link

php dizilerde sayfalama

40 Mesajlar 5.817 Okunma
lstbozum
tr.link

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Dizide sayfalama için array_slice fonksiyonu işini görür. İstediğin parçaya bölüp sayfaya göre gösterebilirsin. Bir de pagination oluşturman lazım tabii.



$page = $_GET['page'] ?? 1;
$sayfada = 10;
$datas =[....] // içerik bilgisi

$count = count($datas);
$toplamSayfa = ceil($count / $sayfada);
$page = $page > $toplamSayfa ? $toplamSayfa : $page;
$sayfala= array_slice($datas, (($page - 1) * $sayfada), $sayfada, true);

gibi
melihonline

kişi bu mesajı beğendi.


wmaraci
reklam

melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Kısa bir örnekli şekilde yapmanız mümkün mü? Yapamadım ben bu kodlara göre.

Abdullahx adlı üyeden alıntı

Dizide sayfalama için array_slice fonksiyonu işini görür. İstediğin parçaya bölüp sayfaya göre gösterebilirsin. Bir de pagination oluşturman lazım tabii.



$page = $_GET['page'] ?? 1;
$sayfada = 10;
$datas =[....] // içerik bilgisi

$count = count($datas);
$toplamSayfa = ceil($count / $sayfada);
$page = $page > $toplamSayfa ? $toplamSayfa : $page;
$sayfala= array_slice($datas, (($page - 1) * $sayfada), $sayfada, true);

gibi
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Örnek
Kaynak Kod
melihonline BEYAZMASTER

kişi bu mesajı beğendi.


melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Çok teşekkürler hocam oldu :)

Bir ricam daha olacaktı. 20 sayfalık yaptım ben. Resimde de görüldüğü gibi çok uzun sayfalama çıktı. Mesela aktif sayfanın en fazla 3 gerisi ve 3 ilerisini de gösterecek şekilde numaraları yazdırabilir miyiz?



Abdullahx

kişi bu mesajı beğendi.

wmaraci
wmaraci

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Rica ederim :)

$sayfada) {

$sayfa_goster = 7; // gösterilecek sayfa sayısı

$en_az_orta = ceil($sayfa_goster / 2);
$en_fazla_orta = ($toplamSayfa + 1) - $en_az_orta;

$sayfa_orta = $page;
if($sayfa_orta < $en_az_orta) $sayfa_orta = $en_az_orta;
if($sayfa_orta > $en_fazla_orta) $sayfa_orta = $en_fazla_orta;

$sol_sayfalar = round($sayfa_orta - (($sayfa_goster - 1) / 2));
$sag_sayfalar = round((($sayfa_goster - 1) / 2) + $sayfa_orta);

if($sol_sayfalar < 1) $sol_sayfalar = 1;
if($sag_sayfalar > $toplamSayfa) $sag_sayfalar = $toplamSayfa;

?>





Kaynak
melihonline

kişi bu mesajı beğendi.


melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
İşte bu hocam. Çok teşekkürler. Elinize sağlık. Süper oldu :)

Ben bu tasarımı wordpress de kullanacağım. Orada yazı/sayfa oluşturarak. Ancak bu kodlar wordpress de çalışmadı. İlk sayfa açılıyor. Hangi numaraya tıklasam gelmiyor. Hep ilk sayfa açılıyor. Wordpress ile çakışan bir yeri oldu sanırım.

PHP Everywhere eklentisi ile wordpress yazı/sayfa içinde kodları çalıştıyorum.

Abdullahx adlı üyeden alıntı

Rica ederim :)

$sayfada) {

$sayfa_goster = 7; // gösterilecek sayfa sayısı

$en_az_orta = ceil($sayfa_goster / 2);
$en_fazla_orta = ($toplamSayfa + 1) - $en_az_orta;

$sayfa_orta = $page;
if($sayfa_orta < $en_az_orta) $sayfa_orta = $en_az_orta;
if($sayfa_orta > $en_fazla_orta) $sayfa_orta = $en_fazla_orta;

$sol_sayfalar = round($sayfa_orta - (($sayfa_goster - 1) / 2));
$sag_sayfalar = round((($sayfa_goster - 1) / 2) + $sayfa_orta);

if($sol_sayfalar < 1) $sol_sayfalar = 1;
if($sag_sayfalar > $toplamSayfa) $sag_sayfalar = $toplamSayfa;

?>





Kaynak
 

 

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
Hocam onu bilemeyeceğim, wordpress özürlüsüyüm ben :)
 

 


melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Yazdığınız kod ile benim sayfamda kodlar 1013 satır dan 113 satıra düştü. Daha ne olsun hocam. :)

113 satırlık kodlarla 20 sayfa çalıştırdım. 1013 satır tutan kısım 5 sayfalık kısım. 20 sayfalık yapsam 4 bine varırdı :eek: while döngüsü çalıştıramadığım için tek tek yapınca böyle olmuştu mecbur.

Wordpress sayfasına sorayım o konuyu artık.

Abdullahx adlı üyeden alıntı

Hocam onu bilemeyeceğim, wordpress özürlüsüyüm ben :)
Abdullahx

kişi bu mesajı beğendi.

Abdullahx Abdullahx MW Aracı Kullanıcı
  • Üyelik 03.04.2019
  • Yaş/Cinsiyet 29 / E
  • Meslek .
  • Konum Trabzon
  • Ad Soyad A** K**
  • Mesajlar 905
  • Beğeniler 393 / 395
  • Ticaret 3, (%100)
While değil de for döngüsü yine iş yapabilirdi, aslında uğraşılsa bütün döngülerle de yapılır ama for ile daha kolay olur. Fakat sayfalama olayında döngü gereksiz olur biraz :)
 

 


melihonline melihonline WM Aracı Kullanıcı
  • Üyelik 24.11.2018
  • Yaş/Cinsiyet 39 / E
  • Meslek Bilgisayar Teknikeri
  • Konum Antalya
  • Ad Soyad M** K**
  • Mesajlar 91
  • Beğeniler 8 / 7
  • Ticaret 0, (%0)
Aslında hiçbiri çalışmıyor hocam. ): Mesela kayıtlar arasında profil resmi yoksa resim yok yazılı resmi göstermek için if kullanmak istedim onu bile çalıştırmamıştı. "1. Sayfanın içeriği" yazan yerde.

Abdullahx adlı üyeden alıntı

While değil de for döngüsü yine iş yapabilirdi, aslında uğraşılsa bütün döngülerle de yapılır ama for ile daha kolay olur. Fakat sayfalama olayında döngü gereksiz olur biraz :)


ikodev adlı üyeden alıntı

Ya muhtemelen daha kolay yolu vardır ama ofisteyim şimdi kafa yanıyor çıtırından :)

Ben sayfalama ve listeleme yaptım senin için;

$diziler = array(
"sayfa1" => array(
"sayfaAdi" => "Sayfa 1",
"sayfaİcerik" => "1. Sayfanın içeriği"
),
"sayfa2" => array(
"sayfaAdi" => "Sayfa 2",
"sayfaİcerik" => "2. Sayfanın içeriği"
),
"sayfa3" => array(
"sayfaAdi" => "Sayfa 3",
"sayfaİcerik" => "3. Sayfanın içeriği"
),
"sayfa4" => array(
"sayfaAdi" => "Sayfa 4",
"sayfaİcerik" => "4. Sayfanın içeriği"
),
"sayfa5" => array(
"sayfaAdi" => "Sayfa 5",
"sayfaİcerik" => "5. Sayfanın içeriği"
)
);

$mevcutSayfa = (isset($_GET["sayfa"])) ? $_GET["sayfa"] : 0;
$gosterilecekToplamVeri = 2;
$toplamSayfa = ceil(count($diziler) / $gosterilecekToplamVeri);
for( $i = 1; $i <= $toplamSayfa; $i++ )
{
?>

}

echo "
";
$sira = ($mevcutSayfa-1) * $gosterilecekToplamVeri;
$siradaki2li = $sira+$gosterilecekToplamVeri;
for( $veri = $sira; $veri < $siradaki2li; $veri++ )
{
echo @$diziler["sayfa".($veri+1)]["sayfaAdi"];
echo "
";
}
?>


Burada mesela varolan bir diziye sıralama yaptık, sen her foreachda onun idsini "tagını alarak" farklı sayfa da ilk verdiğim örnekte ki gibi içeriğinede ulaşabilirsin
 

 

Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al