Buscador con paginacion

Hola e creado un buscador interno con paginacion de resultados lo paso con GET desde el formulario buscar-juegos.php a mostrar-juegos.php todo bien pero si por ejemplo hay 20 resultados
y en la pagina mostrar-juegos.php se muestran 7 en la siguiente pagina me muestra los mismos resultados estoy pasando todos valores url pero algo me falla si alguien sabe se lo agradecería

Formulario
buscar-juegos.php

<form method="GET" action="mostrar-juegos.php" target="_blank" name="juegos" id="juegos"> <input type="text" title="Inserta el nombre del juego" name="juegos" id="juegos" value=" Busca Juegos " size="20"> <input type="submit" value=" Play " title="Play" name="jugar" id="jugar" onChange="javascript:while(''+this.value.charAt(0) ==' ')this.value=this.value.substring(1,this.value.len gth);"> </form> <div class="resultado"></div>    <script>    $.GET("mostrar-juegos.php", function(data){                       $(".resultado").html(data);                    })</script><script language="JavaScript" type="text/JavaScript">function valida_envia(){if(document.juegos.jugar.value == " ") {alert("Hola no pusiste el nombre del juego, titulo o personaje.");document.juegos.jugar.focus();return 0;}</script> 

mostrar-juegos.php

<?php 
include ("conexion"); 
?> 
<?php 
$buscar = $_GET['juegos']; 
 if(!isset($_GET['juegos']) && is_numeric($_GET['juegos'])) 
$buscar = 0; 
$cantidad = 7; 
$inicial = $buscar * $cantidad; 
$pegar = "SELECT * FROM mi-tabla WHERE  DESCRIPCION LIKE '%$buscar%' ORDER BY ID DESC LIMIT $inicial,$cantidad"; 
$cad = mysql_db_query($base,$pegar) or die (mysql_error()); 
$contar = "SELECT * FROM mi-tabla ORDER BY ID DESC"; $contarok = mysql_db_query($base,$contar); $total_records = mysql_num_rows($contarok);$pages = intval($total_records / $cantidad); 
while($array = mysql_fetch_array($cad))  
{ 
echo "<div class='contenido2'>"."<div class='categoria'>".$array['CATEGORIA']."</div>"."<div class='imagen'>".$array['IMAGEN']."</div>"."<div class='descripcion'>".$array['DESCRIPCION']."</div>"."<div class='url'>".$array['URL']."</div>"."</div>"; } $con=mysql_close($con); 
if ($buscar > 0) { 
$url = $buscar - 1; 
echo "<a href='$PHP_SELF?juegos=Juego+&jugar=+Play+=".$url."'>&laquo; Anterior</a>&nbsp;";  
} else { 
echo "Juegos "; 
} 
for ($i = $url = $buscar; 
$i <= $pages; 
$i++)  
{  
if ($i == $buscar) {  
if ($i == "0")  
{ 
"$i"; 
} else { 
$i = $i+$pagina; 
echo "<b> ".$i." </b>"; 
} 
} else { 
if ($i == "0") { 
echo "<a href=$PHP_SELF?juegos=Juego+&jugar=+Play+=".$i.">0</a>"; 
} else { 
echo "<a href='$PHP_SELF?juegos=Juego+&jugar=+Play+=".$i."'>"; 
$i = $i+0; 
echo $i."</a>&nbsp;"; 
} 
} 
}  
if ($buscar < $pages) { 
$url = $buscar + 1; 
echo "<a href='$PHP_SELF?juegos=Juego+&jugar=+Play+=".$url."'>Siguiente &raquo;</a>"; 
} else { 
echo " Fin Juegos"; 
} 
?> 
Hola:

Hay un par de detalles:

1.- El primer IF se contradice: if( ! isset( $_GET['juego'] ) && is_numeric( $_GET['juego'] ) ). Aquí estas diciendo "Si no (!) está definida (isset) y (&&) además es numérico (is_numeric), ejecuta lo que sigue", por lo que nunca se ejecutará el código que aparece.

2.- Utiliza ceil en lugar de intval al calcular el número de páginas, porque, si no me equivoco, intval redondea hacia abajo, mientras que ceil lo hace hacia arriba. Imagina que tienes 10 resultados y quieres mostrar 3 por página; si divides 10 entre 3, con intval obtendrías 3 (y esta bien), mientras que con ceil obtendrás 4, que es el número correcto de páginas:

Con intval - 3 resultados | 3 resultados | 3 resultados = 3 páginas.
Con ceil - 3 resultados | 3 resultados | 3 resultados | 1 resultado = 4 páginas.

Creo que con modificar eso bastaría :P, de lo contrario vuelves a preguntar :P.
Muchas gracias skaparate probé varias ecuaciones i de momento no me sale seguiré probando haver si lo consigo