Forumel.Com

Geri Git   Forumel.Com > Webmaster > Webmaster Forum > Web Programlama

Web Programlama Bir web programlama dili ve veritabanı ile dinamik içerikli web siteleri yapmayı amaçlar.


PHP + Chart.js ile Gerçek Zamanlı Admin İstatistik Paneli — Trafik, Video, Üye Büyüme

Bir web programlama dili ve veritabanı ile dinamik içerikli web siteleri yapmayı amaçlar.



Konu Bilgileri
Konu Başlığı
PHP + Chart.js ile Gerçek Zamanlı Admin İstatistik Paneli — Trafik, Video, Üye Büyüme
Konudaki Cevap Sayısı
1
Şuan Bu Konuyu Görüntüleyenler
 
Görüntülenme Sayısı
75

Kullanıcı Etiket Listesi

2Beğeniler
  • 2 Post By DEKO

  
 
LinkBack Seçenekler Stil
Eski 20 Nisan 2026, 00:46   #1
Çevrimiçi
DEKO
DEKO - ait Kullanıcı Resmi (Avatar)
Üyelerin profil bilgilerini yalnızca kayıtlı üyeler görüntüleyebilir. Lütfen kaydol bağlantısından üye olunuz.
yazı PHP + Chart.js ile Gerçek Zamanlı Admin İstatistik Paneli — Trafik, Video, Üye Büyüme

PHP + Chart.js ile Gerçek Zamanlı Admin İstatistik Paneli — Trafik, Video, Üye Büyüme

Merhaba,

PHP tabanlı kendi video/blog siteme yönetim paneli geliştirirken en çok ihtiyaç duyduğum şeylerden biri gerçek zamanlı istatistik ekranıydı. Google Analytics gibi dışarıya bağımlı olmak yerine veritabanımdan direkt çeken, sayfayı her açtığımda anlık durum gösteren bir panel istedim. Sonuç olarak ortaya çıkan stats.php'yi sizinle paylaşıyorum.

Ne gösteriyor?

Tek sayfada dört farklı bölüm var:

1. Günlük Özet (4 kart) — Bugünkü sayfa görüntüleme, unique ziyaretçi, video izlenme ve arama sayısı. Her kartta dünle karşılaştırma var, artış yeşil ↑ eksi kırmızı ↓ gösteriyor.

2. Trafik Grafikleri — Bugünün saatlik trafik dağılımı (bar grafik) ve son 30 günün günlük trafik trendi (alan grafik). Sayfa görüntüleme ve unique ziyaretçi ayrı ayrı çiziliyor.

3. Trend Videolar + Popüler Aramalar — O gün en çok izlenen 10 video (thumbnail'li liste) ve tüm zamanlardaki en çok aranan 15 kelime yan yana gösteriliyor.

4. Üye Büyüme Bölümü — Toplam üye, seçili dönemde yeni kayıt, bugün yeni kayıt, günlük ortalama kayıt kartları. Altında günlük yeni kayıt (bar) + kümülatif büyüme (çizgi) birleşik grafiği ve üye rol dağılımı pasta grafiği var (admin, moderator, vip, user...).

━━━━━━━━━━ EKRAN GÖRÜNTÜSÜ ━━━━━━━━━━

Alıntı:
📊 Bugün: 4.821 sayfa görüntüleme | 1.204 unique ziyaretçi | 893 video izlenme | 317 arama
📈 Son 30 gün trend grafik — Chart.js ile çiziliyor
🔥 Trend videolar — thumbnail + izlenme sayısı
👥 Toplam üye: 12.540 | Bugün yeni: 47 | Günlük ort: 38
🥧 Rol dağılımı pasta grafiği (admin / moderator / vip / user)
━━━━━━━━━━ VERİTABANI YAPISI ━━━━━━━━━━

Kod çalışabilmesi için veritabanında şu tabloların olması gerekiyor:

Kod:
-- Günlük/saatlik trafik tablosu
CREATE TABLE site_stats (
    id          INT AUTO_INCREMENT PRIMARY KEY,
    stat_date   DATE        NOT NULL,
    stat_hour   TINYINT     NOT NULL DEFAULT 0,
    page_views  INT         NOT NULL DEFAULT 0,
    unique_ips  INT         NOT NULL DEFAULT 0,
    video_views INT         NOT NULL DEFAULT 0,
    searches    INT         NOT NULL DEFAULT 0,
    INDEX (stat_date)
);

-- Video izlenme log tablosu
CREATE TABLE video_views_log (
    id         INT AUTO_INCREMENT PRIMARY KEY,
    video_id   INT  NOT NULL,
    view_date  DATE NOT NULL,
    INDEX (view_date),
    INDEX (video_id)
);

-- Arama log tablosu
CREATE TABLE search_log (
    id    INT AUTO_INCREMENT PRIMARY KEY,
    query VARCHAR(255) NOT NULL,
    count INT NOT NULL DEFAULT 1,
    UNIQUE KEY (query)
);

-- Kullanıcı tablosu (mevcut tablona göre uyarla)
CREATE TABLE users (
    id         INT AUTO_INCREMENT PRIMARY KEY,
    role       VARCHAR(30) NOT NULL DEFAULT 'user',
    created_at DATETIME    NOT NULL DEFAULT CURRENT_TIMESTAMP,
    INDEX (created_at),
    INDEX (role)
);

-- Video tablosu (mevcut tablona göre uyarla)
CREATE TABLE videos (
    id        INT AUTO_INCREMENT PRIMARY KEY,
    title     VARCHAR(255),
    thumbnail VARCHAR(500),
    category  VARCHAR(100)
);
━━━━━━━━━━ KURULUM ━━━━━━━━━━

1. Tabloları oluştur
Yukarıdaki SQL'i kendi veritabanına çalıştır. Zaten users ve videos tablon varsa onları kullan, yoksa oluştur.

2. Dosyayı yükle
admin/stats.php olarak admin klasörüne yükle. Kod _layout.php ve stats_helper.php dosyalarına bağımlı — bunlar kendi admin iskeletin varsa uyarla, yoksa aşağıda sade bir alternatif gösteriyorum.

3. Bağımlılıkları uyarla
Dosyanın en üstündeki 3 satırı kendi sisteminize göre düzenle:

Kod:
require_once '_layout.php';       // kendi admin header/footer dosyan
require_once '../stats_helper.php'; // yardımcı fonksiyonlar (require_perm vs)
global $db;                       // PDO bağlantı nesnesi
require_perm() fonksiyonu kendi yetki sisteminle çalışıyor. Eğer yoksa şu şekilde bypass edebilirsin:

Kod:
// Geçici bypass — kendi auth kontrolünle değiştir
function require_perm($perm) {
    if (empty($_SESSION['admin_logged_in'])) {
        header('Location: login.php'); exit;
    }
}
4. Chart.js CDN
Grafiklerin çalışması için internet bağlantısı yeterli, dosyanın sonunda zaten şu satır var:

Kod:
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/4.4.1/chart.umd.min.js"></script>
Offline sunucuda kullanacaksan Chart.js'i indirip local path olarak değiştir.

5. Saatlik veriyi kaydetmek için cron
Trafik verisinin birikmesi için her saatte bir şu sorguyu çalıştıran bir cron job veya middleware gerekilir. Örnek cron satırı:

Kod:
0 * * * * php /var/www/html/cron/log_stats.php
6. Özet ve önemli kurulum bilgisi

Kod:
Zip içinde 3 dosya var:
Kod:
stats.php — Temizlenmiş ana dosya. Harici _layout.php ve stats_helper.php bağımlılıkları kaldırıldı, kendi HTML/CSS/JS'i var, standalone çalışıyor. Arrow function syntax PHP 7.4 uyumlu hale getirildi.

db.php — config/db.php olarak yükle, içine kendi host/dbname/user/pass bilgilerini yaz. stats.php bunu require ediyor.

stats_kurulum.sql — phpMyAdmin'e import et, 5 tabloyu oluşturuyor. Zaten mevcut users veya videos tablonuz varsa o CREATE bloklarını atlayın.
Kurulum sırası: SQL → db.php'yi doldur → stats.php'yi admin/ klasörüne yükle → tarayıcıdan aç.
━━━━━━━━━━ ÖZELLIKLER ━━━━━━━━━━
  • Gerçek zamanlı: Sayfa her açıldığında veritabanından anlık çeker, cache yok.
  • Dün karşılaştırması: Bugünkü sayfa görüntüleme ve unique ziyaretçi dünle otomatik karşılaştırılıyor, artış/azalış renkli gösteriliyor.
  • Ayarlanabilir dönem: Üye büyüme grafiğinde URL parametresiyle dönem seçilebiliyor. Örnek: stats.php?ur=7 son 7 günü, stats.php?ur=90 son 90 günü gösteriyor. Minimum 7, maksimum 90 gün, varsayılan 30 gün.
  • Kümülatif büyüme: Günlük yeni kayıtların yanında toplam üye sayısının nasıl büyüdüğünü gösteren kümülatif çizgi grafiği mevcut.
  • Rol dağılımı: Üyelerin admin / co-admin / moderator / vip / user olarak kaçar kişi olduğunu yüzde ve pasta grafikle gösteriyor.
  • Trend videolar: O gün video_views_log tablosuna en çok kayıt düşen 10 videoyu thumbnail'li şekilde sıralıyor.
  • Hata toleransı: Her sorgu ayrı try/catch bloğunda. Bir tablo yoksa veya sorgu patlarsa sayfa tamamen çökmüyor, sadece o bölüm boş kalıyor.

━━━━━━━━━━ GEREKSİNİMLER ━━━━━━━━━━
  • PHP 7.4 veya üzeri (arrow function syntax için)
  • PDO + PDO_MySQL extension
  • MySQL 5.7 / MariaDB 10.3 veya üzeri
  • Chart.js 4.x (CDN üzerinden yükleniyor, kurulum gerektirmez)

━━━━━━━━━━ EKLER ━━━━━━━━━━

stats_panel dosyalarını zip olarak yüklüyorum. Veritabanı tablo yapısı ve require_perm() gibi bağımlılıkları kendi sisteminize göre uyarlamanız gerekiyor, geri kalan her şey standart PDO ile direkt çalışıyor.

Test ortamı: PHP 8.2 / MariaDB 10.6 / Chart.js 4.4.1. PHP 7.4 altında arrow function (fn() =>) syntax hatası verir, o durumda function($x) { return ...; } şeklinde dönüştürmeniz gerekir.

Eklenmiş Dosya
Dosya tipi: zip stats_panel.zip (8.5 KB, 0x kez indirilmiştir)

Fallen code. Broken systems. No mercy.
 
Eski 20 Nisan 2026, 08:20   #2
Çevrimdışı
Evillusions
Evillusions - ait Kullanıcı Resmi (Avatar)
Üyelerin profil bilgilerini yalnızca kayıtlı üyeler görüntüleyebilir. Lütfen kaydol bağlantısından üye olunuz.
Varsayılan Yanıt: PHP + Chart.js ile Gerçek Zamanlı Admin İstatistik Paneli — Trafik, Video, Üye Büyüme

Başarılı Paylaşım Adına Teşekkürler


İmzalardaki bağlantıları veya görselleri görüntülemek için gönderi sayınızın 10 veya daha fazla olması gerekir. Şu anda 0 mesajınız var.



İmzalardaki bağlantıları veya görselleri görüntülemek için gönderi sayınızın 10 veya daha fazla olması gerekir. Şu anda 0 mesajınız var.
 

Yer İmleri


Konuyu 1 kişi okuyor: (0 üye ve 1 misafir)
 

Gönderim Kuralları
Yeni konu açamazsınız
Cevap yazamazsınız
Ek dosya gönderemezsiniz
Mesajlarınızı düzenleyemezsiniz

BB code is Açık
İfadeler Açık
[IMG] kodu Açık
HTML kodu Kapalı
Trackbacks are Açık
Pingbacks are Açık
Refbacks are Açık



Tüm saatler GMT +3 biçimindedir. Şu anki saat 02:55.

Forum Bilgilendirme Künye
Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2026, vBulletin Solutions Inc.

Forumel, lisanslı vBulletin kullanmaktadır!
Forum Sahibi: Dea Dia ve Gece

Sitemiz; yer sağlayıcı bir forum sitesidir. Forumel.Com adresimizde yapılan paylaşımlar, moderasyon ekibimizin onayına dahil olmadan direkt olarak yayınlanmaktadır. 5237 sayılı TCK (Türk Ceza Kanunu) ve 5651 Sayılı Kanun'un ilgili maddelerini ihlal eden kişilerin IP adresleri de dahil olmak üzere sair kişi veya adli mercilere müzekkere (Resmi Üst Yazı), tarafımıza tanzim edildiği takdirde paylaşılacaktır. Hukuka aykırı bir paylaşımın olduğunu düşündüğünüz mesaj ya da konuyu; İLETİŞİM linkine bildirim yoluyla iletebilirsiniz. 48 saat içerisinde mevcut şikâyetiniz üzerinden tarafınıza ulaşılacak, gerekli işlemler tesis edilecektir.

Eğlenceli Genel Forum Sitesi, Genel Forum Sitesi, Genel Forum Siteleri, Genel Forum