Foros del Web » Programando para Internet » PHP »

listar un determinado numero de noticias

Estas en el tema de listar un determinado numero de noticias en el foro de PHP en Foros del Web. buenas , estoy liado con un sitema de noticias y el codigo que tengo me muestra todas las noticias que tengo en la tabla "noticias" ...
  #1 (permalink)  
Antiguo 24/04/2011, 12:41
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
listar un determinado numero de noticias

buenas , estoy liado con un sitema de noticias y el codigo que tengo me muestra todas las noticias que tengo en la tabla "noticias" de la base de datos.
Como puedo limitar un numero determinado de noticias por paginas...y si supera ese numero quiero me muestre abajo los numeros de paginas con su enlace...


Código PHP:
while($row=mysql_fetch_array($result))
{
echo 
'<h2>'.$row[titulo].'</h2><br>
<p>'
.$row[articulo].'</p><br>
<p>'
.$row[fecha].'</p>'

;}
mysql_free_result($result

Un saludo y gracias.
  #2 (permalink)  
Antiguo 24/04/2011, 14:22
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 15 años, 8 meses
Puntos: 20
Respuesta: listar un determinado numero de noticias

Estás hablando de la paginación.
Busca por esto en el buscador hay mazo info y soluciones fáciles
  #3 (permalink)  
Antiguo 24/04/2011, 14:33
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

Gracias ya lo he encontrado y me funciona...pero tengo una duda..que tengo que modificar para cuando pinchas en una noticia se muestra esta en una pagina sola..

dejo el codigo ....

Código PHP:
$query="SELECT * FROM noticias";

$noticia mysql_query($query $conexion) or die ( mysql_error() );



$numeroRegistros mysql_num_rows($noticia);
//HAGAMOS AQUI LA PAGINACION, POR SI HAY MAS DE 25 NOTICIAS PARA PROCEDER A PONER LAS PAGINAS

$tamPag=5//el numero de noticias que mostrara por pagina (la puedes editar cuando quieras)
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina $_GET["pagina"];
}

$limitInf=($pagina-1)*$tamPag;


$numPags=ceil($numeroRegistros/$tamPag);
if(!isset(
$pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;

if(
$pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}

if (
$final>$numPags){
$final=$numPags;
}
}
$noticia2 mysql_query("SELECT * FROM `noticias` ORDER BY `fecha` DESC LIMIT ".$limitInf.","$tamPag ." ") or die ("<p>Ocurrio un error</p>");

$numeroDeresultados mysql_num_rows($noticia2);


if(
$numeroDeresultados <= 0)
{
echo 
"<p>No se encontraron resultados</p>";
}
else {
if(
mysql_num_rows($noticia2))
{
while (
$qry mysql_fetch_array($noticia2))
{




    
echo 
'<h2>'$qry["titulo"].'</h2>
<p>'
$qry["texto"].'</p>
<p>'
$qry["fecha"].'</p>';
}
}
}

if(
$pagina>1)

{
echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."'>";
echo 
"<font face='verdana' size='-2'>anterior</font>";
echo 
"</a> ";

}

for(
$i=$inicio;$i<=$final;$i++)
{
if(
$i==$pagina)
{
echo 
"<font face='verdana' size='-2'><b>".$i."</b> </font>";
}else{
echo 
"<a class='p' href='".$_SERVER["PHP_SELF"].
"?pagina=".$i."'>";
echo 
"<font face='verdana' size='-2'>".$i."</font></a> ";

}
}
if(
$pagina<$numPags)
{
echo 
" <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."'>";
echo 
"<font face='verdana' size='-2'>siguiente</font></a>";

  #4 (permalink)  
Antiguo 24/04/2011, 15:54
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 13 años, 6 meses
Puntos: 21
Respuesta: listar un determinado numero de noticias

Si entendí bien lo que pedis, lo que te falta es agregar target="_blank" entre los meta <a> </a>

Suerte ;)
__________________
Si te ayude, el karma nunca sobra ;)
  #5 (permalink)  
Antiguo 24/04/2011, 16:20
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

gracias, pero no entendiste bien lo que dije.

lo que quiero es que cada noticia tenga un enlace que al hacer click se muestre esa noticia sola y se muestre con esta url
http://localhost/mipaginaweb/noticias.php?id=1

con la id correspondiente a cada noticia

Gracias y un saludo.
  #6 (permalink)  
Antiguo 24/04/2011, 16:24
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 15 años, 8 meses
Puntos: 20
Respuesta: listar un determinado numero de noticias

Haces que ese enlace te lleve a una nueva página con una consulta sql, la cual sería mas o menos:
$sql=mysql_query("SELECT * FROM noticias WHERE id =" $_GET['id'];
  #7 (permalink)  
Antiguo 24/04/2011, 16:58
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

gracias esnola por tu respuesta

he añadido este enlace y consigo que me aparezca en la url la id de la noticia pero ahi me quedo no se como seguir..

Código PHP:
<a href="noticias.php?id='.$qry["id"].'">Ampliar Noticia</a>; 
pongo el codigo nuevamente con los cambios.

Código PHP:
$query="SELECT * FROM noticias";

$noticia mysql_query($query $conexion) or die ( mysql_error() );



$numeroRegistros mysql_num_rows($noticia);
//HAGAMOS AQUI LA PAGINACION, POR SI HAY MAS DE 25 NOTICIAS PARA PROCEDER A PONER LAS PAGINAS

$tamPag=5//el numero de noticias que mostrara por pagina (la puedes editar cuando quieras)
if(!isset($_GET["pagina"]))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$pagina $_GET["pagina"];
}

$limitInf=($pagina-1)*$tamPag;


$numPags=ceil($numeroRegistros/$tamPag);
if(!isset(
$pagina))
{
$pagina=1;
$inicio=1;
$final=$tamPag;
}else{
$seccionActual=intval(($pagina-1)/$tamPag);
$inicio=($seccionActual*$tamPag)+1;

if(
$pagina<$numPags)
{
$final=$inicio+$tamPag-1;
}else{
$final=$numPags;
}

if (
$final>$numPags){
$final=$numPags;
}
}
$noticia2 mysql_query("SELECT * FROM `noticias` ORDER BY `fecha` DESC LIMIT ".$limitInf.","$tamPag ." ") or die ("<p>Ocurrio un error</p>");

$numeroDeresultados mysql_num_rows($noticia2);


if(
$numeroDeresultados <= 0)
{
echo 
"<p>No se encontraron resultados</p>";
}
else {
if(
mysql_num_rows($noticia2))
{
while (
$qry mysql_fetch_array($noticia2))
{




    
echo 
'<h2>'$qry["titulo"].'</h2>
<p>'
$qry["texto"].'</p>
<p>'
$qry["fecha"].'</p>
<a href="noticias.php?id='
.$qry["id"].'">Ampliar Noticia</a>';
}
}
}

if(
$pagina>1)

{
echo 
"<a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina-1)."'>";
echo 
"<font face='verdana' size='-2'>anterior</font>";
echo 
"</a> ";

}

for(
$i=$inicio;$i<=$final;$i++)
{
if(
$i==$pagina)
{
echo 
"<font face='verdana' size='-2'><b>".$i."</b> </font>";
}else{
echo 
"<a class='p' href='".$_SERVER["PHP_SELF"].
"?pagina=".$i."'>";
echo 
"<font face='verdana' size='-2'>".$i."</font></a> ";

}
}
if(
$pagina<$numPags)
{
echo 
" <a class='p' href='".$_SERVER["PHP_SELF"]."?pagina=".($pagina+1)."'>";
echo 
"<font face='verdana' size='-2'>siguiente</font></a>";

  #8 (permalink)  
Antiguo 25/04/2011, 04:17
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

ya lo he conseguido...

he añadido al principio
este codigo

Código PHP:
if (!empty($_GET['id'])) {  
$sql "SELECT * FROM NOTICIAS WHERE ID='".$_GET['id']."'"
para que me muestre una noticia...y luego un "else" si no nada en el get me muestras noticias.php con todas las noticias.

Supongo que esta es la forma de hacerlo.

Gracias y Un saludo.
  #9 (permalink)  
Antiguo 25/04/2011, 04:59
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

tengo una duda mas...yo envio la id de la noticia a la url asi:

Código PHP:
<a href="noticias.php?id='.$qry["id"].'">Ampliar Noticia</a><br
si quiero poner el titulo de la noticia en la url seria asi:

Código PHP:
<a href="noticias.php?titulo='.$qry["titulo"].'">Ampliar Noticia</a><br
pero me sale asi
mipaginaweb/noticias.php?titulo=titulo de la noticia

hay alguna forma de ponerlo sin espacios...
mipaginaweb/noticias.php?titulo=titulo_de_la_noticia

Un saludo.
  #10 (permalink)  
Antiguo 25/04/2011, 08:04
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 15 años
Puntos: 49
Respuesta: listar un determinado numero de noticias

Que tal fupinet, puedes utilizar la función de cadena str_replace()




Saludos.
__________________
"SELECT * FROM Mujeres WHERE situacion NOT IN ('CASADAS','CON HIJOS','ATORMENTADAS','CUASI-ENNOVIADAS') AND personalidad <> 'INTENSA'"
  #11 (permalink)  
Antiguo 25/04/2011, 08:16
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 14 años, 3 meses
Puntos: 336
Respuesta: listar un determinado numero de noticias

tal como dijo Carlojas puedes usar str_replace, sin embargo luego tendras que decodificar eso nuevamente para que encuentre la noticia en la base de datos, por lo general para evitar ese problema en vez de cambiarlo por _ se cambia por +

Código PHP:
Ver original
  1. <a href="noticias.php?titulo='.str_replace(" ","+",$qry["titulo"]).'">Ampliar Noticia</a><br>
  #12 (permalink)  
Antiguo 25/04/2011, 08:42
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

gracias stramin al final he encontrado una funcion por internet.

La pongo

Código PHP:
function urls_amigables($url) {

// Tranformamos todo a minusculas

$url strtolower($url);

//Rememplazamos caracteres especiales latinos

$find = array('á''é''í''ó''ú''ñ');

$repl = array('a''e''i''o''u''n');

$url str_replace ($find$repl$url);

// Añaadimos los guiones

$find = array(' ''&''\r\n''\n''+');
$url str_replace ($find'-'$url);

// Eliminamos y Reemplazamos demás caracteres especiales

$find = array('/[^a-z0-9\-<>]/''/[\-]+/''/<[^>]*>/');

$repl = array('''-''');

$url preg_replace ($find$repl$url);

return 
$url;


Un saludo y gracias.
  #13 (permalink)  
Antiguo 25/04/2011, 12:33
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 14 años, 3 meses
Puntos: 336
Respuesta: listar un determinado numero de noticias

ten cuidado, si pones una noticia con tilde por ejemplo: "mi nótícíá"

ese script te dejara la url como "mi-noticia"

y cuando quieras buscar eso en la BD no la encontrarás.

o sea, esto:
<a href="noticias.php?titulo='.$qry["titulo"].'">Ampliar Noticia</a><br>

te creará esta URL:
noticias.php?titulo=mi-noticia

por lo tanto buscará esto en tu BD:
$sql = "SELECT * FROM NOTICIAS WHERE titulo='mi-noticia'";

y por supuesto esa noticia no existe por que era "mi nótícíá", así que no encontrarás la noticia que querías...
  #14 (permalink)  
Antiguo 25/04/2011, 12:45
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

gracias stramin ya sabia eso lo he hecho de esta forma
Código PHP:
<a href="noticias.php?id='.$qry["id"].'&'.urls_amigables($url).'">Ampliar Noticia</a><br
de esta forma compruebo la id...aunque añada tambien el titulo solo comprueba la id


ahora el problema que tengo es que me no me muestra bien los acentos en la web..me salen unos rombos negros con interrogacion

yo en la base de dato lo tengo asi con estos tipos de acentos ó í ú á... y no funciona pero si en la base de datos tengo esto &oacute; me sale bien...

no se donde esta el error ...y como invertir ese code para que siempre me funciona de la primera manera


Un saludo
  #15 (permalink)  
Antiguo 25/04/2011, 13:02
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 14 años, 3 meses
Puntos: 336
Respuesta: listar un determinado numero de noticias

buena solución encontraste, en cuanto a los rombos son símbolos que no se ven, cuando imprimas algo usa htmlentities();

echo htmlentities($qry["titulo"]);

así php convierte á en $aacute; y el navegador puede interpretarlo sin problemas.

(para decodificar usa html_entity_decode que convierte $aacute; en á)
  #16 (permalink)  
Antiguo 25/04/2011, 13:19
 
Fecha de Ingreso: julio-2009
Mensajes: 100
Antigüedad: 12 años, 11 meses
Puntos: 4
Respuesta: listar un determinado numero de noticias

Gracias stramin
lo he hecho con htmlentities y me funciono!! con que tonteria se lleva uno media tardeeeee!!

gracias a todos!!

Etiquetas: determinado, listar, numero
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 16:03.