Ver Mensaje Individual
  #10 (permalink)  
Antiguo 24/09/2008, 06:13
pier2384
 
Fecha de Ingreso: septiembre-2008
Ubicación: a medio camino, entre ninguna parte y el olvido
Mensajes: 68
Antigüedad: 16 años, 5 meses
Puntos: 1
Respuesta: Problemas con las Sesiones en PHP

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!!