Tekil Mesaj gösterimi
Eski 21 Nisan 2026, 23:31   #1
Çevrimdışı
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 + DataTables ile Gelişmiş Admin Arama & Filtreleme Paneli — Üye, Konu, Post ve Ek Dosya

PHP + DataTables ile Gelişmiş Admin Arama & Filtreleme Paneli — Üye, Konu, Post ve Ek Dosya

Merhaba,

PHP tabanlı siteme yönetim paneli geliştirirken üyeler, konular, postlar ve ek dosyalar üzerinde hızlıca arama yapabileceğim, filtreleyebileceğim ve toplu işlem uygulayabileceğim tek bir panel istedim. DataTables'ın server-side modunu kullanarak yazdığım bu paneli sizinle paylaşıyorum.

━━━━━━━━━━ PANEL NE YAPIYOR? ━━━━━━━━━━

Tek dosya, 4 sekme. Her sekme kendi filtre barı ve toplu işlem butonlarıyla geliyor.

📋 Üyeler Sekmesi
  • Kullanıcı adı veya e-posta ile anlık arama
  • Role göre filtre (admin, moderator, vip, user...)
  • Duruma göre filtre (aktif / banlı)
  • Kayıt tarih aralığına göre filtre
  • Her satırda: profil görüntüle, tekli banla/ban kaldır, tekli sil
  • Toplu işlem: Banla · Ban Kaldır · Sil

💬 Konular Sekmesi
  • Başlık veya yazar ile arama
  • Duruma göre filtre (açık / kapalı / sabitli)
  • Kategoriye göre filtre
  • Tarih aralığı filtresi
  • Her satırda: görüntüleme sayısı, cevap sayısı, aç/kapat, sil
  • Toplu işlem: Kapat · Aç · Sabitle · Sil

📝 Postlar Sekmesi
  • Yazar adı, içerik veya konu başlığı ile arama
  • Onay durumuna göre filtre (onaylı / beklemede)
  • Tarih aralığı filtresi
  • Her satırda: konuya gitmek için link, sil
  • Toplu işlem: Onayla · Sil

📎 Ek Dosyalar Sekmesi
  • Yükleyen adı veya dosya adı ile arama
  • Dosya tipine göre filtre (görsel / video / PDF / ZIP / metin)
  • Tarih aralığı filtresi
  • Dosya boyutu ve indirme sayısı görünür
  • Her satırda: indir, sil (fiziksel dosyayı da siler)
  • Toplu işlem: Sil

━━━━━━━━━━ TEKNİK ÖZELLİKLER ━━━━━━━━━━
  • Server-side sayfalama: Binlerce kayıt olsa bile sayfa yavaşlamaz. Sadece o an görüntülenen satırlar veritabanından çekilir.
  • AJAX tabanlı: Filtre uygulamak, sayfa değiştirmek veya sıralama yapmak sayfayı yeniden yüklemez.
  • Toplu işlem (Bulk Action): Satır seçimi yapılınca üstte işlem barı belirir. "Tümünü Seç" checkbox'ı ile sayfadaki tüm kayıtlar seçilebilir.
  • Toast bildirimleri: Her işlem sonrası sağ altta başarı/hata bildirimi çıkar.
  • CSRF koruması: Tüm POST ve AJAX işlemleri CSRF token ile korunur.
  • Fiziksel dosya silme: Ek dosya silinince sunucudaki fiziksel dosya da silinir.

━━━━━━━━━━ DOSYA YAPISI ━━━━━━━━━━

Kod:
sitem.com/
├── config/
│   └── db.php                    ← PDO bağlantısı
└── admin/
    └── search_panel.php          ← Ana panel (tek dosya)
━━━━━━━━━━ VERİTABANI TABLOLARI ━━━━━━━━━━

Panelin çalışması için şu 4 tablo gerekiyor (SQL dosyası ekte):

Kod:
users       → id, username, email, role, is_banned, points, created_at
threads     → id, user_id, title, category, is_closed, is_pinned, view_count, created_at
posts       → id, thread_id, user_id, content, is_approved, created_at
attachments → id, user_id, thread_id, post_id, file_name, file_path,
              file_type, file_size, download_count, created_at
Zaten mevcut tablolarınız varsa SQL'deki CREATE TABLE satırlarını atlayın, sadece eksik indexleri ekleyin. Panel tablonuzun yapısına göre uyarlanabilir.

━━━━━━━━━━ KURULUM ━━━━━━━━━━

1. Dosyaları yükle
search_panel.phpadmin/ klasörü
db.phpconfig/ klasörü

2. db.php'yi doldur
config/db.php içindeki DB_HOST / DB_NAME / DB_USER / DB_PASS bilgilerini kendi sunucuna göre düzenle.

3. SQL'i çalıştır
search_panel_kurulum.sql dosyasını phpMyAdmin'e import et. Tablolar yoksa oluşturur, varsa IF NOT EXISTS sayesinde dokunmaz.

4. Paneli aç
admin/search_panel.php adresine git. URL'de ?tab=members, ?tab=threads, ?tab=posts, ?tab=attachments şeklinde geçiş yapılabilir.

━━━━━━━━━━ BAĞIMLILIKLAR (CDN) ━━━━━━━━━━

Tüm bağımlılıklar CDN üzerinden yükleniyor, sunucuya bir şey kurmanıza gerek yok:
  • DataTables 1.13.8 (server-side tablo)
  • Bootstrap 5.3 (layout ve sayfalama teması)
  • jQuery 3.7 (DataTables bağımlılığı)
  • Font Awesome 6.5 (ikonlar)

Offline sunucuda kullanacaksanız bu dosyaları indirip yerel yollarla bağlayın.

━━━━━━━━━━ ÖNEMLİ NOTLAR ━━━━━━━━━━
  • Uyarlama gerektiren kısımlar: Profil linki /profil.php?id=, konu linki /konu/ ve dosya yolu /uploads/ kendi URL yapınıza göre değiştirilmeli.
  • Auth kontrolü: Dosyanın başındaki $_SESSION['admin_logged_in'] kontrolünü kendi oturum sisteminizle değiştirin.
  • Toplu silme geri alınamaz: Özellikle ek dosya silme işlemi fiziksel dosyayı da siliyor. Gerekliyse silmeden önce yedek alın.
  • PHP arrow function: AJAX veri hazırlama kısmında fn() => kullanılmıştır. PHP 7.4 altında function($x) { return ...; } şeklinde dönüştürün.

━━━━━━━━━━ GEREKSİNİMLER ━━━━━━━━━━
  • PHP 7.4 veya üzeri
  • PDO + PDO_MySQL extension
  • MySQL 5.7 / MariaDB 10.3 veya üzeri
  • İnternet bağlantısı (CDN için) — offline için yerel dosya

━━━━━━━━━━ EKLER ━━━━━━━━━━
  1. search_panel.php — Tek dosya, 4 sekme: üye, konu, post, ek dosya yönetimi.
  2. db.php — PDO bağlantı dosyası. Bilgilerinizi girin, hazır.
  3. search_panel_kurulum.sql — 4 tablonun CREATE scripti + isteğe bağlı test verisi (yorum satırında).


Test ortamı: PHP 8.2 / MariaDB 10.6 / DataTables 1.13.8 / Bootstrap 5.3. Tablolarınızın sütun isimleri farklıysa AJAX handler içindeki SELECT sorgularını buna göre uyarlayın.

Eklenmiş Dosya
Dosya tipi: zip search_panel_forumel.zip (12.2 KB, 1x kez indirilmiştir)

Fallen code. Broken systems. No mercy.