Foros del Web » Programando para Internet » PHP »

Problema con el paginador PHP cuando doy F5

Estas en el tema de Problema con el paginador PHP cuando doy F5 en el foro de PHP en Foros del Web. Este es el paginador Código PHP: <?php include( '../Headers/cabecera2.inc' ); include( '../conexion/conexion.php' ); session_start (); echo '<script type="text/javascript" src="../js/ajax_docente.js"></script>' ; echo '<script type="text/javascript" src="../js/ilumina.js"></script>' ; echo '<div id="paginas" class="paginador">' ; echo ...
  #1 (permalink)  
Antiguo 22/02/2011, 12:15
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años
Puntos: 8
Mensaje Problema con el paginador PHP cuando doy F5

Este es el paginador

Código PHP:
<?php
include('../Headers/cabecera2.inc');
include(
'../conexion/conexion.php');
session_start();
echo
'<script type="text/javascript" src="../js/ajax_docente.js"></script>';
echo
'<script type="text/javascript" src="../js/ilumina.js"></script>';
echo
'<div id="paginas" class="paginador">';
echo
"<title>Docentes del Sistema de Actas de Calificaciones en Línea de la Escuela Preparatoria UNAN-MANAGUA</title>";
echo
'<div id=header class=borde><div><div></div></div></div>';
    echo
'<div id=izquierda class=borde>';
    echo
'<div id=derecha class=borde>';    
    echo
'<div id="contenido">';
    echo
'<div class="padding">';
    echo
'<body id="page_bg">';
     echo
'<div id="wrapper">';
     
if (isset(
$_SESSION['nombreusuario'])) 
{

echo 
"<img src='../imagen/panel.png' style=border-style:none;border-width:0px;left:112px;position:absolute;top:25px>";    
echo
"<span style=color:#FFFFFF;style=display:inline-block;font-weight:bold;font-size:18px;height:29px;width:334px;left:855px;position:absolute;top:111px>
    Usuari@: "
.$_SESSION['nombreusuario'],"</span>";
    include(
'../conexion/menu.php');
        
echo
"<span style=color:#000;style=display:inline-block;font-weight:bold;font-size:18px;height:109px;width:774px;left:190px;position:absolute;top:220px>
    Lista de Docentes del Sistema de Actas de Calificaciones en Línea</span>"
;

echo 
"<img src='../imagen/docentes.png'style=border-style:none;height:40px;width:40px;border-width:1px;left:240px;position:absolute;top:200px>";

$RegistrosAMostrar=4;
if(isset(
$_GET['pag']))
{
    
$RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
    
$PagAct=$_GET['pag'];
}
else
{
    
$RegistrosAEmpezar=0;
    
$PagAct=1;
}
$docentes="SELECT * FROM datosdocentes ORDER BY nombres LIMIT $RegistrosAEmpezar, $RegistrosAMostrar";
$dato mysql_query($docentes);
$numfilas mysql_num_rows($dato);
echo
'<table cellpadding=0 cellspacing=0 width=80% align=center border=0>';
echo
'<thead><tr><td>Nº</td><td>Nº Cedula</td><td>Nombres</td><td>Apellidos</td><td>Sexo</td><td>Editar</td><td>Eliminar</td></tr></thead>';
for (
$i=0$i<$numfilas$i++)
    {
$fila mysql_fetch_array($dato);
$numlistas $i 1;
echo 
'<tr onClick="ilumina(this)"><td>'.$numlistas.'</td>';
echo
'<td>'.$fila['noCedulaDoc'].'</td>';
echo
'<td>'.$fila['nombres'].'</td>';
echo
'<td>'.$fila['apellidos'].'</td>';
echo
'<td>'.$fila['sexo'].'</td>';
echo
'<td><a href="editadoc.php?id='.$fila['noCedulaDoc'].'" title="Editar Docente"><img src="../imagen/edit.png"></a></td>';
echo
'<td><a href="borrardoc.php?id='.$fila['noCedulaDoc'].'" title="Eliminar Docente"><img src="../imagen/stop.png"></a></td>';

}
echo
'</tr></table>';
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM datosdocentes"));
$PagAnt=$PagAct-1;
$PagSig=$PagAct+1;
$PagUlt=$NroRegistros/$RegistrosAMostrar;
$Res=$NroRegistros%$RegistrosAMostrar;
if(
$Res>0$PagUlt=floor($PagUlt)+1;
echo
'<br>';
echo
'<style>
a{
    text-decoration:none;
    cursor:pointer;
}
</style>'
;
echo 
"<span style=display:inline-block;font-weight:bold;font-size:12px;><a onclick=\"Pagina('1')\">[ Primero </a> ";
if(
$PagAct>1
echo 
"<a onclick=\"Pagina('$PagAnt')\"> Anterior </a> ";
echo 
"<b>| ".$PagAct." | de | ".$PagUlt." |</b>";
if(
$PagAct<$PagUlt)  
echo 
" <a onclick=\"Pagina('$PagSig')\"> Siguiente </a> ";
echo 
"<a onclick=\"Pagina('$PagUlt')\"> Ultimo ]</a></span><br>";
}
else
{
echo 
'<h2><div align="center">
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p>
  <p>&nbsp;</p> 
  <span>Área Restringuida </span>
  <p class="Estilo4"><img src="../imagen/acceso.png" /></p>
  <span>
  </p>
  <a href="../index.php">Ingresar</a></span> </div></h2>'
;
}
echo
'</div></div><div id="abajo"><div><div></div></div></div>';
    include(
'../Footers/pie4.inc');
    echo
'</div></div><div id="pie"><div><div></div></div></div>';
?>
Codigo de ajax para enviar la pagina por metodo Get

Código PHP:
function objetoAjax(){
 var 
xmlhttp=false;
  try{
   
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  }catch(
e){
   try {
    
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
   }catch(
E){
    
xmlhttp false;
   }
  }
  if (!
xmlhttp && typeof XMLHttpRequest!='undefined') {
   
xmlhttp = new XMLHttpRequest();
  }
  return 
xmlhttp;
}

function 
Pagina(nropagina){
divContenido document.getElementById('paginas'); 
 
ajax=objetoAjax();
  
ajax.open("GET""docentes.php?pag="+nropagina);
 
divContenido.innerHTML'<img src="../imagen/cargando.gif">';
 
ajax.onreadystatechange=function() {
  if (
ajax.readyState==4) {
   
//mostrar resultados en esta capa
   
divContenido.innerHTML ajax.responseText
  
}
 }
 
//como hacemos uso del metodo GET
 //colocamos null ya que enviamos 
 //el valor por la url ?pag=nropagina
 
ajax.send(null)

Quiero explicar el problema....Lo que ocurre es lo siguiente: cuando hay por ejemplo 8 paginas y doy clic en siguiente(pagina)y doy F5 la pagina se actualiza enviandome nuevamente a la pagina 1, es decir que no se mantiene en la pagina que deseo ver o mantener para poder trabajar
  #2 (permalink)  
Antiguo 22/02/2011, 12:19
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 7 meses
Puntos: 528
Respuesta: Problema con el paginador PHP cuando doy F5

El problema es que envías el número de página por ajax. Ajax sirve precisamente para no necesitar refrescar, por lo que es lo más normal del mundo que suceda esto.

Si en vez de ajax el paginador manda a llamar por url a otra página, el refrescar no reiniciaría la paginación.
  #3 (permalink)  
Antiguo 22/02/2011, 12:22
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años
Puntos: 8
Respuesta: Problema con el paginador PHP cuando doy F5

entonces lo recomendable es no usar ajax sino enviarlo mediante metodo get unicamente....es decir llamar a otra pagina(paginador)
  #4 (permalink)  
Antiguo 22/02/2011, 12:30
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Problema con el paginador PHP cuando doy F5

te manda a la pagina 1 por esto
Cita:
$PagAct=1;
-------------
recuerda que estas usando ajax y ajax se cargara desde 0 cada ves que le des a F5 y se cargara entrara al php y leera esto:
Código PHP:
Ver original
  1. if(isset($_GET['pag'])) {
  2.     $RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
  3.     $PagAct=$_GET['pag'];
  4. } else {
  5.     $RegistrosAEmpezar=0;
  6.     $PagAct=1;
  7. }
y ara caso al else y te dara $PagAct= 1

solución o guardas la pag en una variable de session o en una cookie, y luego en el else le dises
Código PHP:
Ver original
  1. ...
  2. else {
  3. if(isset($_cookie['pag'])) {
  4.    $RegistrosAEmpezar=($_cookie['pag']-1)*$RegistrosAMostrar;
  5.     $PagAct=$_cookie['pag'];
  6. } else {
  7.     $RegistrosAEmpezar=0;
  8.     $PagAct=1;
  9. }
  10. }

o simplemente ya que usas ajax puedes aprovechar el hash
que es esa # que va en la url, al estilo twitter..
  #5 (permalink)  
Antiguo 22/02/2011, 12:36
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años
Puntos: 8
Respuesta: Problema con el paginador PHP cuando doy F5

es decir guardar la pagina actual (a la que di clic) en una variable?????


explicame mejor lo del hash....por favor
  #6 (permalink)  
Antiguo 22/02/2011, 13:00
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Información Respuesta: Problema con el paginador PHP cuando doy F5

Cita:
Iniciado por Deathmetalrules Ver Mensaje
es decir guardar la pagina actual (a la que di clic) en una variable?????


explicame mejor lo del hash....por favor

si piensas guardar si
como lo envías por javascript la sesion sobra..XD
en javascript pondrias arriba de
Código Javascript:
Ver original
  1. ajax.open("GET", "docentes.php?pag="+nropagina);
colocas
Código Javascript:
Ver original
  1. document.cookie="pag="+nropagina;

------------------
y para lo del hash es asi

te creas una nueva pagina php vale. la llamas pp2.php
y dentro colocas:
Código PHP:
Ver original
  1. if (isset($_GET['p'])) {    
  2.     $p= $_GET['p'];
  3.      echo $p;
  4. }
con esto cuando entres a pp2.php?p=hola mundo la pagina te mostrara hola mundo.
bien eso esta claro............. supongo.....

ahora el js:
te creas un nuevo archivo js y lo llamas pp.js
y dentro colocas : (tal igual como te lo escribo)
Código Javascript:
Ver original
  1. // definimos estandares
  2.     var peticion_http = null;
  3.     var hashDefecto = null;
  4.     var errorDeTiempo = null;
  5.     var tiempoPagina = null;   
  6.     var esperaMax = 12000;
  7.     var espera = 800;
  8. // funciones ajax
  9.     // creamos objeto ajax
  10.         function inicializa_xhr() {
  11.           if(window.XMLHttpRequest) {
  12.             return new XMLHttpRequest();
  13.           } else if(window.ActiveXObject) {
  14.             return new ActiveXObject("Microsoft.XMLHTTP");
  15.           }
  16.         }
  17.     // función ajax que abrirá las paginas
  18.     function cargaContenido(url,variables,funcion,metodo,ab) {
  19.       peticion_http = inicializa_xhr();
  20.       metodo = metodo || 'GET';
  21.       ab = ab || '';
  22.       if(peticion_http) {        
  23.         if (ab=='rex') {cuentraAtras = setTimeout("comprobarHash()", esperaMax);}      
  24.         if(metodo == 'POST'){
  25.             peticion_http.open('POST', url, true);
  26.             peticion_http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  27.             peticion_http.send(variables);
  28.         } else {
  29.             url = url+'?'+variables;
  30.             peticion_http.open('GET', url, true);
  31.             peticion_http.send(null);
  32.         }
  33.         peticion_http.onreadystatechange = funcion;
  34.       }
  35.     }
  36.     // error de espera a la carga  
  37.     function declaraError(contenedor) {
  38.         /* si a supera el tiempo de esperaMax se prosede este metodo*/ 
  39.         if(errorDeTiempo) {clearTimeout(errorDeTiempo);}
  40.         if(tiempoPagina) {clearTimeout(tiempoPagina);}
  41.         document.getElementById('avisos').style.display='none';
  42.         document.getElementById('error').style.display='';
  43.        
  44.         document.getElementById(contenedor).style.display='none';
  45.     }
  46.    
  47. // controles de tiempo y carga
  48.     function comprobarHash() {     
  49.         tiempoPagina = setTimeout("comprobarHash()", espera);  
  50.         if(hashDefecto == window.location.hash) return;
  51.         cargaPagina(window.location.hash);
  52.      }
  53.      
  54.     function abortar() {
  55.       // La cuentra atrás se ha cumplido, detener la petición HTTP pendiente
  56.       peticion_http.abort();
  57.       alert("Se ha producido un error en la comunicación con el servidor. Inténtalo un poco más adelante.");
  58.     }
  59.    
  60. //////////////////////////////////////operacioens registro

con eso as creado una función que se llama cargaContenido()
que le pasa como parametros
Cita:
(LA PAGINA A ABRIR,LAS VARIABLES,LA FUNCION DE RESPUESTA,EL METODO get o post,ab<= si hay 'rex' activa el cuenta atrás para abortar la conexión si se tarda musho si no lo hay continua)
bien ahora la magia del hash, te crear una pagina pp.php (dentro la pa pagina creas)
Código HTML:
Ver original
  1. <ul>
  2.                     <li><a href="#p=citas">citas</a></li>
  3.                     <li><a href="#p=amigos">amigos</a></li>
  4.                     <li><a  href="#p=ofertasMias">ofertasMias</a></li>
  5.                   </ul>
  6. <div id="contendioPerfil">                                      
  7.                   </div>
y en la cabecera colocas
Código Javascript:
Ver original
  1. <script type="text/javascript" src="pp.js"></script>
  2. <script type="text/javascript">
  3. function iniciar() {/*inicia el proseso al cargarse la pagina*/cargaPagina(window.location.hash);}
  4. function cargaPagina(hash) {
  5.     errorDeTiempo = setTimeout("declaraError('contendioPerfil')", esperaMax);  
  6.     hashDefecto = hash;
  7.     hash = hash.replace(/^\#/, ""); // limpia el hash quita el # par colocar despues el ?
  8.     if(hash.length > 0) hash = hash;
  9.     cargaContenido("pp2.php",hash,muestrame,'GET','rex');// llama a la funcion ajax para enviar al php
  10. }
  11. function muestrame() {
  12.     var pagina=document.getElementById('contendioPerfil');
  13.     if (peticion_http.readyState == 4) {       
  14.         if(peticion_http.status==200) {clearTimeout(errorDeTiempo);
  15.             tiempoPagina = setTimeout("comprobarHash()", espera);
  16.             pagina.innerHTML = peticion_http.responseText;
  17.         } else if(peticion_http.status==404){pagina.innerHTML = '<div class="avis carga">La pagina no existe</div>';
  18.         } else {preloader.innerHTML = '<div class="avis carga">Error > fatal: por favor avisar al administrador</div>';}           
  19.     } else {
  20.         pagina.innerHTML = '<div class="avis carga">Cargando la pagina...</div>';
  21.     }
  22. }
  23. </script>

ojo
Cita:
los nombres son de prueba luego con calma examinas el código y lo acomodas a tus necesidades, si tienes algun problema avisas ya que lo e escrito ahora ... XD

Última edición por cosobo; 22/02/2011 a las 13:03 Razón: include
  #7 (permalink)  
Antiguo 22/02/2011, 13:03
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años
Puntos: 8
Respuesta: Problema con el paginador PHP cuando doy F5

bueno yo lo reviso si no lo entiendo te escribo muchas gracias por coolaborarme
  #8 (permalink)  
Antiguo 22/02/2011, 13:43
(Desactivado)
 
Fecha de Ingreso: enero-2011
Mensajes: 66
Antigüedad: 13 años, 11 meses
Puntos: 2
Respuesta: Problema con el paginador PHP cuando doy F5

Cita:
Iniciado por Deathmetalrules Ver Mensaje
bueno yo lo reviso si no lo entiendo te escribo muchas gracias por coolaborarme
con lo del hash
---------------------------------------
lo e probado y te corrijo esto,
-> pp2.php queda igual
-> pp.php seria asi
Código HTML:
Ver original
  1. <script type="text/javascript" src="pp.js"></script>
  2. <script type="text/javascript">
  3. function iniciar() {/*inicia el proseso*/cargaPagina(window.location.hash);}
  4. function cargaPagina(hash) {
  5.     errorDeTiempo = setTimeout("declaraError('contendioPerfil')", esperaMax);  
  6.     hashDefecto = hash;
  7.     hash = hash.replace(/^\#/, ""); // limpia el hash quita el # par colocar despues el ?
  8.     if(hash.length > 0) hash = hash;
  9.     cargaContenido("pp2.php",hash,muestrame,'GET','rex');// llama a la funcion ajax para enviar al php
  10. }
  11. function muestrame() {
  12.     var pagina=document.getElementById('contendioPerfil');
  13.     if (peticion_http.readyState == 4) {       
  14.         if(peticion_http.status==200) {clearTimeout(errorDeTiempo);
  15.             tiempoPagina = setTimeout("comprobarHash()", espera);
  16.             pagina.innerHTML = peticion_http.responseText;
  17.         } else if(peticion_http.status==404){pagina.innerHTML = '<div class="avis carga">La pagina no existe</div>';
  18.         } else {preloader.innerHTML = '<div class="avis carga">Error > fatal: por favor avisar al administrador</div>';}           
  19.     } else {
  20.         pagina.innerHTML = '<div class="avis carga">Cargando la pagina...</div>';
  21.     }
  22. }
  23. </head>
  24. <div id="error" style="display:none">
  25.         Paso un error
  26. </div>
  27. <div id="avisos">
  28.     <h1>No esta ativado el js</h1>
  29. </div>
  30.  
  31. <ul class="menuPerfil">
  32.     <li><a href="#p=citas">Citas</a></li>
  33.     <li><a href="#p=amigos">Mis referidos </a></li>
  34.     <li><a href="#p=ofertasMias">Ofertas </a></li>
  35.     <li><a href="#p=este es un contedino muy largo">este es un contedino muy largo</a></li>
  36. </ul>
  37.                                      
  38. <div id="contendioPerfil" class="ctnPerfil">                                      
  39. </div>
  40. <!----------------->
  41. <script type="text/javascript">
  42.     document.getElementById('error').style.display='none';
  43.     document.getElementById('avisos').style.display='none';
  44.     window.onload = iniciar();
  45. </body>
  46. </html>

-> pp.js quedaría asi :
Código Javascript:
Ver original
  1. // definimos estandares
  2.     var peticion_http = null;
  3.     var hashDefecto = null;
  4.     var errorDeTiempo = null;
  5.     var tiempoPagina = null;   
  6.     var esperaMax = 12000;
  7.     var espera = 800;
  8. // funciones ajax
  9.     // creamos objeto
  10.         function inicializa_xhr() {
  11.           if(window.XMLHttpRequest) {
  12.             return new XMLHttpRequest();
  13.           } else if(window.ActiveXObject) {
  14.             return new ActiveXObject("Microsoft.XMLHTTP");
  15.           }
  16.         }
  17.     // ajax
  18.     function cargaContenido(url,variables,funcion,metodo,ab) {
  19.       peticion_http = inicializa_xhr();
  20.       metodo = metodo || 'GET';
  21.       ab = ab || '';
  22.       if(peticion_http) {        
  23.         if (ab=='rex') {cuentraAtras = setTimeout("comprobarHash()", esperaMax);}      
  24.         if(metodo == 'POST'){
  25.             peticion_http.open('POST', url, true);
  26.             peticion_http.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  27.             peticion_http.send(variables);
  28.         } else {
  29.             url = url+'?'+variables;
  30.             peticion_http.open('GET', url, true);
  31.             peticion_http.send(null);
  32.         }
  33.         peticion_http.onreadystatechange = funcion;
  34.       }
  35.     }
  36.     // error de espera a la carga  
  37.     function declaraError(contenedor) {
  38.         /* si a supera el tiempo de esperaMax se prosede este metodo*/ 
  39.         if(errorDeTiempo) {clearTimeout(errorDeTiempo);}
  40.         if(tiempoPagina) {clearTimeout(tiempoPagina);}
  41.         document.getElementById('avisos').style.display='none';
  42.         document.getElementById('error').style.display='';
  43.        
  44.         document.getElementById(contenedor).style.display='none';
  45.     }
  46.    
  47. // controles de tiempo y carga
  48.     function comprobarHash() {     
  49.         tiempoPagina = setTimeout("comprobarHash()", espera);  
  50.         if(hashDefecto == window.location.hash) return;
  51.         cargaPagina(window.location.hash);
  52.      }
  53.      
  54.     function abortar() {
  55.       // La cuentra atrás se ha cumplido, detener la petición HTTP pendiente
  56.       peticion_http.abort();
  57.       alert("Se ha producido un error en la comunicación con el servidor. Inténtalo un poco más adelante.");
  58.     }
  59.    
  60. //////////////////////////////////////
  #9 (permalink)  
Antiguo 24/02/2011, 12:12
Avatar de Deathmetalrules  
Fecha de Ingreso: diciembre-2010
Ubicación: Mas - aya
Mensajes: 65
Antigüedad: 14 años
Puntos: 8
Respuesta: Problema con el paginador PHP cuando doy F5

Gracias voy a probarlo aunq ya he corregido el error mediante llamadas php por metodo get ....sin utilizar ajax ..

aunque mi idea es usuar Ajax....

Etiquetas: cuando, paginador
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:55.