Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Graphixx en 6 Enero 2013, 22:24 pm



Título: [Ayuda] Destruir sesion al cambiar de pagina por href
Publicado por: Graphixx en 6 Enero 2013, 22:24 pm
Estoy usando sesiones para paginar asi:
Código
  1.      <?php
  2. //SELECT * FROM tabla ORDER BY date DESC LIMIT 10
  3. $sql="select * from inventario where tipo_propiedad='Apartamento' ";
  4.  
  5. //Limito la busqueda
  6. $TAMANO_PAGINA = 2;
  7.  
  8. //examino la página a mostrar y el inicio del registro a mostrar
  9. $pagina = $_GET["pagina"];
  10. if (!$pagina) {
  11.    $inicio = 0;
  12.    $pagina=1;
  13. }
  14. else {
  15.    $inicio = ($pagina - 1) * $TAMANO_PAGINA;
  16. }
  17.  
  18. $_SESSION['sql']=$sql; //pa poder que el paginador sepa la sentencia sql con que se estaba paginando
  19.  
  20. $link=mysql_connect("localhost","root","");
  21. mysql_select_db("inmobiliaria",$link);
  22.  
  23. //miro a ver el número total de campos que hay en la tabla con esa búsqueda
  24. $ssql = $_SESSION['sql']." ". $criterio;
  25. $rs = mysql_query($ssql,$link);
  26. $num_total_registros = mysql_num_rows($rs);
  27. //calculo el total de páginas
  28. $total_paginas = ceil($num_total_registros / $TAMANO_PAGINA);
  29.  
  30. //pongo el número de registros total, el tamaño de página y la página que se muestra
  31. echo "Número de registros encontrados: " . $num_total_registros . "<br>";
  32. echo "Se muestran páginas de " . $TAMANO_PAGINA . " registros cada una<br>";
  33. echo "Mostrando la página " . $pagina . " de " . $total_paginas . "<p>";
  34.  
  35. //construyo la sentencia SQL
  36. $ssql = $_SESSION['sql']." " . $criterio . " limit " . $inicio . "," . $TAMANO_PAGINA;
  37. $rs = mysql_query($ssql,$link);
  38.  
  39. if(mysql_num_rows($rs)>0){
  40.   echo "<center><table width='829'><tr><td>RESULTADOS ENCONTRADOS</td></tr>";
  41.  
  42. while($col=mysql_fetch_array($rs))
  43. {
  44. if($col["tipo_negocio"]=="venta"){
  45. $titulo1="SE VENDE";
  46. }elseif($col["tipo_negocio"]=="arriendo"){
  47. $titulo1="SE ARRIENDA";
  48. }elseif($col["tipo_negocio"]=="amoblado"){
  49. $titulo1="APTO AMOBLADO";
  50. }else{$titulo1="VENTA Y ARRIENDO";}
  51.  
  52.  
  53. $sql_img="select * from fotos where codigo_fotos='$col[codigo]' LIMIT 1";
  54. $resp_img=mysql_query($sql_img,$link) or die( "Error en query: $sql, el error  es: " . mysql_error() );
  55. $col_img=mysql_fetch_array($resp_img);
  56.  
  57. echo'<tr>
  58.    <th width="230" scope="col" style="border-width: 1px;border: solid; border-color: #009933;">'.strtoupper($col[tipo_propiedad]).' '.$titulo1.'</th>
  59.    <th colspan="2" bgcolor="#009933" scope="col">'.strtoupper($col[titulo]).'</th>
  60.    <th width="201" rowspan="2" scope="col" style="border-width: 1px;border: solid; border-color: #009933;">CODIGO</br>'.$col["codigo"].'</th>
  61.  </tr>
  62.  <tr>
  63.    <td rowspan="9" style="border-width: 1px;border: solid; border-color: #009933;"><img src="admin/uploads/inmuebles/'.$col_img["fotos"].'" width=250 height=200></td>
  64.    <td width="235" bgcolor="#009933">&nbsp;</td>
  65.    <td width="135" bgcolor="#009933">&nbsp;</td>
  66.  </tr>
  67.  <tr>
  68.    <td><strong>Area: '.$col["area"].'</strong></td>
  69.    <td colspan="2" rowspan="7" style="border-width: 1px;border: solid; border-color: #009933;" valign="top">'.substr($col["descripcion_propiedad"],0,395).'...</td>
  70.  </tr>
  71.  <tr>
  72.    <td><strong>Ciudad: '.$col["ciudad"].'</strong></td>
  73.  </tr>
  74.  <tr>
  75.    <td><strong>Barrio: '.$col["barrio"].'</strong></td>
  76.  </tr>
  77.  <tr>
  78.    <td><strong>Cuartos: '.$col["nro_habitaciones"].'</strong></td>
  79.  </tr>
  80.  <tr>
  81.    <td><strong>Nro Baños Privados: '.$col["nro_banos_privados"].'</strong></td>
  82.  </tr>
  83.  <tr>
  84.    <td><strong>Nro Baños Sociales: '.$col["nro_banos_sociales"].'</strong></td>
  85.  </tr>
  86.  <tr>
  87.    <td>&nbsp;</td>
  88.  </tr>
  89.   <tr>
  90.    <td><strong>Precio:'.$col["precio"].'</strong></td>
  91.    <td colspan="2"><a href="index_vista_inmueble.php?codigo='.$col["codigo"].'">Mas informacion...</a></td>
  92.  </tr>
  93.  <tr>
  94.    <td colspan="4">&nbsp;</td>
  95.  </tr>';
  96. }
  97. }
  98. echo "</table></center><center>Página: ";
  99. //muestro los distintos índices de las páginas, si es que hay varias páginas
  100. if ($total_paginas > 1){
  101.    for ($i=1;$i<=$total_paginas;$i++){
  102.       if ($pagina == $i)
  103.          //si muestro el índice de la página actual, no coloco enlace
  104.          echo $pagina . " ";
  105.       else
  106.          //si el índice no corresponde con la página mostrada actualmente, coloco el enlace para ir a esa página
  107.          echo "<a href='index_amoblados.php?pagina=" . $i . "&criterio=" . $txt_criterio . "'>" . $i . "</a> ";
  108.    }
  109. }
  110. echo "</center></br>";
  111. ?>
  112.  

el problema es que si no limpio la sesion cuando cambio de sesion en la pagina, se queda pegado el paginador en la ultima consulta que tuvo, alguien sabe como puedo limpiar la sesion pero solo cuando se usen los vinculos:

Código
  1.    <td colspan="2" align="center"><strong><a href="index_amoblados.php">Apartamentos Amoblados</a></strong></td>
  2.    <td colspan="2" align="center"><strong><a href="index_fincas.php">Fincas de Recreo</a></strong></td>
  3.    <td colspan="2" align="center"><strong><a href="index_ventas.php">Ventas</a></strong></td>
  4.    <td colspan="2" align="center"><strong><a href="index_arrendamientos.php">Arrendamientos</a></strong></td>
  5.  

Ya encontre el error estaba en el paginador que en vez de usar $_SESSION['sql'] se debia usar solamente la sentencia $sql.
desaparecen las lineas:
session_start();
$_SESSION['sql']=$sql;

y se reemplaza $_SESSION['sql'] por $sql en las lineas necesarias.


Título: Re: [Ayuda] Destruir sesion al cambiar de pagina por href
Publicado por: Ekel en 7 Enero 2013, 14:22 pm
no había pensado en usar sessiones para paginar, (no leí tu código)

pero esto te puede facilitar mucho eso de paginar:

http://onu.mx/OTY3

(requiere de login)

espero te sirva. (:


Título: Re: [Ayuda] Destruir sesion al cambiar de pagina por href
Publicado por: Graphixx en 7 Enero 2013, 20:58 pm
Gracias por el tip bro, yo para paginar use las magnificas instrucciones de esta pagina:
http://www.webnova.com.ar/articulo.php?recurso=458


Título: Re: [Ayuda] Destruir sesion al cambiar de pagina por href
Publicado por: ~ Yoya ~ en 12 Enero 2013, 07:08 am
@Graphixx un consejo para cuando vayas a postear un código, porque la verdad cuesta un poco entenderlo. Hay una regla que existe, no me acuerdo donde la lei pero es la siguiente (no me acuerdo exactamente como decia):

Tu código debe ser tan limpio que no necesites utilizar comentario para explicar como funciona.


Saludos.