Hola!!
Bueno, tengo un sistema de comentarios, y para que no se muestren todos seguidos quería paginarlos, mostrar los comentarios en varias páginas de 10 comentarios cada una, pero que para cambiar de página en página no haya que refrescar, así que busqué y encontré algo en AJAX que podía servir.
Los códigos quedaron así:
paginador.php (Aquí mostramos los comentarios paginados pero sin estilos, luego pongo por qué)
Luego, donde quiero mostrar los comentarios paginados, añado en el head:
Hasta ahí todo bien, sólo se ven 15 comentarios y me aparece el número total de páginas, por la que voy, etc...
Si le doy a la página siguiente, lo que tenía que hacer es mostrar los próximos 15 comentarios y quitarse los 15 primeros pero... se quitan los 15 primeros y en vez de mostrar los 15 siguientes no aparece nada donde deberían aparecer.
El archivo al que llamo, ajax.js, tiene este código:
Alguien me ilumina en este camino sin luz? :rolleyes:
Bueno, tengo un sistema de comentarios, y para que no se muestren todos seguidos quería paginarlos, mostrar los comentarios en varias páginas de 10 comentarios cada una, pero que para cambiar de página en página no haya que refrescar, así que busqué y encontré algo en AJAX que podía servir.
Los códigos quedaron así:
paginador.php (Aquí mostramos los comentarios paginados pero sin estilos, luego pongo por qué)
<?php
function expresiones($comentario) {
$comentario = str_replace(":D","<img src=iconos/icono1.jpg>", $comentario);
$comentario = str_replace(":d","<img src=iconos/icono1.jpg>", $comentario);
$comentario = str_replace(":-d","<img src=iconos/icono1.jpg>", $comentario);
$comentario = str_replace(":-D","<img src=iconos/icono1.jpg>", $comentario);
$comentario = str_replace(":P","<img src=iconos/icono2.jpg>", $comentario);
$comentario = str_replace(":-P","<img src=iconos/icono2.jpg>", $comentario);
$comentario = str_replace(":p","<img src=iconos/icono2.jpg>", $comentario);
$comentario = str_replace(":-p","<img src=iconos/icono2.jpg>", $comentario);
$comentario = str_replace(":(","<img src=iconos/icono3.jpg>", $comentario);
$comentario = str_replace(":-(","<img src=iconos/icono3.jpg>", $comentario);
$comentario = str_replace(":O","<img src=iconos/icono4.jpg>", $comentario);
$comentario = str_replace(":-O","<img src=iconos/icono4.jpg>", $comentario);
$comentario = str_replace(":o","<img src=iconos/icono4.jpg>", $comentario);
$comentario = str_replace(":-o","<img src=iconos/icono4.jpg>", $comentario);
$comentario = str_replace("-.-","<img src=iconos/icono5.jpg>", $comentario);
$comentario = str_replace("-_-","<img src=iconos/icono5.jpg>", $comentario);
$comentario = str_replace(":@","<img src=iconos/icono6.jpg>", $comentario);
$comentario = str_replace(":-@","<img src=iconos/icono6.jpg>", $comentario);
$comentario = str_replace(":?","<img src=iconos/icono7.jpg>", $comentario);
$comentario = str_replace(":-?","<img src=iconos/icono7.jpg>", $comentario);
$comentario = str_replace(":X","<img src=iconos/icono8.jpg>", $comentario);
$comentario = str_replace(":-X","<img src=iconos/icono8.jpg>", $comentario);
$comentario = str_replace(":x","<img src=iconos/icono8.jpg>", $comentario);
$comentario = str_replace(":-x","<img src=iconos/icono8.jpg>", $comentario);
return $comentario;
}
?>
<?php
require('conexion.php');
$RegistrosAMostrar=10;
$id = $_GET[id];
$id = strip_tags($id);
$pag = $_GET[pag];
$pag = strip_tags($pag);
if ($pag < 0){
header ("location: http://miweb.com");
}
if ($pag == 0){
header ("location: http://miweb.com");
}
//estos valores los recibo por GET
if(empty($pag)){
$RegistrosAEmpezar=0;
$PagAct=$pag;
header ("location: http://miweb.com/novedad.php?id=$id&pag=1");
//caso contrario los iniciamos
}else{
$RegistrosAEmpezar=0;
$PagAct=$pag;
}
$Resultado=mysql_query("SELECT * FROM comentarios WHERE id=$id ORDER BY fecha ASC LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$con);
if (mysql_num_rows($Resultado)) {
while ($qry = mysql_fetch_array($Resultado)) {
$fecha=isset($_GET['fecha'])?$_GET['fecha']:date("Y-m-d");
list($ano,$mes,$dia)=explode("-",$qry[fecha]);
$meses=array('Ene','Feb','Mar','Abr','May','Jun','Jul','Ago','Sep','Oct','Nov','Dic');
$mes=$meses[$mes-1];
$fecha2=isset($_GET['edicion'])?$_GET['edicion']:date("Y-m-d");
list($ano2,$mes2,$dia2)=explode("-",$qry[edicion]);
$meses2=array('1','2','3','4','5','6','7','8','9','10','11','12');
$mes2=$meses2[$mes2-1];
$nick = strip_tags($qry[nick]);
$nick = htmlentities($nick);
$nick = ucfirst($nick);
$comentario = strip_tags($qry[comentario]);
$comentario = htmlentities($comentario);
$comentario = expresiones($comentario);
$idcomentario = strip_tags($qry[idcomentario]);
$qry2 = mysql_fetch_array( mysql_query( "SELECT * FROM comentarios WHERE idcomentario = $idcomentario" ) );
if( $qry['tipo'] == "normal" ) {
echo "<li class='comment even thread-even depth-1' id='li-comment-$idcomentario'>
<div id='comment-$idcomentario'>
<div class='author vcard' style='width: 201px;'>
<div class='date'><span class='day'>$dia</span> <span class='month'>$mes</span> <span class='year'>$ano</span></div>
<!--<img alt='' src='http://0.gravatar.com/avatar/6d72f2841cfd866e5202457a5763bbda?s=45&d=http%3A%2F%2Fwww.danielabril.net%2Fwordpress%2Fwp-content%2Fthemes%2Fminics%2Fimages%2Fdefault_avatar.png&r=G' class='avatar avatar-45 photo' height='45' width='45' />--><img src='http://www.miwbe.com/avatars/$nick-XS.jpg' alt='' class='avatar avatar45-photo' height='45' width='45' /><img src='http://www.miwbe.com/img/saysomething.gif' class='saysomething' alt='arrow' height='45' />
<cite class='authName fn'>$nick</cite> </div><!-- .comment-author .vcard -->
<div class='comment-body'>
<p>$comentario</p><br /><br />
<div class='comment-meta'>
Publicado a las $qry[hora]";
} else {
echo "<li class='comment even thread-even depth-1' id='li-comment-$idcomentario'>
<div id='comment-$idcomentario'>
<div class='author2'>
<div class='date'><span class='day'>$dia</span><span class='month2'>$mes</span><span class='year2'>$ano</span></div>
<!--<img alt='' src='http://0.gravatar.com/avatar/6d72f2841cfd866e5202457a5763bbda?s=45&d=http%3A%2F%2Fwww.danielabril.net%2Fwordpress%2Fwp-content%2Fthemes%2Fminics%2Fimages%2Fdefault_avatar.png&r=G' class='avatar avatar-45 photo' height='45' width='45' />--><img src='http://www.miwbe.com/avatars/$nick-XS.jpg' alt='' class='avatar avatar45-photo' height='45' width='45' /><!--
<!--<img src='flecha.jpg' class='saysomething' alt='arrow' height='45' />--><img src='http://www.miwbe.com/img/saysomething.gif' class='saysomething' alt='arrow' height='45' />
<cite class='authName2'>$nick</cite> </div><!-- .comment-author .vcard -->
<div class='comment-body2'>
<p>$comentario</p>
<div class='comment-meta'><br /><br />
Publicado a las $qry[hora]";
}
$qry = mysql_fetch_array( mysql_query( "SELECT * FROM comentarios WHERE idcomentario = $idcomentario" ) );
if( !empty( $qry['edicion'] ) )
echo " | <small><b>Última edición: <u>$dia2/$mes2/$ano2</u> a las <u>$qry[horaedicion]</u></b></small>";
echo "</div><!-- .comment-meta .commentmetadata -->
</div>
<!--<div class='reply'>
</div>--><!-- .reply -->
</div><!-- #comment-## -->
</li>";
}
}
//******--------determinar las páginas---------******//
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM comentarios WHERE id=$id"));
$NroRegistros=strip_tags($NroRegistros);
$PagAnt=$PagAct-1;
$PagAnt=strip_tags($PagAnt);
$PagSig=$PagAct+1;
$PagSif=strip_tags($PageSig);
$PagUlt=$NroRegistros/$RegistrosAMostrar;
$PagUlt=strip_tags($PagUlt);
if($pag>$PagUlt){
header ("location: http://miweb.com");
}
//verificamos residuo para ver si llevará decimales
$Res=$NroRegistros%$RegistrosAMostrar;
$Res=strip_tags($Res);
// si hay residuo usamos funcion floor para que me
// devuelva la parte entera, SIN REDONDEAR, y le sumamos
// una unidad para obtener la ultima pagina
if($Res>0) $PagUlt=floor($PagUlt)+1;
$PagUlt=strip_tags($PagUlt);
//desplazamiento
if($PagAct==1){
echo "<h3 class='comments-title'>";
}
if($PagAct>1){
echo "<h3 class='comments-title'><a style='color:#006692; text-decoration:underline; cursor:pointer;' onclick=\"Pagina('1')\">« Primera</a> ";
echo "<a style='color:#006692; text-decoration:underline; cursor:pointer;' onclick=\"Pagina('$PagAnt')\">Anterior</a> ";
}
echo "<strong>Página $PagAct de $PagUlt</strong>";
if($PagAct<$PagUlt){
echo " <a style='color:#006692; text-decoration:underline; cursor:pointer;' onclick=\"Pagina('$PagSig')\">Siguiente</a> ";
}
echo "<a style='color:#006692; text-decoration:underline; cursor:pointer;' onclick=\"Pagina('$PagUlt')\">Última »</a></h3>";
?>Luego, donde quiero mostrar los comentarios paginados, añado en el head:
[COLOR=#000000][B]<[/B][/COLOR][COLOR=#000000]script language="javascript" type="text/javascript" src="ajax.js"></script[/COLOR][COLOR=#000000][B]>[/B][/COLOR]Y para ponerlos en el sitio que quiero añado esto:include ("paginador.php");Y ya pone los comentarios.Hasta ahí todo bien, sólo se ven 15 comentarios y me aparece el número total de páginas, por la que voy, etc...
Si le doy a la página siguiente, lo que tenía que hacer es mostrar los próximos 15 comentarios y quitarse los 15 primeros pero... se quitan los 15 primeros y en vez de mostrar los 15 siguientes no aparece nada donde deberían aparecer.
El archivo al que llamo, ajax.js, tiene este código:
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){
//donde se mostrará los registros
divContenido = document.getElementById('commentlist');
ajax=objetoAjax();
//uso del medoto GET
//indicamos el archivo que realizará el proceso de paginar
//junto con un valor que representa el nro de pagina
ajax.open("GET", "paginador.php?pag="+nropagina);
divContenido.innerHTML= 'Cargando los siguientes comentarios...';
ajax.onreadystatechange=function() {
if (ajax.readyState==10) {
//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)
}Alguien me ilumina en este camino sin luz? :rolleyes: