Kodları lütfen aşağıdaki butonları kullanarak renklendirin. Örnek: <php> echo "Selam Dünya"; </php>
Yardım
karakter kaldı

x'gün önce kaydedildi

merhaba arkadaşlar sitede yorumları çekerken x'sn önce x'dakika önce x'saat önce x'gün önce x'ay önce x'yıl önce tarzında çekmek istiyorum bunu nasıl yapabilirim veritabanı yapısı falan nasıl olacak tarih alanı date mı time mi datetime falan nasıl olacak sorgum falan bunlara biraz deyinirmisiz???
+0
-0
Cevaba KatılıyorumKatılmıyorum
Cevap Yaz Yorum Yaz Arşivime Ekle Takip Et

Cevaplar

  • besimler adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    10 cevap - 6 soru
    Selam, bircok yolu var ben olsam, kayit gununu yil.ay.gun olarak kaydederim ilk once. Yani 20120515 olarak. Sonra bugunun tarihin yine ayni sekilde alirim ve kayit tarihinden cikarip aradaki gun sayisini bulup yazdiririm. Bu tarih fonksyonunun yazilis sekli sanirim date(Ymd); idi. Telefonda yazdgm icin bakamiyorum su an.
    • besimler adlı üyenin fotoğrafı besimler
      Bu arada varchar kullanabilirsin. Cunku mysql in date veya time finksyonlari icinden cikilamaz halde gorunebilir. Ayni sekilde saniyesine kadar bulabilirsin. Tabi ay atlamalarini da dikkata almalisin.
      11 yıl önce yazılmış
  • 1
    xuma adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    171 cevap - 1 soru
    Daha öncede yazdım tekrar ekleyim , database alanını datetime olarak seç.Diyelimki veritabanından aldığın tarih 2011-09-20 17:00:43 olsun bunu
    $belirliGun = strtotime('2011-09-20 17:00:43');
    

    şeklinde alalım.Güncel tarihi alalım;
    $suan=strtotime(date("j-n-Y H:i:s"));
    

    Fonksiyonu çalıştıralım;
    echo sureHesapla($belirliGun,$suan,5);
    
    b
    buda sana
    3 gun 7 saat 20 dakika 49 saniye once
    

    şeklinde bir çıktı verecektir.
    Fonksiyon
    function sureHesapla($zaman,$suan,$ayrinti=2){
    			$tarihler=array(365*24*60*60	=> "yil",
    						30*24*60*60		=> "ay",
    						7*24*60*60		=> "hafta",
    						24*60*60		=> "gun",
    						60*60			=> "saat",
    						60				=> "dakika",
    						1				=> "saniye");
    		if($suan>$zaman){ 
    			$gecen=$suan-$zaman;
    			if($gecen<5){$cikti='5 Saniyeden daha az sure once.';}
    		}else{
    			$gecen=$zaman-$suan;
    			if($gecen<5){ $cikti='5 Saniyeden daha az sure gecmis.';}
    		}
    		$cikti=array();
    		$cikis=0;
    		if($gecen>5){
    			foreach($tarihler as $sayi=>$kelime){
    			if($cikis>=$ayrinti || ($cikis<0 && $sayi<60)) break;
    			// ara sureyi bulalim
    			$arasure=floor($gecen/$sayi);
    			if($arasure>0){
    				$cikti[]=$arasure.' '.$kelime;
    				$gecen-=$arasure*$sayi;
    				$cikis++;
    			}else if($cikis>0) $cikis++;
    			}
    			$cikti=implode(' ',$cikti).' once';
    
    		}
    		
    			
    		return $cikti;
    	
    	}
    
    • sharq adlı üyenin fotoğrafı sharq
      arkadaşım 5 sn'ye geip geçmediğini hesaplatmıcam :S
      veri tabanına yorum kaayıtt edileli nekkadar geçmiş onu UhesaSPlatacaCğım :s
      11 yıl önce yazılmış
    • xuma adlı üyenin fotoğrafı xuma
      Sana fonksiyonun çıkıtısınıda yazdım
      3 gun 7 saat 20 dakika 49 saniye once
      

      gibi.Sana yorumunun ,ürününün vs'nin nekadar süre önce kaydedildiğini gösterir.Yil ,ay, hafta vs olarak ama sanırım benden bu kadar, ben durumu anlatmak konusunda yetersizim.Umarım diğer arkadaşlar yardımcı olur.
      11 yıl önce yazılmış
    • sharq adlı üyenin fotoğrafı sharq
      .s yok yetersiz deilde çıktı 5 sn daha az geçmiş falan yazıyor öle olmicak yani düz olcak nyse haltmeye çalşrım mntğnı anlyamadım sadece
      11 yıl önce yazılmış
    • PsyChQPaTh adlı üyenin fotoğrafı PsyChQPaTh
      Kod gerçekten başarılı,

      Php sayfasında üst kısıma;
      date_default_timezone_set('Europe/Istanbul');
      


      şeklinde eklediğimde doğru ve başarılı sonuç verdi.
      11 yıl önce yazılmış
  • reelmg adlı üyenin fotoğrafı
    11 yıl önce yazılmış
    35 cevap - 14 soru
    aşağıdaki kod tam olarak istediğin işi yapıyor sen sadece vt den gelmesi gereken verileri doğru getir yerine yaz
    ama "xuma" nın verdiği fonksiyon oldukça yeterli idi keşke hemen ben şunu istemiyorum demek yerine biraz deneme yapsaydın daha faydalı olurdu kanısındayım

    $kayityili="2011";  //BURASI VERİ TABANINDAN GELECEK
    $kayitay="03";		//BURASI VERİ TABANINDAN GELECEK
    $kayitgun="19";		//BURASI VERİ TABANINDAN GELECEK
    $kayitsaat="00";	//BURASI VERİ TABANINDAN GELECEK
    $kayitdakika="00";	//BURASI VERİ TABANINDAN GELECEK
    $kayitsaniye="00";	//BURASI VERİ TABANINDAN GELECEK
    $simdiki_yil=date("Y");
    $simdiki_ay=date("m");
    $simdiki_gun=date("d");
    $simdiki_saat=date("H");
    $simdiki_dakkika=date("i");
    $simdiki_saniye=date("s");
       
    $toplam_saniye=mktime($simdiki_saat, $simdiki_dakkika, $simdiki_saniye, $simdiki_ay, $simdiki_gun, $simdiki_yil) - mktime($kayitsaat, $kayitdakika, $kayitsaniye, $kayitay, $kayitgun, $kayityili);
    $zaman_dizisi = array(' Yıl'=> $toplam_saniye / 31556926 % 12,' Ay'=> $toplam_saniye / 604800 % 52,' Gün'=> $toplam_saniye / 86400 % 30,' Saat'=> $toplam_saniye / 3600 % 24, ' Dakika'    => $toplam_saniye / 60 % 60, ' Saniye'    => $toplam_saniye % 60 );
            
        foreach($zaman_dizisi as $degisken => $deger){
            if($deger > 1)$gecen_zaman[] = $deger . $degisken ;
            if($deger == 1)$gecen_zaman[] = $deger . $degisken;
            }
        array_splice($gecen_zaman, count($gecen_zaman)-1, 0, 've');
        $gecen_zaman[] = 'önce eklendi.';
        $yazilacak_zaman= join(' ', $gecen_zaman);
      
      
        
    	
    	echo $yazilacak_zaman;