Php de saylama yaparken 2 sayfada fazladan veri.
slm arkadaşlar php de sayfalama yapmak istedim listelemede bir sorun yok herşey normal bir yerde sorun var veritabanımda 7 tane kayıt var diyelim kaçarkaçar değişkeninede mesele 3 atamışsam şayet index.php?sayfa=1 kısmı ilk 5 sıralıyor 2. sayfaya tıkladığımda ise geriye kalan 2 tanesini listeliyor ama bu 2 tanesinin altınada ayriyeten boş içinde veritabanında çekilen hiç bir bilgi olmayan 3 tane daha listeliyor... kodları aşağıda bunun içinden çıkamadım.
<?
$server="localhost";
$kullanici="root";
$sifre="";
$veritabani="video";
$kacarkacar = 3;
if(!$sayfa){
$sayfa = 1;}
if($sayfa <= 0){
$sayfa = 1;}
$buradan = (($sayfa-1) * $kacarkacar+1)-1;
mysql_connect("$server","$kullanici","$sifre");
@mysql_select_db("$veritabani");
$toplamkayit=mysql_query("select * from video");
$kayitlar=mysql_query("select * from video LIMIT $buradan,$kacarkacar");
$toplamkayit = mysql_num_rows($toplamkayit);
$toplamsayfa = $toplamkayit / $kacarkacar;
$kalan = $toplamkayit % $kacarkacar;
if ($kalan>0){
$toplamsayfa=$toplamsayfa+1;}
?>
<table border="1" width="675">
<TR>
<td width="672" height="58" colspan="4"><p align="center">PALU İLKÖĞRETİM OKULU VİDEO SAYFASI</td>
</TR>
<tr>
<td width="139" align="center" height="58">Videonu Resmi</td>
<td width="191" align="center" height="58">Video Başlığı</td>
<td width="139" align="center" height="58">Video Kategorisi</td>
<td width="151" align="center" height="58">Videoyu İzle</td>
</tr>
<tr>
<?php
for ($i=0;$i<$kacarkacar;$i++)
{
$satir=@mysql_fetch_array($kayitlar);
?>
<td width="139"><?php if ($satir['RESIM'] != "") {
echo "<img border=\"0\" src=$satir[RESIM] align=\"left\" width=\"35\" height=\"35\">";
}
else {
echo "<img border=\"0\" src=\"images/okul.gif" align=\"left\" width=\"35\" height=\"35\">";
}
?></td>
<td width="191" align="center"><?php echo($satir['BASLIK']); ?>
</td>
<td width="139" align="center"><?php echo($satir['KATEGORI']); ?>
</td>
<td width="151" align="center"><?php echo "<a href=\"oynat.php?NO=$satir[NO]\"><span style=\"text-decoration: none\"><img src=\"images/play.jpg\" width=\"150\" height=\"150\"></a>" ?>
</td>
</tr>
<?php
}
?>
</table>
<?php
$kaca=$buradan+$kacarkacar;
$nerden = $buradan+1;
if($sayfa == 1)
{$onceki = "Önceki Sayfa ";}
else{
$geri = $sayfa-1;
$onceki = "<a href=\"index.php?sayfa=$geri\">Önceki Sayfa</a>";}
if ($sayfa+1 <= $toplamsayfa){
$ileri = $sayfa+1;
$sonraki = "<a href=\"index.php?sayfa=$ileri\">Sonraki Sayfa</a>";}
else{
$sonraki = "Sonraki Sayfa";}
echo "$onceki ";
for($a=1;$a<=$toplamsayfa;$a++)
if ($sayfa == $a)
{
echo " $a ";
}
else{
echo " <a href=\"index.php?sayfa=$a\">$a</a> ";}
echo " $sonraki<br>";
?>
Php
Şöyle bişey yapalım;
<?php
//Veri tabanı bağlantısı...
$limit = 5;
$page = $_GET["page"];
if(empty($page) or !is_numeric($page)) {
$page = 1;
}
$count = mysql_num_rows(mysql_query("SELECT id FROM video"));
$toplamsayfa = ceil($count / $limit);
$baslangic = ($page-1)*$limit;
$sorgu = "SELECT * FROM video ORDER BY id ASC LIMIT $baslangic,$limit";
$yazdir_sorgu = mysql_query( $sorgu, $mysqlbaglantisi) or die(mysql_error() );
while ($yazdir = mysql_fetch_array($yazdir_sorgu)){
echo $yazdir['title'];
echo "<br>";
}
if($count > $limit) :
$x = 2; // aktif sayfadan önceki/sonraki sayfa gösterim sayısı
$lastP = ceil($count/$limit);
if($page > 1){
$onceki = $page-1;
echo "<a href=\"?page=$onceki\">« Önceki Sayfa </a>";
}
// sayfa 1'i yazdir
if($page==1) echo "<span class=\"sayfa\">[1]</span>";
else echo "<a href=\"?page=1\">[1]</a>";
// "..." veya direkt 2
if($page-$x > 2) {
echo "...";
$i = $page-$x;
} else {
$i = 2;
}
// +/- $x sayfalari yazdir
for($i; $i<=$page+$x; $i++) {
if($i==$page) echo "<span class=\"sayfa\">[$i]</span>";
else echo "<a href=\"?page=$i\">[$i]</a>";
if($i==$lastP) break;
}
// "..." veya son sayfa
if($page+$x < $lastP-1) {
echo "...";
echo "<a href=\"?page=$lastP\">[$lastP]</a>";
} elseif($page+$x == $lastP-1) {
echo "<a href=\"?page=$lastP\">[$lastP]</a>";
}
if($page < $lastP){
$sonraki = $page+1;
echo "<a href=\"?page=$sonraki\"> Sonraki Sayfa » </a>";
}
endif;
?>
Php
Bu ksımı değiştirmen yeterli. sayfa=1 için veya sayfa =2 için kaç değeri verdiğine bakarsan durum anlaşılır.
$buradan = (($sayfa-1) * $kacarkacar+1)-1;
onun yerine böyle olabilir.
$sayfa= (int)$_GET["sayfa"];
if($sayfa < 0 ) $sayfa=1;
$buradan = ($sayfa-1) * $kacarkacar;
Php
Php
alicinin verdiği kodlarda ufak bir kaç yerde değişiklik yapınca çalıştı teşekkürler alicinin
sorunsuzca çalışan kod aşağıdadaır.
<?
// AYARLAR
// Assagidaki ayarlari siz kendinize göre yapin.
// ----------------------------------------------------
$server="localhost"; // server adresi
$kullanici="root"; // mysql kullanici adi
$sifre=""; // mysql kullanici sifresi
$veritabani="video"; // mysql veri tabani adi
mysql_connect("$server","$kullanici","$sifre");
@mysql_select_db("$veritabani");
$limit = 3;
$page = $_GET["page"];
if(empty($page) or !is_numeric($page)) {
$page = 1;
}
$count = mysql_num_rows(mysql_query("SELECT NO FROM video"));
$toplamsayfa = ceil($count / $limit);
$baslangic = ($page-1)*$limit;
?>
<table border="1" width="675">
<TR>
<td width="672" height="58" colspan="4"><p align="center">PALU İLKÖĞRETİM OKULU VİDEO SAYFASI</td>
</TR>
<tr>
<td width="139" align="center" height="58">Videonu Resmi</td>
<td width="191" align="center" height="58">Video Başlığı</td>
<td width="139" align="center" height="58">Video Kategorisi</td>
<td width="151" align="center" height="58">Videoyu İzle</td>
</tr>
<tr>
<?
$yazdir_sorgu = mysql_query("select * from video order by NO desc LIMIT $baslangic,$limit");
while ($yazdir = mysql_fetch_array($yazdir_sorgu)){
?>
<td width="139"><?php if ($yazdir['RESIM'] != "") {
echo "<img border=\"0\" src=$yazdir[RESIM] align=\"left\" width=\"35\" height=\"35\">";
}
else {
echo "<img border=\"0\" src=\"images/okul.gif" align=\"left\" width=\"35\" height=\"35\">";
}
?></td>
<td width="191" align="center"><?php echo($yazdir['BASLIK']); ?>
</td>
<td width="139" align="center"><?php echo($yazdir['KATEGORI']); ?>
</td>
<td width="151" align="center"><?php echo "<a href=\"oynat.php?NO=$yazdir[NO]\"><span style=\"text-decoration: none\"><img src=\"images/play.jpg\" width=\"150\" height=\"150\"></a>" ?>
</td>
</tr>
<?
}
?>
</table>
<?
if($count > $limit) :
$x = 2; // aktif sayfadan önceki/sonraki sayfa gösterim sayısı
$lastP = ceil($count/$limit);
if($page > 1){
$onceki = $page-1;
echo "<a href=\"?page=$onceki\">« Önceki Sayfa </a>";
}
// sayfa 1'i yazdir
if($page==1) echo "<span class=\"sayfa\">[1]</span>";
else echo "<a href=\"?page=1\">[1]</a>";
// "..." veya direkt 2
if($page-$x > 2) {
echo "...";
$i = $page-$x;
} else {
$i = 2;
}
// +/- $x sayfalari yazdir
for($i; $i<=$page+$x; $i++) {
if($i==$page) echo "<span class=\"sayfa\">[$i]</span>";
else echo "<a href=\"?page=$i\">[$i]</a>";
if($i==$lastP) break;
}
// "..." veya son sayfa
if($page+$x < $lastP-1) {
echo "...";
echo "<a href=\"?page=$lastP\">[$lastP]</a>";
} elseif($page+$x == $lastP-1) {
echo "<a href=\"?page=$lastP\">[$lastP]</a>";
}
if($page < $lastP){
$sonraki = $page+1;
echo "<a href=\"?page=$sonraki\"> Sonraki Sayfa » </a>";
}
endif;
?>
Php
önemli değil kardeşim yararlı olabildiysek daha ne. birde kodlarda ufak hatalar olabiliyor. kusuruma bakma