Tutorial: Cómo mostrar el tiempo transcurrido desde la publicación de una entrada

spitfire Seguir

Épsilon
Verificación en dos pasos activada
Desde
20 Feb 2013
Mensajes
943
Buenas, queria colaborar con un tutorial y no se me ocurrio algo mas que esto...

... estoy armando una especie de web de anuncios y queria que al ver cada anuncio se mostrara cuanto hacia que se habia creado cada anuncio, tipo twitter que dice 1 minuto, 2 horas, 10 de enero, etc... entonces arme algo que no sera super profesional pero funciona...

DEMO: Calcular antiguedad

Aclaro que sirve para implementarlo en un script propio y no en un wordpress o algo asi...


Conocimientos requeridos: Basicos de programacion en PHP y uso de base de datos


para ello vamos a usar una base de datos como en casi todos o todos los sitios de anuncios y el lenguaje PHP

en la base de datos, en la misma tabla donde se guardan los anuncios vamos a agregar otros campos para guardar los datos necesarios para mostrar lo que queremos...

Campos a agregar: d, m, a, h, i, s, creacion en los cuales se guardaran el dia, mes, año, hora, minuto, segundo y el valor del timestamp respectivamente

por ejemplo

si hoy es 14 de julio de 2014 y son las 2:34:25 de la madrugada...

d:14
m:7
a:2014
h:2
i:34
s:25
creacion: 1405305265 (valor del timestamp para la fecha indicada)

Que es timestamp?

El valor del timestamp o sello de tiempo es la cantidad de segundos que han pasado desde la 0 del dia 1 de enero de 1970 y ese valor puede ser usado para hacer varias cosas, por ejemplo lo que quiero hacer yo...

por ejemplo el valor de ahora es 1405316353 porque va cambiando a cada segundo, pueden ver mas informacion sobre eso aca: Unix Time Stamp . com

------------------------

Bien, entonces primer paso crear en la tabla de los anuncios los campos antes mencionados

campo d, int 2
campo m, int, 2
campo a, int, 4
campo h, int, 2
campo i, int, 2
campo s, int, 2
campo creacion, int, 10

A continuacion tenemos que hacer que al grabar el anuncio se graben tambien estos datos, y para ello vamos a averiguar cuales son esos datos al momento justo de grabar el anuncio, para ello usaremos este pequeño codigo que nos dara toda la informacion necesaria...

PHP:
$d=date(j);
$m=date(n);
$a=date(Y);
$h=date(H);
$i=date(i);
$s=date(s);
$creacion=time();

esta informacion tambien sera util al mostrar la informacion en el anuncio, por lo que yo la inclui en el archivo configuracion.php para que este siempre disponible

---------------------------

modifica tu insert para grabar esos datos en la base de datos

---------------------------

bien, ahora que probaron que al crear el anuncio se guardan correctamente todos los datos, vamos a crear un archivo que luego incluiremos en el lugar justo al mostrar cada anuncio

llamaremos al archivo: calcular.php

PHP:
<?php 
////////
$creacion3=$creacion-$creacion2;
//////////////////
if($creacion3<61){
echo"$creacion3 segundos";
}else{
if($creacion3<3601){
$creacion3=$creacion3/60;
$creacion3=str_replace(".","-",$creacion3);
/////
$creacion3=explode("-",$creacion3);
for($i=0; $i < count($creacion3); $i++){
if($i==0){
echo"$creacion3[0] minutos";
}}
//////////
}else{
//>>>------------>
if($creacion3<86401){
$creacion3=$creacion3/3600;
$creacion3=str_replace(".","-",$creacion3);
/////
$creacion3=explode("-",$creacion3);
for($i=0; $i < count($creacion3); $i++){
if($i==0){
echo"$creacion3[0] horas ";
}}
//>>>------------>
}else{
////////
if($m2==1){$nm="Enero";}
if($m2==2){$nm="Febrero";}
if($m2==3){$nm="Marzo";}
if($m2==4){$nm="Abril";}
if($m2==5){$nm="Mayo";}
if($m2==6){$nm="Junio";}
if($m2==7){$nm="Julio";}
if($m2==8){$nm="Agosto";}
if($m2==9){$nm="Septiembre";}
if($m2==10){$nm="Octubre";}
if($m2==11){$nm="Noviembre";}
if($m2==12){$nm="Diciembre";}
////////
echo" $d2 de $nm ";
if($a2==$a){echo"";}else{echo"de $a2";}
}
}
}
 ?>

-----------------------

Bueno, ahora que ya tenemos el archivo calcular.php creado, tenemos que agregarlo en el while que muestra cada anuncio y justo en la parte donde queres que se lea el tiempo trancurrido desde la publicacion del anuncio

ejemplo:

le agregue un nombre de usuario y un texto...


$sentencia="select * from anuncios order by id desc";
$resultados=mysl_fetch_object($sentencia);
while($ver=mysql_fetch_object($resultados)){
//$nombre=$ver->nombre;
$texto=$ver-<texto;
//
$d2=$ver->d;
$m2=$ver->m;
$a2=$ver->a;
$h2=$ver->h;
$i2=$ver->i;
$s2=$ver->s;
$creacion2=$ver->creacion;
//
echo"<div id=recuadro>";
echo"Por: $nombre (";
include(calcular.php);
echo")<br/>";
echo"$texto";
echo"</div>";
}

entonces donde incluimos el archivo calcular.php este va a hacer el calculo cotejando los datos guardados en la base de datos con los actuales que da el archivo configuraciones.php

Bueno, eso es todo, espero que les sea util, no es gran cosa pero puede servir para algo, gracias

------
A continuacion les dejo la DEMO y los archivos para copiar y pegar


Lo subi a una cuenta gratuita de 000webhost asi que talvez les salga una pantalla del hosting

Calcular antiguedad


Advertencia: Los archivos usados en la DEMO pueden diferir de los ejemplos dados mas arriba, pero son iguales a los que mostrare a continuacion

Archvo index.php

<?php
$dbhost="localhost";
$dbdatabase = "basededatos";
$dbuser = "usuario";
$dbpassword = "contraseña";
//
$db = mysql_connect($dbhost, $dbuser, $dbpassword);
mysql_select_db($dbdatabase, $db);
///
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Calcular antiguedad</title>
<link rel="stylesheet" href="antiguedad.css" type="text/css" />
</head>
<body>
<?php
//
$d=date(j);
$m=date(n);
$a=date(Y);
$h=date(H);
$i=date(i);
$s=date(s);
$creacion=time();
//
//////////////////////////////////////////
if(isset($_POST['enviar'])){
$nombre=$_POST['nombre'];
$nombre=ereg_replace('[^ 0-9A-Za-z_-ñÑ]', '', $nombre);
$texto=$_POST['texto'];
$texto=ereg_replace('[^ 0-9A-Za-z_-ñÑ]', '', $texto);
//
if($nombre&&$texto){
$ocultar=1;
echo"<div align=center>Gracias <b>$nombre</b>, el siguiente mensaje ha sido agregado:<br/><br/>";
echo"<i>$texto</i><br/><br/></div>";
$registro = "INSERT INTO antiguedad(nombre, texto, d, m, a, h, i, s, creacion) VALUES(
'" . $nombre."', '" . $texto."','".$d."','".$m."','".$a."','".$h."','".$i."','".$s."','".$creacion."')";
$resultado = mysql_query($registro);
}
else{echo"Ingresa tu nombre y el mensaje, gracias...<br/><br/>";}
}
/////////////////////////////////////////
if($ocultar==1){echo"<div align=center><a href='index.php' title='Escribe otro mensaje'>Escribe otro mensaje</a></div><br/><br/>";}else{
?>
<h1>Publica un nuevo mensaje de prueba</h1>
<form action="index.php" method="post">
<div align="center">
<input type="text" name="nombre" placeholder="Tu nombre" value="<?php echo"".$nombre.""; ?>"><br/><br/>
<textarea name="texto" placeholder="Escribi aca tu mensaje..." rows="3" cols="60"><?php echo"".$texto.""; ?></textarea><br/>
<div align="center"><input type="submit" name="enviar" value="Publicar" title="Publica un nuevo mensaje"></div>
</div>
</form>
<?php
}
echo"<h2>Ultimos mensajes publicados</h2>";
$sent="select nombre, texto, d, m, a, h, i, s, creacion from antiguedad order by id desc";
$result=mysql_query($sent);
while($ver=mysql_fetch_object($result)){
$mensaje=$ver->texto;
$nombre=$ver->nombre;
//
$d2=$ver->d;
$m2=$ver->m;
$a2=$ver->a;
$h2=$ver->h;
$i2=$ver->i;
$s2=$ver->s;
$creacion2=$ver->creacion;
//
echo"<div id=recuadro>";
echo"Por: $nombre ( ";
//
include("calcular.php");
//
echo" )<br/>";
echo"$mensaje";
echo"</div>";
}
exit;
?>

</body>
</html>

Archivo antiguedad.css

#recuadro {width:90%;height:auto;border:#dddddd 2px solid;padding:5px 15px;margin-top:5px;
border-radius: 10px; -moz-border-radius: 10px;
}

Archivo calcular.php

<?php
////////
$creacion3=$creacion-$creacion2;
//////////////////
if($creacion3<61){//echo"";
if($creacion3==0){echo"Hace instantes";}else{
echo"$creacion3 segundos atras";
}
//
}else{
if($creacion3<3601){
$creacion3=$creacion3/60;
$creacion3=str_replace(".","-",$creacion3);
/////
$creacion3=explode("-",$creacion3);
for($i=0; $i < count($creacion3); $i++){
if($i==0){
echo"$creacion3[0] minutos atras";
}}
//////////
}else{
//>>>------------>
if($creacion3<86401){
$creacion3=$creacion3/3600;
$creacion3=str_replace(".","-",$creacion3);
/////
$creacion3=explode("-",$creacion3);
for($i=0; $i < count($creacion3); $i++){
if($i==0){
echo"$creacion3[0] horas atras";
}}
//>>>------------>
}else{
////////
if($m2==1){$nm="Enero";}
if($m2==2){$nm="Febrero";}
if($m2==3){$nm="Marzo";}
if($m2==4){$nm="Abril";}
if($m2==5){$nm="Mayo";}
if($m2==6){$nm="Junio";}
if($m2==7){$nm="Julio";}
if($m2==8){$nm="Agosto";}
if($m2==9){$nm="Septiembre";}
if($m2==10){$nm="Octubre";}
if($m2==11){$nm="Noviembre";}
if($m2==12){$nm="Diciembre";}
////////
echo" el $d2 de $nm ";
if($a2==$a){echo"";}else{echo"de $a2";}
}
}
}
?>

Bueno, creo que eso es todo, seguramente encuentren cosas que les den risa o tengan un metodo mejor para hacer esto, acepto consejos para seguir aprendiendo, gracias, SPITFIRE...
 
Última edición:

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba