Şimdi Ara

Php'de 1 gün geçince new yazısını kaldırmak

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
8
Cevap
0
Favori
167
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
Öne Çıkar
0 oy
Sayfa: 1
Giriş
Mesaj
  • Merhaba,

    php'de ürünler eğer ürün 1 gün içerisinde eklenmişse new diye bir yazı olmasını istiyorum. Bu zaman dilimini nasıl ayarlayabilirim?

    Bir gün arasındaki zamanı nasıl ayarlayabilirim?

    Yardımınıza ihtiyacım var.



    _____________________________
    Writing code is my life!
  • Yöntem 1

    Her db sorgusundan sonra dönen sonuçları for loop a alacaksın. Yazının oluşturulduğu zamanla şimdiki zamanı karşılaştırıp farkı günden az ise işaretli fazla ise işaretsiz html düzenlemesi yaptıracaksın. Zaman kıyaslarken utc zamanını baz alırsan daha kolay olur.



    Yöntem 2(daha az kaynak tüketir)

    Tablona “yeni” diye bir boolean sütun ekleyeceksin. Yeni yazı yazıldığında otomatik olarak true olacak. Bir arkaplan rutini oluşturup saat başı tüm postları zamanı 1 gündem eski olan ve “yeni” sütunu True olacak şekilde sorgulayacaksın (SQL filtrelerine göz at). Kalan sonuç varsa “yeni” sütununu false yapıp kaydedeceksin. Kullanıcı sorgu yaptığında “yeni” sütunundaki değere göre HTLM düzenlemesi yapacaksın.



    İlk yöntemde her kullanıcı her listeleme yaptığında database sorgusu, sonuçların listelenip zamana kıyaslanması ve sonrasında HTML ayarlanması yapcak. 100-200 post için sorun olmaz belki ama 10000 post dakikada bir kaç kez sorgulandığında RAM ve CPU ciddi şekilde tıkanır. İkinci yöntemde saat başı tek bir sorguda zaman kıyaslaması yaptığı için ve filtre kullanıldığı için kat kat verimli olacaktır.



    Not: Bu yazdığım işin mantığı. Kullandığın dile göre uygulamasını yapmak sana kalmış.

    < Bu ileti mini sürüm kullanılarak atıldı >
    _____________________________




  • Ürünlerin tablosunda createdDate tut. Ürünleri sayfaya basarken kontrol et eğer createdDate bugüne eşit değilse new yazdırma eşitse yazdır. CreatedDate + 1 olarak kontrol yaparsan bir gün daha durur.



    Basit bir soru çok kastırmaya benchmark yapmaya gerek yok.

    < Bu ileti mobil sürüm kullanılarak atıldı >
    _____________________________
  • quote:

    Orijinalden alıntı: L[A]hor

    Ürünlerin tablosunda createdDate tut. Ürünleri sayfaya basarken kontrol et eğer createdDate bugüne eşit değilse new yazdırma eşitse yazdır. CreatedDate + 1 olarak kontrol yaparsan bir gün daha durur.



    Basit bir soru çok kastırmaya benchmark yapmaya gerek yok.

    Merhaba,

    baktım ama createdDate yok sadece Date ve Datetime var. Hangisini seçmem gerekiyor ve bir de kod örneği verirseniz çok iyi olur.

    Yardımınıza ihtiyacım var.
    _____________________________
    Writing code is my life!
  • quote:

    Orijinalden alıntı: webandyazilimprofesor


    quote:

    Orijinalden alıntı: L[A]hor

    Ürünlerin tablosunda createdDate tut. Ürünleri sayfaya basarken kontrol et eğer createdDate bugüne eşit değilse new yazdırma eşitse yazdır. CreatedDate + 1 olarak kontrol yaparsan bir gün daha durur.



    Basit bir soru çok kastırmaya benchmark yapmaya gerek yok.

    Merhaba,

    baktım ama createdDate yok sadece Date ve Datetime var. Hangisini seçmem gerekiyor ve bir de kod örneği verirseniz çok iyi olur.

    Yardımınıza ihtiyacım var.

    Php bilmiyorum, veritabanında kolon için şimdilik Date tutman yeterli, kolon adı createdDate türü de Date olsun. Orayı her kayıt yeni kayıt eklemede o anki tarihi alarak kaydet.

    Sayafaya verileri çekerken yani bir for döngüsü veya foreach veya while döngüsü kullandığını farz ediyorum, o döngü içerisinde o anki iterasyondaki verinin createdDate kolonunu bugünkü tarhiten çıkar eğer sonuç 0 veya 1 ise istediğin yere new yazdır. Eğer sonuç 1 veya 0 değilse ki bu da doğruca else kısmı olur veriyi new yazdıramdan bas sayfaya.
    _____________________________




  • Bu tür işler için tabloda bir tarih sutunu olmalı. ben tarih bilgilerini int olarak yani unix time stamp olarak tutmayı tercih ediyorum.

    şimdi 1 gün 86400 sn dir

    yani eğer int olarak tutuyorsan

    if(($time - $today) <= 86400) {
    echo "new";
    }

    datetime olarak tutuyorsan

    $time = str_totime($dbfield)
    _____________________________
    Ford Granada MK2 2.8 V6, Weber 38 DGAS || Lada Samara 1.5 S
    Ryzen 9 7900 64GB Ram, 2 TB m.2, 1.5 TB SSD, 2 TB HDD, 32 2k, Rtx 3060
  • quote:

    Orijinalden alıntı: Delifisek.Tux

    Bu tür işler için tabloda bir tarih sutunu olmalı. ben tarih bilgilerini int olarak yani unix time stamp olarak tutmayı tercih ediyorum.

    şimdi 1 gün 86400 sn dir

    yani eğer int olarak tutuyorsan

    if(($time - $today) <= 86400) {
    echo "new";
    }

    datetime olarak tutuyorsan

    $time = str_totime($dbfield)

    Peki varchar olarak tutabilir miyim?
    _____________________________
    Writing code is my life!
  • Yapay Zeka’dan İlgili Konular
    Daha Fazla Göster
  • tutarsın da niye ? int olarak tutsana. int zaten.
    _____________________________
    Ford Granada MK2 2.8 V6, Weber 38 DGAS || Lada Samara 1.5 S
    Ryzen 9 7900 64GB Ram, 2 TB m.2, 1.5 TB SSD, 2 TB HDD, 32 2k, Rtx 3060
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.