Es un buscador con un campo input text para buscar titulo, y otros dos campos que son categoria y año para selecionar de un desplegable el que quieras. Mas el boton de buscar.
Mi problema viene al paginar los resultados, al redireccionar a la misma pagina necesito tener guardados los datos seleccionados y lo intento hacer con variables de sesion, porque con $_POST lo intente y tampoco pude...
soy muy novato en php
El codigo es el siguiente:
Código:
<?PHP
session_start ();
?>
<?PHP
// Conectar con el servidor de base de datos
$conexion = mysql_connect ("********")
or die ("No se puede conectar con el servidor. Sentimos las molestias.");
// Seleccionar base de datos
mysql_select_db ("******")
or die ("No se puede seleccionar la base de datos. Sentimos las molestias.");
//Variables de sesion se cargan
$titulo_s = $_SESSION["tit"];
$categoria_s = $_SESSION["cat"];
$año_S = $_SESSION["a"];
?>
<div class="cabecera_buscador">
<a href="imgs/ayuda.jpg" rel="lightbox" style="color:#2499c4;" title="Ayuda"><img src="imgs/ayuda.png" alt="Ayuda" style="margin-top:2px; margin-left:5px;" align="left"/></a>
<form action="Obra.php" method="post" name="IFormBuscar">
<input type="text" name="O_Titulo" value="( Busca un cuadro )" onfocus="select()" size="35" class="caja_busqueda_imagen"/>
<select name="O_Categoria" class="caja_busqueda_categoria">
<div class="error_bd">
<?PHP
// Obtener los valores del tipo categoria
$instruccion = "SELECT categoria FROM categoria";
$consulta = mysql_query ($instruccion, $conexion)
or die ("No se puede acceder a la base de datos. Sentimos las molestias.");
?>
</div><!--error bd-->
<?PHP
$nfilas = mysql_num_rows ($consulta);
if ($nfilas > 0)
{
for ($i=0; $i<$nfilas; $i++)
{
$fila = mysql_fetch_array ($consulta);
?>
<option value="<? print $fila[0] ?>" <?php if($categoria_s == $fila[0]){ echo " selected"; } ?>> <? print $fila[0] ?> </option>
<?PHP
}
}
?>
<option value="Todas las categorias" <? if(print ($categoria_s)=="Todas las categorias"){echo " selected"; } ?>>Todas las categorias</option>
</select>
<select name="O_Año" class="caja_busqueda_año">
<?PHP
// Obtener los valores del tipo año
$now = gmdate("Y");
for ($i=1990; $i<=$now; $i++)
{
?>
<option value="<? print $i ?>" <? if($año_s==$i){echo " selected"; } ?> > <? print $i ?> </option>
<?PHP
}
?>
<option value="Todos los años" <? if(print ($año_s)=="Todos los años"){echo " selected"; } ?> >Todos los años</option>
</select>
<input type="submit" value="Buscar" name="Buscar" class="boton_buscar">
</form>
<?PHP
$titulo = $_REQUEST['O_Titulo'];
$categoria = $_REQUEST['O_Categoria'];
$año = $_REQUEST['O_Año'];
$info = "Mostrados los cuadros ";
if($titulo != "( Busca un cuadro )")
$info = "Mostrados todos los cuadros de Estéfano cuyo nombre coincide con '$titulo'.";
else
{
if ($categoria == "Todas las categorias" && $año == "Todos los años")
$info = "Mostrados todos los cuadros de Estéfano.";
else
{
if ($categoria != "Todas las categorias" && $año == "Todos los años")
$info = $info . "de la categoría '$categoria'. ";
else if ($categoria == "Todas las categorias" && $año != "Todos los años")
$info = $info . "de '$año'. ";
else if ($categoria != "Todas las categorias" && $año != "Todos los años")
$info = $info . "de la categoría '$categoria', de '$año'. ";
}
}
?>
<div class="buscador_estado"><p><? print $info ?></p></div>
</div><!--cabecera_buscador-->
<div class="centre">
<!-- Inicio Contenedor Izquierdo -->
<div class="contenedor_izq">
<?PHP
// Establecer el número de filas por página y la fila inicial
$num = 10; // número de filas por página
$comienzo = $_REQUEST['comienzo'];
if (!isset($comienzo)) $comienzo = 0;
// Enviar consulta
$instruccion = "SELECT * FROM cuadros";
$buscar = $_REQUEST['Buscar'];
$titulo = $_REQUEST['O_Titulo'];
if ($titulo != "( Busca un cuadro )")
$instruccion = $instruccion . " WHERE titulo LIKE '%$titulo%'";
$categoria = $_REQUEST['O_Categoria'];
if ($categoria != "Todas las categorias")
{
if ($titulo != "( Busca un cuadro )")
$instruccion = $instruccion . " AND categoria = '$categoria'";
else
$instruccion = $instruccion . " WHERE categoria = '$categoria'";
}
$año = $_REQUEST['O_Año'];
if ($año != "Todos los años")
{
if ($titulo != "( Busca un cuadro )" || $categoria != "Todas las categorias")
$instruccion = $instruccion . " AND año = '$año'";
else
$instruccion = $instruccion . " WHERE año = '$año'";
}
?>
<div class="error_bd">
<?PHP
// Calcular el número total de filas de la tabla
$instruccion = $instruccion . " order by año desc,mes desc";
$con = mysql_query ($instruccion, $conexion)
or die ("No hay ningún cuadro que se ajuste a esa descripción.");
$nfilas_pag = mysql_num_rows ($con);
//Realizar la consulta paginada
$instruccion = $instruccion ." limit $comienzo, $num";
$consulta = mysql_query ($instruccion, $conexion)
or die ("No hay ningún cuadro que se ajuste a esa descripción.");
$nfilas = mysql_num_rows ($consulta);
?>
</div><!--error bd-->
<?PHP
// Mostrar resultados de la consulta
$nfilas = mysql_num_rows ($consulta);
if ($nfilas > 0)
{
for ($i=0; $i<$nfilas; $i++)
{
$resultado = mysql_fetch_array ($consulta);
?>
<div class="obra">
<!--cuadro-->
<a href="cuadros/<? print $resultado['archivo'];?>" rel="lightbox[galeria1]" title="<? print $resultado['titulo'];?>"><img src="cuadros/thumbs/<? print $resultado['archivo'];?>" alt="<? print $resultado['titulo'];?>" title="<? print $resultado['titulo'];?>"/></a>
<div class="contenido_obra">
<c>Título: </c>
<d><? print($resultado['titulo']);?></d>
<br />
<c>Categoría: </c>
<d><? print($resultado['categoria']);?></d>
<br />
<c>Año: </c>
<d><? print($resultado['año']);?></d>
<br />
</div>
</div>
<?PHP
}
}
else{
?>
<div class="error_bd">
<? print ("No hay ningún cuadro que se ajuste a esa descripción."); ?>
</div>
<?PHP
}
//Variables de sesion se guardan
$_SESSION["tit"] = $titulo;
$_SESSION["cat"] = $categoria;
$_SESSION["a"] = $año;
// Cerrar conexión
mysql_close ($conexion);
?>
</div>
<!-- Fin Contenedor Izquierdo -->
</div>
<!-- Fin Centre -->
<div class="paginacion">
<?PHP
if ($nfilas_pag > 0)
{
// Mostrar números inicial y final de las filas a mostrar
print ("Mostrando noticias " . ($comienzo + 1) . " a ");
if (($comienzo + $num) < $nfilas_pag)
print ($comienzo + $num);
else
print ($nfilas_pag);
print (" de un total de $nfilas_pag.\n");
// Mostrar botones anterior y siguiente
$estapagina = $_SERVER['PHP_SELF'];
if ($nfilas_pag > $num)
{
if ($comienzo > 0)
print ("[ <A HREF='$estapagina?comienzo=" . ($comienzo - $num) . "'>Anterior</A> | ");
else
print ("[ Anterior | ");
if ($nfilas_pag > ($comienzo + $num))
print ("<A HREF='$estapagina?comienzo=" . ($comienzo + $num) . "'>Siguiente</A> ]\n");
else
print ("Siguiente ]\n");
}
}
?>
</div>
gracias!!