Hola a todos! Estoy armando un buscador que trae los datos de mi base. Tengo un par de dudas y para colmo, me apareció un error que no lo había tenido nunca con este paginador que estoy usando desde hace rato. Me apareció esto:
Warning: Division by zero in c:\XXX\search3.php on line 107
Este paginador lo usé muchisimas veces y nunca me apareció un error así.
Cuando el buscador trae 1 solo dato no aparece ningun error. Cuando muestra los primeros 8 datos en pantalla, tampoco aparece el error... pero sí aparececuando presiono el link de SIGUIENTE del paginador.
Lo que quisiera saber, si me pueden ayudar, es:
- como puedo solucionar este inconveniente para que el paginador funcione.
- en el caso que presione el boton de buscar y no existe ningun dato, donde agregarle alguna línea que me informe que "no se encontraron datos".
Les muestro el código:
Código PHP:
// if 1
if ($_POST['buscador'])
{
// Tomamos el valor ingresado
$buscar = $_POST['palabra'];
//if 2
// Si está vacío, lo informamos, sino realizamos la búsqueda
if(empty($buscar))
{
echo "No se ha ingresado una cadena a buscar";
}else{
include ("con.php");
$CantxCol = 4; //Cantidad de columnas
$Cant = 0; // Variable para ser usada como contador
// conexion a la base
$conexion = mysql_connect($host_db, $usuario_db, $pass_db) or die ("no se ha podido conectar a la BD");
mysql_select_db($base_db, $conexion) or die ("no se ha podido seleccionar la BD");
// obtener datos de la base
$pag = $_GET['pag'];
// if 3
if (!isset($pag)) $pag = 1; // Por defecto, pagina 1
// Ejecuto la consulta
$sql = "SELECT COUNT(*) FROM restaurantes WHERE nombre LIKE '%$buscar%'";
$result = mysql_query($sql, $conexion);
list($total) = mysql_fetch_row($result);
$tampag = 8;
$reg1 = ($pag-1) * $tampag;
$result = mysql_query("SELECT * FROM restaurantes WHERE nombre LIKE '%$buscar%' ORDER BY id_rubro LIMIT $reg1, $tampag", $conexion) or die(mysql_error());
// if 4
if (mysql_num_rows($result)){
// Muestro los registros
while ($fila = @mysql_fetch_array($result))
{
<a href="micrositio.php?rubro=" echo $fila['rubro']; "&idrubro=" .echo $fila['id_rubro']; "><img src="echo $fila['foto'];" border="0" /></a>"
echo $fila['nombre'];
$Cant = $Cant + 1;
// if 5
if (($Cant % $CantxCol) == 0)
{
} // fin 5
} // fin 4
//libero el recordset
mysql_free_result($result);
} // fin 3
} // fin 2
} // fin 1
// Cierro la conexion
// mysql_close($conexion);
/******************************************************/
/* Funcion paginar
* actual: Pagina actual
* total: Total de registros
* por_pagina: Registros por pagina
* enlace: Texto del enlace
* Devuelve un texto que representa la paginacion
*/
function paginar($actual, $total, $por_pagina, $enlace) {
$pag = $_GET['pag'];
$total_paginas = ceil($total/$por_pagina); // Error division zero line 107
$anterior = $actual - 1;
$posterior = $actual + 1;
if ($actual>1)
$texto = "<a href=\"$enlace$anterior\" class='verdana-10px'>« ANTERIOR</a> ";
else
$texto = "<b>« ANTERIOR</b> ";
for ($i=1; $i<$actual; $i++)
$texto .= "<a href=\"$enlace$i\" class='verdana-10px'>$i</a> ";
$texto .= "<b>$actual</b> ";
for ($i=$actual+1; $i<=$total_paginas; $i++)
$texto .= "<a href=\"$enlace$i\" class='verdana-10px'>$i</a> ";
if ($actual<$total_paginas)
$texto .= "<a href=\"$enlace$posterior\" class='verdana-10px'>SIGUIENTE »</a>";
else
$texto .= "<b>SIGUIENTE »</b>";
return $texto;
}
echo paginar($pag, $total, $tampag, "search3.php?pag=");
Muchas gracias por todo de antemano.
Saludos. Marx.