Forum cookie problema php

ciao
io prendo una data dal db e devo fare la differenza tra la data di oggi e la data salvata nel db....
quale è il formato delle due date? spero che utilizzi il timestamp perchè per fare la differenza tra due date è quello che si presta meglio.

la funzione stampa i gg le ore i min es i sec di differenza.
cosa vuoi dire con
tipo 06 dicembre alle ore 12.22
?

che se sono passate pià di 24 ore deve scrivere la data del db?
 
la data la salvo cosi...
PHP:
1260686369
che se sono passate pià di 24 ore deve scrivere la data del db?
si
 
ciao
la data la salvo cosi...
Codice PHP:
1260686369
allora per fortuna è in timestamp.
però scusa non ho capito una cosa
tu hai nel db una data (corrisponde alla data di inserimento del post?),chiamiamola $data_post, e vorresti che in funzione della data in cui vado a vedere il post (chiamamola $data_oggi):
se vado a vedere entro le 24 ore venga stampato ($data_oggi - $data_post)
scritto 17h 35' fa'
e se superi le 24 ore (es.)
scritto il 22 dic 2009 alle ore 17:22
?
oppure che la $data_oggi vada a sostituire $data_post superate le 24 ore?
 
devo fare la differenza tra la data di oggi meno quella inserita nel db...

se il risultato e entro 60 minuti stampa i minuti
35 minuti fa
se il risultato supera i 60 minuti e non supera le 24 ore stampa i ore
tipo
2 ora fa
se il risultato supera le 24 ora stampa tipo
06 dicembre alle ore 12.22

pero queste cose minuti ore ecc...
e il risultato della differenza tra le date^^
 
no scusa stavo sbagliando volevo dire che superando le 24 ore stampa la data....
 
ti spiego meglio cosa devo fare...
io ho una data nel db....

allora
se siamo entro i sessanta secondi dal inserimento della data (ciò la differenza tra la data attuale e quella del db)
deve scrivere
"numero sec fà"
se supera i sessanta secondi e non supera i sessanta minuti dal inserimento della data (ciò la differenza tra la data attuale e quella del db)
deve scrivere
"numero minut fà"
se supera i sessata minuti e non supera le 24 ore dal inserimento della data (ciò la differenza tra la data attuale e quella del db)
deve scrivere
"numero ore fà"
se il risultato della differenza tra la data attuale e quella del db supera le 24 ore stampa la data normale
06 dicembre alle ore 12.22
 
ciao
avevo capito tutto, ma non mi hai ancora detto quale data "normale". è quella che hai nel db o qualle attuale.
spiego:
la differenza è $data_attuale - $data_da_db e se ecc...., quello che non mi hai ancora detto quale data vuoi che stampi "normale"?

comunque nel prossimo post ti invio un codice, poi se vuoi l'una o l'altra sostituisci il valore dove ti indico
 
ciao
ecco lo script

PHP:
<?php
//$data_da_db intero da date tipo timestamp, quindi $dat_da_db espresso in secondi
function diff_data($data_da_db){
	$adesso=time();//legge la data nel momento di apertura del post
	$differenza=$adesso-$data_da_db;//in secondi
	//trasformo in ore arrotondando
	$giorni=floor($differenza/(24*60*60));//giorni possono essere >=1
	if($giorni >= 1){//sono passate più di 24 ore
		$mese=array('Gennaio','Febbraio','Marzo','Aprile','Maggio','Giugno','Luglio','Agosto','Settembre','Ottobre','Novembre','Dicembre');
		//se vuoi la data che proviene dal db usa le due righe qui sotto
		$mese_int=date(n,$data_da_db)-1;//serve per l'array dei mesi in italiano
		return "scritto il ".date("d", $data_da_db)." ".$mese[$mese_int]." ".date("Y", $data_da_db)." alle ore ".date("H:i", $data_da_db);
		//altrimenti o le commenti o cancelli e decommenti le seguenti
		//$mese_int=date(n,$adesso)-1;
		//return "scritto il ".date("d", $adesso)." ".$mese[$mese_int]." ".date("Y", $adesso)." alle ore ".date("H:i", $adesso);
	}else{//le ore sono meno di 24
		$ore=floor($differenza/(60*60));
		if($ore >= 1){//le ore sono piu di una ma meno di 24
			$testo=" ore fa'";
			if($ore ==1){$testo=" ora fa'";}
			return "scritto ".$ore.$testo;//stampa ore fa'
		}else{//le ore sono meno di 1
			$minuti=floor($differenza/60);
			if ($minuti >= 1){//i minuti sono piu di uno
				$testo=" minuti fa'";
				if($minuti==1){$testo=" minuto fa'";}
				return "scritto ".$minuti.$testo;//stampa minuti fa'
			}else{//sono meno di un minuto
				$testo=" secondi fa'";
				$secondi=round($differenza);//anche se non servirebbe
				if($secondi==1){$testo=" secondo fa'";}
				return "scritto ".$secondi.$testo;//stampa secondi fa'
			}//fine if minuti
		}//fine if ore
	}//fine if giorni
}//fine function

/*
prova di funzionamento
da sostituire con quello che serve, estrazione della data dal db
*/
//
$oggi=time();//solo per valutare il tempo per prove
// scritto 5 gg 4 ore 37 min e 5 secondi fa'
$scritto=$oggi-5*(24*60*60)-4*(60*60)-37*60-5;//riga GIORNI
// scritto 4 ore 37 min e 5 secondi fa'
//$scritto=$oggi-4*(60*60)-37*60-5;//riga ORE
// scritto 37 min e 5 secondi fa'
//$scritto=$oggi-37*60-5;//riga MINUTI
// scritto  5 secondi fa'
//$scritto=$oggi-5;//riga SECONDI
echo "oggi è il ". date("d F Y H:i:s", $oggi)."<br>";
echo "il post era stato scritto il ". date("d F Y H:i:s", $scritto)."<br>";
/*
FUNZIONE PER SCRIVERE IL TEMPO PASSATO
se dif < 60 sec stampa (es.): scritto 5" fa'
se dif > 1 e < 60 min: scritto 25' fa'
se dif > 1 e < 24 ore: scritto 1 ora fa'
se diff > 24 ore stampa la data nel formato: scritto il gg mese anno alle ore H:MIN
*/
echo "<br>".diff_data($scritto)."<br>";
?>

spero che soddisfi le tue esigenze (e alessandro:D)
credo che i commenti che ho messo sia sufficienti a capire il funzionamento
 
da errore...
qua
function diff_data($data_da_db){
Fatal error: Cannot redeclare diff_data() (previously declared in


e qua
$mese_int=date(n,$data_da_db)-1;//serve per l'array dei mesi in italiano
Fatal error: Cannot redeclare diff_data() (previously declared in
 
Tu e l'Inglese non siete molto compatibili, vero? Imparare ad interpretare gli errori di PHP è la prima cosa che bisognerebbe fare quando si inizia a programmare. Comunque lì c'è scritto che non puoi dichiarare due volte una funzione, quindi i casi sono due:
Hai già una funzione diff_data() precedente.
Includi due volte il file che contiene la funzione diff_data().
Scegline una, gira la ruota oppure compra una vocale! :D
 
ciao
Tu e l'Inglese non .......
Hai già una funzione diff_data() precedente.
......
penso che sia questo, precedentemente avevo postato un'altra funzione mi sembra con lo stesso nome
o cme dice alex modifichi il nome ad una (es. dif_dat()) o quella che non ti serve la elimini.
 

Discussioni simili