Ik heb het script Pagination van de PHP Scripts sectie van PHPHulp gebruikt, alleen een probleempje:

als ik in de url &page=1 doe krijg ik eigelijk pagina nummer 2,
in de url moet staan: &page=0 om pagina 1 te krijgen.

Ik heb al verschillende manieren geprobeert, maar niks hielp tot nu toe.

Script:


# Check get
if(isset($_GET['page']) AND ctype_digit($_GET['page'])) {

    # Set page limit begin
    $page = $_GET['page'];    
}
else{

    # Set page limit begin as 1
    $page = 1;    
}
# Max pages
$eachPage = 1;
# Sql with limit
$sql = 'SELECT * FROM pics WHERE '.$cat.'="1" LIMIT '.($page*$eachPage).','.$eachPage;
# Sql without limit
$sql_count = 'SELECT '.$cat.' FROM pics where '.$cat.'="1"';
# Query uitvoeren
if(!$res = mysql_query($sql)) {
    
    # Fout in query
  trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_num_rows($res) == 0) {
    
    # Geen resultaat uit query
  echo 'Geen resultaten gevonden';
}
else {
    
    # Iedere record uitvoeren
  while($row = mysql_fetch_assoc($res)) {
      
      # Echo de images
	echo '
					<a class="img" href="/picture/'.(str_replace('-', ' ', $row['name'])).'">
						<img alt="'.$row['name'].'" src="'.$row['imgsmall'].'"></img>
						'.$row['name'].'
					</a>
	';
  }
  
  echo '
					<div class="clear"></div>
				</div>
				<div class="nav">
					<div class="nav-arrow">	
	';
  
  if($res = mysql_query($sql_count)) {
      
      # Aantal resultaten
      $results = mysql_num_rows($res);
    }
  # Aantal pagina's
  $pages = ceil($results / $eachPage);
  
  # Vorige knop maken
  if($page > 1) {
      
	  echo '
	  <span><a href="'.$_SERVER['PHP_SELF'].'?cat='.$cat.'&page='.($page-1).'">&lt;&lt;</a></span>
	  ';
  }
  else{
      
	  echo '
	  <span><a>&lt;&lt;</a></span>
	  ';
  }
  
  # Volgende knop maken
  if(($page+1) <= ($results/$eachPage)) {
      
	  echo '
						<span><a href="'.$_SERVER['PHP_SELF'].'?cat='.$cat.'&page='.($page+1).'">&gt;&gt;</a></span>
	  ';
  }
  else{
      
	  echo '
						<span><a>&gt;&gt;</a></span>
	  ';
	  
  }
}
 
	echo '
					</div>
					
					<div class="pages">	
	';
  
  # Pagina's maken
  for($i = 1; $i <= $pages; $i++)    {
      
        # Pagina cijfer linkjes aanmaken
	  echo '<a href="'.$_SERVER['PHP_SELF'].'?cat='.$cat.'&page='.($i).'">'.($i).'</a>';
    }
    
?>


De navigation onderaan werkt gewoon naar toebehoren.

Iemand een idee hoe ik dit probleem kan fixen?
Voeg tussen regel 11 en 12 (zie hierboven):


}
# Max pages


dit toe:


}
$page = $page - 1;
# Max pages


Ook hier geldt weer:
Waarom een hoop rijen selecteren om het aantal records te bepalen? Dit kost alleen maar geheugen.
Het aantal records bepaal je door:
SELECT COUNT(*) FROM tabel [WHERE voorwaarde]
Ozzie PHP op 18/06/2012 18:09:42

Voeg tussen regel 11 en 12 (zie hierboven):


}
# Max pages


dit toe:


}
$page = $page - 1;
# Max pages





Ah, dank je wel!
Moest erna wel wat andere dingen veranderen want bij de vorige/volgende knop en de nummering klopte het weer niet.. maar zo is hij goed! (:

@Ger van Steenderen
Nogmaals, ik heb het script van PHPHulp af gehaald, ik ben zelf een beginner in PHP, ik zou niet weten wat die COUNT(*) doet en door welke regel ik deze moet vervangen..

Reageren