Php de saylama yaparken 2 sayfada fazladan veri.

MURAT23351murat akıl

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>";
?>

2011-01-20 08:49:42 Edit:2011-01-20 08:50:41

Php

alicilinAli Fırat Güler

Şö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;

?>

2011-01-20 09:20:13

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;

Her programcı birgün Php yi tadacaktır
2011-01-20 09:23:54

Php

MURAT23351murat akıl

Hiç birisi olmadı. alicilin arkadaşınki hiç çalışmadı hata verdi. drekon arkadaşınki ise hiç bir şey değişmedi.

2011-01-20 11:49:45

Php

MURAT23351murat akıl

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;

?>

2011-01-20 13:36:49 Edit:2011-01-20 14:41:34

Php

alicilinAli Fırat Güler

önemli değil kardeşim yararlı olabildiysek daha ne. birde kodlarda ufak hatalar olabiliyor. kusuruma bakma smiley

2011-01-20 18:03:43

phpkodlari.com © 2009 Herkes Php öğrenecek
Eglence ve Oyun: Gamikro