conteggio data come su facebook php/mysql

Felice Gattuso

Utente Attivo
19 Ago 2012
41
0
0
ragazzi altro quesito...
su una tabella mysql carico post_id, post, data e user_id
ora... la data carico sul database semplicemente con $data= time(); quindi mi caricherà tipo questo 1346662931.

a.png

devo fare in modo che si carichi la data e cche si aggiorni da sola stile facebook... tipo scritto 3 ore fa, 5 giorni fa.

come faccio ?

questo è il codice che utilizzo per richiamare tutto

PHP:
<?php

$sql = mysql_query("SELECT * FROM `post` ") or die( mysql_error()); 


$sqlquery = "SELECT id FROM utenti WHERE username='".$_SESSION['utente']."'"; 
$result = mysql_query($sqlquery);		
$user_id = mysql_result($result,0,"id"); 




if (mysql_num_rows($sql) == 0) {
	
	echo "EMPTY";
	
	}
else {
	
	$sql = mysql_query("SELECT * FROM post WHERE user_id='$user_id' ORDER BY data DESC") or die( mysql_error());
	
	
	
		
	while ($row= mysql_fetch_assoc($sql)){
		
		
		
		echo "<div class='post'><div class='remover'><a href='index.php?id=".$row['post_id']."'><img class='post-rem' src='image/rem_post_x.png' width='12' height='11' /></a></div><p>".$row['post']."</p><div class='date'>".$row['data']."</div></div>";
		
	
	} 
	
	
	
	}
	
		 
?>
 

Ciao, illuminami :quote:
tu scrivi in questa tabella un post ed ogni volta ad un nuovo post una nuova data, per estrarre la data fai
PHP:
$data=date("d/m/Y", $result['data_post']);
echo $data;
per quanto riguarda il fatto di scrivere 5 giorni, 3 giorni lascio chi ne sa di piu
Ciao
 
ciao
prova una di queste due funzioni
PHP:
<?php
function passati($t){//$t sarà il tempo in timestamp dal database
	$ora=time();
	$secondi_passati=abs($t-$ora);
	if($secondi_passati <60){
		return "scritto $secondi_passati secondi fa'<br>";
	}elseif($secondi_passati >=60 && $secondi_passati <(60*60)){
		$minuti=(int)($secondi_passati/60);
		return "scritto $minuti minuti fa'<br>";
	}elseif($secondi_passati >=(60*60) && $secondi_passati <(24*60*60)){
		$ore =(int)($secondi_passati/(60*60));
		return "scritto $ore ore fa'<br>";
	}elseif($secondi_passati >=(24*60*60) && $secondi_passati <(7*24*60*60)){
		$giorni=(int)($secondi_passati/(24*60*60));
		return "scritto $giorni giorni fa'<br>";
	}else{
		return "scritto più di una settimana fa'<br>";
	}
}

function tempo_passato($t){//$t sarà il tempo in timestamp dal database
	$ora=time();
	$secondi_passati=abs($t-$ora);
	$giorni = (int)($secondi_passati/(24*60*60));
	$rimangono=$secondi_passati-$giorni*(24*60*60);//secondi
	$ore=(int)($rimangono/(60*60));
	$rimangono=$rimangono-$ore*(60*60);//secondi
	$minuti=(int)($rimangono/(60));
	$secondi=$rimangono-$minuti*60;
	$gg="";
	$hh="";
	$mm="";
	if($giorni > 0){$gg="$giorni giorni"; }
	if($ore > 0){$hh="$ore ore"; }
	if($minuti > 0){$mm="$minuti minuti"; }
	return "scritto $gg $hh $mm $secondi secondi fa'<br>";
}

//test
$togli=rand(1,864000);
$scritto=time()-$togli;//simulo tempi diversi
echo passati($scritto);
echo tempo_passato($scritto);
?>
 
super grazie però sono veramente alle prime armi quindi dovresti spiegarmi anche come faccio a caricare la data che io ho sul database... io al momento del post la carico sul db cosi... $data=time(); e ho una colonna di nome data !
 
ciao
intanto secondo me fai bene a caricare la data in timestamp.
poi non so dove ti serve utilizzarele la function, comunque vedo che nel tuo script la estrai $row['data']
quindi, dove ti serve (o una o l'altra)

PHP:
echo passati($row['data']);

oppure

PHP:
echo tempo_passato($row['data'])
 
ciao
l'hai detto tu
la data carico sul database semplicemente con $data= time(); quindi mi caricherà tipo questo 1346662931.
la data espressa in quella maniera si chiama timespamp (da unix) o data epocale. i pratica sono i secondi trascorsi dal 1 gennaio 1970 ore 00, ad adesso
 

Discussioni simili