Como paginar noticias con un leer más en php y ajax

Que tal me llamo mariano, y estoy desarrollando un sistema de noticias de cero puro código y con algunas cosas en ajax, ya tengo todo el panel de control todo hecho mi problema es ahora la página index.
El index.php que ven los usuarios no lo logro implementar como a mi me gustaría, tener un titulo, una noticia corta, fecha y un leer más para direccionar a que vea la nota en cuestión, todo esto que si puedo hacer en el panel de administración.
Lo que quiero es hacer algún sistema como el de facebook pero solo con noticias sin usuarios registrados ni nada por el estilo.(Más adelante me ocuparé de eso) o sea quiero crear un sistema de noticias con php mysql y ajax.
Como te había dicho ya tengo el panel de control funcionando con un sistema de administración de archivos donde el administrador puede hacer una noticia publicarla, se guarda por mysql en una base de datos, luego hice un sistema con (ajax php) uploader para subir archivos, luego otro más para poder administrar los archivos.
Después el administrador de las noticias puede crear usuarios y borrarlos a su antojo, así también las noticias, y poder editarlas.
Ahora bien terminé el panel de administración, el uploader de imágenes, el creador de usuarios, y la administración de noticias y la visualización de las mismas en el index de la administración, pero no puedo desarrollar el sistema para los usuarios comunes puedan visualizar estas.
Desde ya te agradecería que me ayudaras, si necesitas algo de mi parte para poder ayudarme con el código solo preguntame
desde ya

1 Respuesta

Respuesta
1
Explicas que no puedes hacer el index de tu página como tu lo deseas. Pero no explicas la razón. Si es cierto todo lo demás que dices haber echo(lo cual no dudo), entonces no entiendo por que no puedes hacer el despliegue de artículos en la página principal.
Si el sistema lo deseas hacer a través de AJAX, debes comprender 2 cosas:
1. Si todo lo manejas con AJAX, es decir, los artículos, los títulos y los textos son recibidos en el cliente desde el servidor mediante JavaScript, es posible que en los navegadores que no lo tengan activado se muestre incorrectamente tu página, o bien que no se muestre nada.
2. Si piensas hacerlo de la manera típica, es decir, tener un index.php que es procesado por el server generando el html de los artículos, entonces no estas usando AJAX :).
Ya que esta es la categoría JavaScript supongo que ya sabes lo anterior y necesitas ayuda sobre como implementar las peteciones y transformar las respuestas en articulos; en ese caso dime y te puedo ayudar.
Bueno te cuento lo primero:
Si, tengo todo armado, te dejo el link para que veas y entres a ver si te place aquí
user:admin
pass:admin
Como esta en prueba no me molesta que entres, de momento esta todo en código no hay diseño:P
ahora te cuento, mi gran problema es el siguiente, logro llegar a armar un paginador para la página index del usuario común en ajax y php para que no recargue la página, pero a la hora de querer poner un leer más para poder visualizar la noticia entera no puedo me tira un error, y no puedo implementarlo.
También te dejo el código para que lo puedas ver
código index.php(usuario común)
<html>
</head>
<body>
<div style="margin:auto;width:500px;text-align:center;">
<table border="1px">
<tr>
<td>Nombres</td>
<td>Departamento</td>
<td>Sueldo</td>
</tr>
</table>
<div id="contenido">
  <?php include('paginador.php')?>
 </div>
</div>
</body>
</html>
codigo paginado.php
<?php
require('dbconexion.php');
$RegistrosAMostrar=3;
//estos valores los recibo por GET
if(isset($_GET['pag'])){
$RegistrosAEmpezar=($_GET['pag']-1)*$RegistrosAMostrar;
$PagAct=$_GET['pag'];
//caso contrario los iniciamos
}else{
$RegistrosAEmpezar=0;
$PagAct=1;
}
$Resultado=mysql_query("SELECT * FROM noticias ORDER BY id_noticia LIMIT $RegistrosAEmpezar, $RegistrosAMostrar",$con);
echo "
<table border='0px'>
";
while($MostrarFila=mysql_fetch_array($Resultado)){
echo "
<tr>
";
echo "
<td>".$MostrarFila['titulo']."</td>
";
echo "
<td>".$MostrarFila['noticia_corta']."</td>
";
echo "
<td>".$MostrarFila['fecha']."</td>
";
echo "
</tr>
";
}
echo "
</table>
";
//******--------determinar las páginas---------******//
$NroRegistros=mysql_num_rows(mysql_query("SELECT * FROM noticias",$con));
$PagAnt=$PagAct-1;
$PagSig=$PagAct+1;
$PagUlt=$NroRegistros/$RegistrosAMostrar;
//verificamos residuo para ver si llevará decimales
$Res=$NroRegistros%$RegistrosAMostrar;
// 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;
//desplazamiento
echo "<a onclick=\"Pagina('1')\">Primero</a> ";
if($PagAct>1) echo "<a onclick=\"Pagina('$PagAnt')\">Anterior</a> ";
echo "<strong>Pagina ".$PagAct."/".$PagUlt."</strong>";
if($PagAct<$PagUlt)  echo " <a onclick=\"Pagina('$PagSig')\">Siguiente</a> ";
echo "<a onclick=\"Pagina('$PagUlt')\">Ultimo</a>";
?>
Desde ya nuevamente gracias por ocuparte y ayudarme
¿Qué error te tira exactamente?.
¿Cómo es que lo implementas?, en el código que muestras no veo ninguna intención de "leer más" o algo por el estilo.
Sigo sin ver el problema. De todas formas te diré como lo podrías hacer:
Tomas el ID del articulo de la BD y lo colocas en un enlace, algo como "verArticulo?id=FILAS['id']", eso es todo del lado de PHP. Ahora, para mostrar los artículos sin recarga debemos interceptar el click en el enlace, ya que el numero de artículos puede ser variable (o no), lo mejor será colocar un class directamente desde PHP "class='enlace_a_articulo' " y obtenerlas mediante alguna función que filtre por la clase deseada.
En caso de que no uses un framework:
obtenerPorClase('enlace_a_articulo') ó filtrarClase( document.getElementsByTagName('a'), 'enlace_a_articulo'),
En caso de Jquery:
$('a.enlace_a_articulo');
Una vez que los tienes interceptas el evento 'click' de cada uno de los enlaces, envías tu petición al servidor, puedes obtener el ID directamente desde el enlace usando substr() e indexOf(). Creas un div que se sobreponga al contenedor principal (donde están los artículos) y al recibir la respuesta colocas el resultado devuelto dentro de este.
En el div puedes dibujar algún botón ('regresar a artículos') o como desees, que simplemente elimina el DIV y en consecuencia muestra los artículos de nuevo.
Si usas algún framework se te facilitara el trabajo, te recomiendo JQuery.
Otras características interesantes seria controlar el back/Forward del navegador (Algo complicado), algunas animaciones de salida/entrada de contenedores y algún método de cache con el cual mantienes los datos de cada articulo en un array, si un usuario ve un articulo diferente 2 veces mientras esta en la misma página, evitaras llamar al servidor de nuevo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas