Foros del Web » Programando para Internet » PHP »

Noticia automática cada X noticias publicadas

Estas en el tema de Noticia automática cada X noticias publicadas en el foro de PHP en Foros del Web. Hola, muy buenos días. Mi duda es a siguiente, ¿cómo puedo hacer para que cada X noticias, me salga una de forma automática? Tengo una ...
  #1 (permalink)  
Antiguo 08/09/2012, 02:58
Avatar de JSGarcia91  
Fecha de Ingreso: marzo-2012
Ubicación: Alicante
Mensajes: 24
Antigüedad: 12 años, 1 mes
Puntos: 0
Exclamación Noticia automática cada X noticias publicadas

Hola, muy buenos días.
Mi duda es a siguiente, ¿cómo puedo hacer para que cada X noticias, me salga una de forma automática?

Tengo una tabla en una base de datos que almacena las noticias, después con un bucle recorro toda la tabla y voy mostrando las noticias, me gustaría saber cómo hacer para que cuando, por ejemplo se muestren 5 noticias sacadas de la base de datos, aparezca otra que no tiene nada que ver y luego sigan apareciendo las noticias almacenadas en la base de datos, pero no desde le principio, si no desde dónde se quedó la última vez antes de mostrar la noticia automática.

Creo que me he explicado bien, aquí os dejo el código que tengo para mostrar las noticias:

Cita:
<?php

$query = mysql_query("SELECT * FROM noticias ORDER BY idnot DESC", $conexion);

while ($datos = mysql_fetch_assoc($query)){

$autor = mysql_query("SELECT nomb FROM usuarios WHERE (idusu = $datos[autor])", $conexion);

while ($nombre = mysql_fetch_assoc($autor)) {

print "

<div id=\"noticias\">
<div id=\"not_titulo\">
<p>" .$datos["titu"]."</p>
</div> <!-- Cierre de \"not_titulo\" -->

<img src=\"img/estilo/sep_titulo.png\" alt=\"sep_titulo\"/>

<div id=\"not_noticia\">
<p><center>
".$datos["cont"]."
</p></center>
</div> <!-- Cierre de \"not_noticia\" -->

<div id=\"not_pie\">
<div id=\"pie1\">
<p></p>
</div> <!-- Cierre de \"pie1\" -->

<div id=\"pie2\">
<p>Publicado por: " .$nombre["nomb"]. "</p>
</div> <!-- Cierre de \"pie2\" -->
</div> <!-- Cierre de \"not_pie\" -->
</div> <!-- Cierre de \"noticias\" -->";

}
}
?>
Un saludo y muchas gracias a todos.
  #2 (permalink)  
Antiguo 08/09/2012, 03:33
Avatar de kreil  
Fecha de Ingreso: septiembre-2012
Ubicación: España
Mensajes: 63
Antigüedad: 11 años, 7 meses
Puntos: 16
Respuesta: Noticia automática cada X noticias publicadas

Antes de entrar en el bucle declara una variable $i=0;
Esa variable será tu control de cuántas noticias llevas mostradas.
Mete la noticia que no tiene nada que ver dentro de un if ($i==5){...} y en ese mismo if pon otra vez la variable $i=0;
Luego un else {...} dentro del cual escribas el print que ya tienes hecho para que muestre tus noticias de la base de datos.

Por último, justo antes de salir del bucle while(...){...} aumenta la variable $i con: $i++;

Un saludo.
__________________
Diseñador y programador de El break; de la informática
  #3 (permalink)  
Antiguo 08/09/2012, 03:35
Avatar de JSGarcia91  
Fecha de Ingreso: marzo-2012
Ubicación: Alicante
Mensajes: 24
Antigüedad: 12 años, 1 mes
Puntos: 0
Exclamación Respuesta: Noticia automática cada X noticias publicadas

Cita:
Iniciado por kreil Ver Mensaje
Antes de entrar en el bucle declara una variable $i=0;
Esa variable será tu control de cuántas noticias llevas mostradas.
Mete la noticia que no tiene nada que ver dentro de un if ($i==5){...} y en ese mismo if pon otra vez la variable $i=0;
Luego un else {...} dentro del cual escribas el print que ya tienes hecho para que muestre tus noticias de la base de datos.

Por último, justo antes de salir del bucle while(...){...} aumenta la variable $i con: $i++;

Un saludo.
Muchísimas gracias sabía la idea pero no sabía aplicarla, no me digas porque eso mismo que me has dicho intente hacerlo con un while en lugar de con un if :S Es decir meter el contador dentro de un while, pero no se porque lo hice así xD

Muchas gracias por todo genio ^^
  #4 (permalink)  
Antiguo 08/09/2012, 03:48
Avatar de JSGarcia91  
Fecha de Ingreso: marzo-2012
Ubicación: Alicante
Mensajes: 24
Antigüedad: 12 años, 1 mes
Puntos: 0
Exclamación Respuesta: Noticia automática cada X noticias publicadas

Este hilo ya se puede cerrar, tema resuelto. Aquí os dejo el código por si a alguien le sirve.

Cita:
<?php

$i = 0; //Declaramos el valor inicial del contador de noticias automáticas

$query = mysql_query("SELECT * FROM noticias ORDER BY idnot DESC", $conexion); //Consultamos todas las noticias

while ($datos = mysql_fetch_assoc($query)){ //Recorremos la consulta $query y mostramos las noticias

if ($i == 5){ //Cada 5 noticias aparecerá una otica automática

print "NOTICIA AUTOMATICA"


}

print "NOTICIA SACADA DE LA BASE DE DATOS ($query)";

$i++; //Aumentamos el contador de noticias automáticas


}
}
?>
¡AQUI SALDRÍA LA NOTICIA ÚNICAMENTE UNA VEZ CUANDO PASAN LAS PRIMERAS 5 NOTICIAS!
  #5 (permalink)  
Antiguo 08/12/2013, 12:06
Avatar de kreil  
Fecha de Ingreso: septiembre-2012
Ubicación: España
Mensajes: 63
Antigüedad: 11 años, 7 meses
Puntos: 16
Respuesta: Noticia automática cada X noticias publicadas

Sólo te falta volver a poner a 0 la variable $i cuando ya has mostrado la noticia!

Código PHP:
if ($i == 5){ //Cada 5 noticias aparecerá una otica automática

print "NOTICIA AUTOMATICA"
$i=0//sin esta parte, tu varible la siguiente vez sería 6, y nunca más entraría aquí.


__________________
Diseñador y programador de El break; de la informática
  #6 (permalink)  
Antiguo 08/12/2013, 13:37
Avatar de Dalam  
Fecha de Ingreso: septiembre-2010
Mensajes: 409
Antigüedad: 13 años, 7 meses
Puntos: 56
Respuesta: Noticia automática cada X noticias publicadas

Lo mejor es que compruebes si es un integro al dividirlo entre 5 o dicho de otro modo, si es multiplo de 5, y asi sabes si debes introducir la noticia de la db o la noticia automatica, de esta forma
Código PHP:
Ver original
  1. <?php
  2.  
  3. $i = 0; //Declaramos el valor inicial del contador de noticias automáticas
  4.  
  5. $query = mysql_query("SELECT * FROM noticias ORDER BY idnot DESC", $conexion); //Consultamos todas las noticias
  6.  
  7. while ($datos = mysql_fetch_assoc($query)){ //Recorremos la consulta $query y mostramos las noticias
  8.  
  9. if (is_int($i/5) && $i != 0){ //Cada 5 noticias aparecerá una otica automática
  10.  
  11. print "NOTICIA AUTOMATICA"
  12.  
  13.  
  14. }
  15.  
  16. print "NOTICIA SACADA DE LA BASE DE DATOS ($query)";
  17.  
  18. $i++; //Aumentamos el contador de noticias automáticas
  19.  
  20.  
  21. }
  22. }
  23. ?>
De esta forma compruebas que el valor de $i sea mayor que 0, para que no inserte la noticia automatica la primera.
Y cuando el valor de $i es distinto a un multiplo de 5 el resultado sera un float "numero decimal" con lo que no inserta la notia automatica.
Te aconsejo que en la consulta a MySQL utilices el parametro LIMIT para que cuando llegue al numero de resultados que vas a mostrar termine la consulta y asi optimizar la query a MySQL

Última edición por Dalam; 09/12/2013 a las 13:25

Etiquetas: noticia, automatico
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 12:12.