Merhaba beyler,
mesela en çok izlenen bugünü belki sayfada ki bir döngüyle databaseyi her gün gece 00.00 da sıfırlayabilirim ama hafta ve ay için ne yapacağım?
cronjob kullanma taraftarı değilim.
En çok izlenen bugün, bu hafta (yardım)
18
●994
- 12-04-2015, 20:59:08eğer sadece +1 yapıyorsan gün hafta ay diye bölemezsin hocam.
bende benzer bir şey yapmıştım, hitler için ayrı bir tablo açtım. yani
videolar tablosunda izlenen videoya +1 yapıyorsun, bu senin toplam hitin olsun birde hit tablosu oluştur. hit tablosuna id + video id + üye id + tarih şeklinde kayıt yap.
sonra verileri if sorgusuyla çekersin.
bu günün en çok izlenen kaydı bence bu şekilde kullanmak daha iyi olur.
$sorgu=mysql_query("select video_id,count(id) as sayi from hits where gun='12' and ay='04' and yil='2015' group by video_id order by sayi desc limit 10");,bu da yeni tablon için bi örnek
$gun = date("d"); $ay = date("m"); $yil = date("Y"); $sorgu = "INSERT INTO hits "; $sorgu .= "(video_id,uye_id,gun,ay,yil)"; $sorgu .= " VALUES "; $sorgu .= "('$video_id','$uye_id','$gun','$ay','$yil')"; $hitler = mysql_query($sorgu); $f = "1"; $ekle = $eskihit+$f; if ($hitler) {$sorgi = "UPDATE videolar SET hit = '".$ekle."' WHERE `id` = '$id'"; mysql_query($sorgi); }CREATE TABLE IF NOT EXISTS `hits` ( `id` int(11) NOT NULL AUTO_INCREMENT, `video_id` varchar(255) NOT NULL, `uye_id` varchar(255) NOT NULL, `gun` varchar(255) NOT NULL, `ay` varchar(255) NOT NULL, `yil` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `id` (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
- 12-04-2015, 22:32:55Üyeliği durdurulduveritabanında sayaç için ayrı bir tablo oluştuyorsun.ReLegolaS adlı üyeden alıntı: mesajı görüntüle
sayac(id,hit,ay,hafta,gun)
id primary key ve içerik (yazi,video vs neyse) tablonun primary sütununa foreign key referansı vericeksin.
hit ,ay, hafta, gun integer tipinde unsigned özelliği vericeksin, default değerleri 0 olucak.
sen normal update +1 olarak bahsettiğin işlemi sadece gun sütunu için yapıcaksın.
hit,ay,hafta bu sütunlar için yapmayacaksın sürekli.
select sorgularında veya listelerken bu hafta hiti hafta+gun olarak, toplam hiti hafta+gun olarak göstereceksin.
her gun sonu
gun sütunundaki değerleri hit,ay,hafta sütunlarına ekliyeceksin.
misal
sql > update sayac set hit = hit+gun, ay = ay +gun, hafta = hafta +gun, gun = 0
gun sütuna 0 değeri vericeksin, hafta başlangıcı pazartesi ise hafta sütunu, ay başı ise ay sütununa 0 değeri vericeksin.
cronjob kullanma taraftarı değilsen mysql event kullanıcaksın. mysql event bilgin yoksa google üzerinde araştırabilirsin, yapamaz isen konu aç ben ordan yardımcı olur hallederim.
php de direk event olayı yok ama eklenti mevcut.
https://pecl.php.net/package/event
http://php.net/manual/en/book.libevent.php
kolay gelsin. - 14-04-2015, 06:59:12hocam count olayı ve sürekli tabloda yeni veri açmak sorun olacağını düşündüm ve sein kodlar ile şöyle bişey yazdımadme adlı üyeden alıntı: mesajı görüntüle
$video_id=$va['id']; $gun = date("d"); $ay = date("m"); $yil = date("Y"); $f = "1"; $ekle = $eskihit+$f; $result = mysql_query("SELECT * FROM hits WHERE video_id ='$video_id' and gun ='$gun' and ay ='$ay' and yil ='$yil'"); if( mysql_num_rows($result) > 0) { mysql_query("UPDATE hits SET hit = hit + 1 where video_id ='$video_id' and gun ='$gun' and ay ='$ay' and yil ='$yil' "); } else { mysql_query("INSERT INTO hits (video_id,hit,gun,ay,yil) VALUES ('$video_id','$f','$gun','$ay','$yil') "); }ama sorguyu nasıl geri alacağım bunu yapamadım(:
yani şu kodda takıldım
$sorgu=mysql_query("select video_id,count(id) as sayi from hits where gun='12' and ay='04' and yil='2015' group by video_id order by sayi desc limit 10");, - 14-04-2015, 13:23:35ReLegolaS adlı üyeden alıntı: mesajı görüntüle
****mysql_query("UPDATE hits SET hit = hit + 1 where video_id ='$video_id' and gun ='$gun' and ay ='$ay' and yil ='$yil' ");bu kod çalışıyor mu ? çalışmaması gerek çünkü sende hit diye bir sütun yok ve eğer bu şekilde ekleme yaparsan hit tek sütun olacağı için hangi gün basıldığını çekemezsin. eğer tabloya sürekli veri kaydı yapmak istemiyorsan üstteki arkadaşın dediği gibi günlük olarak kaydedebilirsin.
$video_id=$va['id']; $gun = date("d"); $ay = date("m"); $yil = date("Y"); $tarih = date("Ymd"); $f = "1"; $ekle = $eskihit+$f; $result = mysql_query("SELECT * FROM hits WHERE video_id ='$video_id' and gun ='$gun' and ay ='$ay' and yil ='$yil'"); if( mysql_num_rows($result) > 0) { $d5=mysql_fetch_array($result); $gun=$d5["gun"]; $ay=$d5["ay"]; $yil=$d5["yil"]; $yg = $gun +$f; mysql_query("UPDATE hits SET gun =$yg where video_id ='$video_id' and tarih = '$tarih' "); }gibi. böyle tarihi tarih sütununda tutarsın, her gün tabloda gün sütununa ekletirsin, istatistikler yada hitleri nerede gösteriyorsan oraya da bir if kontrolü koy her 7 günde bir gün tablosunda gördüklerini haftaya aktarsın. - 14-04-2015, 15:46:21hit diye alan oluşturdum. yani hergün farklı bir sutun açıyor ve hergün o sutuna +1 yapıyor. Tek istediğim bunu nasıl php ile gösterebilirim. yada sorguda kullanabilirim.adme adlı üyeden alıntı: mesajı görüntüle
- 14-04-2015, 19:40:53ReLegolaS adlı üyeden alıntı: mesajı görüntüle
$hiti=mysql_query("select * from hits where video_id='$video_id' and gun='$gun' and ay='$ay' and yil='$yil' "); $hital=mysql_fetch_array($hiti); $hit=$hital["hit"];