Foros del Web » Programando para Internet » PHP »

marcar articulos nuevos

Estas en el tema de marcar articulos nuevos en el foro de PHP en Foros del Web. Bueno he podido crear un sistema de articulos a base de datos pero mi problema es esta, como puedo distinguir un articulo nuevo con las ...
  #1 (permalink)  
Antiguo 11/11/2005, 12:10
 
Fecha de Ingreso: octubre-2004
Ubicación: Lima, Perú
Mensajes: 185
Antigüedad: 13 años, 1 mes
Puntos: 1
marcar articulos nuevos

Bueno he podido crear un sistema de articulos a base de datos pero mi problema es esta, como puedo distinguir un articulo nuevo con las demas anteriores, ya sea con negrita o con una imagen que diga news este es el codigo que uso
Código PHP:
if([email protected]_connect("localhost","user","password")) {
 exit('Error: no se pudo conectar a MySQL.');
 } else {
  if([email protected]_select_db('user')) {
  exit('Error: no se pudo seleccionar la base de datos.');
  }
 }

$query = mysql_query("SELECT titulo,contador,id FROM animes ORDER BY titulo,contador");
while($row = mysql_fetch_assoc($query)) {
?>
&raquo; <a href="index.php?page=reviews&id=<?=$row['id']?>" ><?=$row['titulo']?></a> -- <?= $row["contador"]?> <? 
}
mysql_close(); // opcional
?>
  #2 (permalink)  
Antiguo 11/11/2005, 13:44
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Se me ocurren varias, pero una simple sería ponerle un campo "visitas" (por ejemplo), que se autoincremente cada vez que entran a leerla.
En el listado pone un valor que distinga al nuevo (digamos, menos de 100 visitas), y si es así, lo muestras arriba (select ... order by visita, otrocampo), marcándolo con negrita si esta condiciones así.

Otra que se suele usar es lo mismo pero con un campo de fecha, sea date o timestamp.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 11/11/2005, 14:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Yo simplemente guardaría una fecha .. la fecha de ingreso de esa noticia y en función de esa fecha ahí decido que es lo que para mi o mi caso consideraré como "nuevo" .. por ejemplo "X días desde que se publicó ..."

Si usas con campo fecha tipo DATETIME para tal fin y en tu consulta SQL usas NOW() (para que te entregue la fecha/hora actual) lo tendrías resuelto fácilmente .. Luego se trataría de hacer la comparación de fechas (hoy vs la que guardas en cada registro) para saber si corresponde aplicar tal efecto al dato que presenteas para informar que es "nuevo".

Un saludo,
  #4 (permalink)  
Antiguo 11/11/2005, 19:43
 
Fecha de Ingreso: octubre-2004
Ubicación: Lima, Perú
Mensajes: 185
Antigüedad: 13 años, 1 mes
Puntos: 1
Creo que seria marcar solamente los ultimos articulos que se han subido sin tener que agregar fecha y vistas ya esta puesta, por el contador, mi problema es como puedo solamente marcar los ultimos articulos ( que codigos seria los indicados para usar)
  #5 (permalink)  
Antiguo 12/11/2005, 01:23
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 15 años
Puntos: 2
podrias usar una especia de contador

Código PHP:
if([email protected]mysql_connect("localhost","user","password")) { 
exit(
'Error: no se pudo conectar a MySQL.'); 
} else { 
  if([email protected]
mysql_select_db('user')) { 
  exit(
'Error: no se pudo seleccionar la base de datos.'); 
  } 


$query mysql_query("SELECT titulo,contador,id FROM animes ORDER BY titulo,contador"); 
$i=0$m=10;
while(
$row mysql_fetch_assoc($query)) { 
if (
$i $m) { 
$b "<b>"$bc "</b>";
} else {
$b ''$bc '';
}
echo 
"&raquo; <a href=\"index.php?page=reviews&id=$row['id']\" >$b$row['titulo']$bc</a> -- $row['contador']"
$i++;

mysql_close(); // opcional 
?> 
ese code los primeros 10 articulos los deja en negritas..
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #6 (permalink)  
Antiguo 12/11/2005, 04:49
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
Bueno... como ya te dijeron, para poder empezar a hacer algo con tu problema, primero debrás definir "nuevo".

Para Cluster "nuevo" significa que tiene poco tiempo de publicado.
Para nicolaspar "nuevo" significa que aún no ha sido leida suficientes veces.
Para Quest "nuevo" significa que está dentro de los 10 últimos publicados.

¿Para tí qué significa "nuevo"?

Saludos
  #7 (permalink)  
Antiguo 12/11/2005, 07:31
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
crea un nuevo campo en la base de datos llamado fecha (podria se solo el numero del dia del año 0 a 365 o numero de la semana del año 1 a 52), asi guardarias la fecha de cada uno de tus News al ser subido a la base de datos,

y condicionas para que los nesw de la fecha actuar date(); para que hagas referencia sobre ellos,
Código PHP:
//News Nuevos de la semana
date(W);
//News Nuevos del dia
date(z); 
http://php.net/date
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #8 (permalink)  
Antiguo 14/11/2005, 18:56
 
Fecha de Ingreso: octubre-2004
Ubicación: Lima, Perú
Mensajes: 185
Antigüedad: 13 años, 1 mes
Puntos: 1
Cita:
Iniciado por jpinedo
Bueno... como ya te dijeron, para poder empezar a hacer algo con tu problema, primero debrás definir "nuevo".

Para Cluster "nuevo" significa que tiene poco tiempo de publicado.
Para nicolaspar "nuevo" significa que aún no ha sido leida suficientes veces.
Para Quest "nuevo" significa que está dentro de los 10 últimos publicados.

¿Para tí qué significa "nuevo"?

Saludos
cierto no me especifique bien , tonces nuevo para mi vienes serlos ultimos articulos publicados, lo que dice Quest
  #9 (permalink)  
Antiguo 15/11/2005, 06:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por Vhyll
cierto no me especifique bien , tonces nuevo para mi vienes serlos ultimos articulos publicados, lo que dice Quest
En ese caso .. "cuantos" son esos "últimos artículos publicados"? .. dí un numero y así podrás componer una sentencia SQL tipo:

"Los últimos 5 registros añadidos a tu tabla":
SELECT * FROM tabla ORDER BY id DESC LIMIT 5

Se toman tus registros .. se ordenan por el campo "ID" (supuestamente debes usar uno de ese tipo autoincremental y numérico + único) .. el orden se hace descendente (primero el último) y se limita a los N registros que quieras mostrar.

Con eso podrás mostrar un listado con los N últimos registros añadidos .. Pero NO marcar ese mensaje como "nuevo" (según mi criterio por fechas).

Un saludo,
  #10 (permalink)  
Antiguo 15/11/2005, 08:21
Avatar de Quest  
Fecha de Ingreso: diciembre-2002
Ubicación: Santiago
Mensajes: 129
Antigüedad: 15 años
Puntos: 2
Cluster por lo que se ve, el tipo quiere mostrar una lista, y en esa lista marcar los ultimos, no solamente mostrar los ultimos.
__________________
http://victorsanmartin.com
Web Developer
http://www.guiasitios.cl
  #11 (permalink)  
Antiguo 15/11/2005, 09:01
 
Fecha de Ingreso: noviembre-2005
Mensajes: 19
Antigüedad: 12 años
Puntos: 0
Entonces que con el campo de la fecha considere un tiempo maximo que tiene que tener el articulo para ser considerado nuevo ó si es un numero fijo que los ordene descendentemente los registros por el campo fecha limitando al numero de registros deseados.

Por ejemplo si quieres que los nuevos tengan menos de una semana y considerando (como uso yo las fechas) que los tienes en tiempo unix (segundos desde el dia 01-01-1970 00:00)

Código PHP:
//((Segundos * Minutos) * horas ) * dias;
$limiteTiempo = ((60 60 )* 24 ) * 7;
$query mysql_query('select titulo,id from animes where fecha > '.(time()-$limiteTiempo)); 
Si lo queremos los 10 ultimos por ejemplo.

Código PHP:
$limiteCantidad 10;
$query mysql_query('select titulo,id from animes order by fecha DESC limit '.$limiteCantidad); 
  #12 (permalink)  
Antiguo 15/11/2005, 12:39
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 14 años, 2 meses
Puntos: 41
aGainst:
¿Te has tomado la molestia de leer todo el tema?
Lo que propones ya se ha dicho antes y lo que quiere Vhyll es diferente.

Cita:
Iniciado por Vhyll
cierto no me especifique bien , tonces nuevo para mi vienes serlos ultimos articulos publicados, lo que dice Quest
Pues entonces, ya tienes tu respuesta. El código de Quest.

Saludos
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 14:53.