• 14-07-2022, 15:56:18
    #1
    Merhabalar.
    Ben butona tıklama sayısını ölçüren bir kod kullanıyorum.
    Butona her tıkladığımda buton hiti +1 olarak tablomdaki tek id yi güncelliyor.
    İstiyorum ki her güncelleme işlemi yaptığımda yani buton hiti her yükseldiğinde kayıt tutacak ve ben sonrasında dicem ki "MART/OCAK/ŞUBAT aylarında whatsapp butonuna ve facebook butotuna toplam kaç hit olmuş"
    Bu şekilde saydırtmak istiyorum. Ne yapmam gerekir?
  • 14-07-2022, 16:00:50
    #2
    Hitlerin olduğu tabloya ay sutunu ekle if ve else ile iç içe sql sorguları yap
  • 14-07-2022, 16:20:28
    #3
    ErayEfe adlı üyeden alıntı: mesajı görüntüle
    Hitlerin olduğu tabloya ay sutunu ekle if ve else ile iç içe sql sorguları yap
    Php de çok ileri düzey değilim.
    Rica etsem bir örnek yazıp atabilirmisin?
  • 14-07-2022, 16:32:05
    #4
    iltu33 adlı üyeden alıntı: mesajı görüntüle
    Php de çok ileri düzey değilim.
    Rica etsem bir örnek yazıp atabilirmisin?
    Şuan çalışıyorum ücretli destek isterseniz pm üzerinden kaynak dosyayı upload edip atabilirsiniz. Detayları dönüş sağlarım.
  • 14-07-2022, 16:46:54
    #5
    2 tablo

    1.tablo tbl1
    id hit
    1 100

    2.tablo tbl2
    id, tbl1_id(int), islem_tarih(DATETIME DEFAULT NOW())
    1 1 O7.16.2022 15:20:20
    2. 2. 07.16.2022 15:22:10

    İşlem yükünü hafifletmek için hit alanını güncelleyebilirsiniz ya da hit alanını ilişkiden alırsınız örnek
    Select tbl1.*,tbl2.hit FROM tbl1 LEFT JOIN (
    select count(id) as hit, tbl1_id from tbl2 group by tbl1_id)
    ) as tbl2 ON tbl1.id = tbl2.tbl1_id



    Normalizasyon olarak birden çoğa ilişkilendirilmeli.

    tbl2 tablosuna işlem kaydını backend tarafında insert ile eklemeyek yerine mysql de trigger hazırlayabiliriz
    Hit alanı güncellendiğinde tbl2 tablosuna yeni kayıt oluşturmak için trigger oluşturuyoruz.

    DELIMITER $$
    CREATE TRIGGER after_tbl1_update
    AFTER UPDATE
    ON tbl1 FOR EACH ROW
    BEGIN
    IF OLD.hit <> new.hit
    THEN
    INSERT INTO tbl2(tbl1_id) VALUES(old.id);
    END IF;
    END$$
    DELIMITER ;



    Kayıt tarihleri elimizde olduğuna göre

    Ocak 2020 tarihi için toplam hit sayısı

    Select tbl1.*,tbl2.hit FROM tbl1 LEFT JOIN
    (
    SELECT count(id) as hit,tbl1_id FROM tbl2
    WHERE YEAR(islem_tarih) = 2020 and MONTH(islem_tarih) = 1
    GROUP BY tbl1_id
    )
    as tbl2
    ON tbl1.id = tbl2.tbl1_id


    *** Bu ay içerisinde toplam hit sayısı
    Select tbl1.*,tbl2.hit FROM tbl1 LEFT JOIN
    (
    SELECT count(id) as hit,tbl1_id FROM tbl2
    WHERE YEAR(islem_tarih) = YEAR(NOW()) and MONTH(islem_tarih) = MONTH(NOW())
    GROUP BY tbl1_id
    )
    as tbl2
    ON tbl1.id = tbl2.tbl1_id

    Mobil tarafında hazırladığımdan syntax hatası olabilir, temel algoritma yukarıdaki gibi