---
type: varlik
baslik: qr_giris_cikis (tablo)
kategori: tablo
olusturuldu: 2026-05-06
guncellendi: 2026-05-06
etiketler: [db, qr, yoklama, yeni]
---

# `qr_giris_cikis` ⭐

QR ile yapılmış giriş/çıkış kayıtları. Hem oyuncular hem antrenörler için. `002_antrenor_qr_pasif` migration ile geldi.

## Alanlar

| Alan | Tip | Not |
|---|---|---|
| `id` | INT PK | |
| `kisi_tipi` | ENUM('oyuncu','antrenor') NOT NULL | hangi tablodan kişi |
| `kisi_id` | INT NOT NULL | [[db-oyuncular]].id veya [[db-antrenorler]].id |
| `tarih` | DATE NOT NULL | gün |
| `giris_saat` | DATETIME NOT NULL | |
| `cikis_saat` | DATETIME | NULL = içeride |
| `created_at` | TIMESTAMP | |

**UNIQUE yok** — bilinçli. Aynı gün 2+ seans olabilir (sabah + akşam antrenmanı).

## İndeksler

- `idx_qrgc_kisi` (kisi_tipi, kisi_id, tarih) — kişinin gün içi kayıtlarını çekmek için
- `idx_qrgc_tarih` (tarih)

## Giriş/Çıkış Kuralları (`moduller/public/qr_kaydet.php`)

| Durum | Aksiyon |
|---|---|
| Bugün hiç kayıt yok, `islem=giris` | INSERT yeni satır |
| Son kayıt açık (cikis_saat=NULL), `islem=giris` | "Önce çıkış yapın" hatası |
| Son kayıt kapalı, çıkıştan ≥5dk geçti, `islem=giris` | INSERT (yeni seans) |
| Son kayıt açık, girişten ≥5dk, `islem=cikis` | UPDATE cikis_saat=NOW() |
| Son kayıt açık, girişten <5dk | "5dk bekleyin" |
| Son kayıt kapalı, `islem=cikis` | "Zaten çıkış yaptınız" |

## Antrenör Detay Takvimi — Özel Encoding

`moduller/antrenorler/detay.php`'da panel üzerinden manuel kayıt eklenirken aynı tablo kullanılır ama özel saatlerle ayırt edilir:

| `giris_saat` saat kısmı | Anlam |
|---|---|
| `08:00:00` | Manuel "Var" işareti |
| `08:01:00` | Manuel "İzinli" (mazeret) |
| `08:02:00` | Manuel "Yok" |
| Diğer | Gerçek QR kaydı |

Silme: `TIME(giris_saat) IN ('08:00:00','08:01:00','08:02:00')` ile manuel kayıtlar tek tip silinir, gerçek QR'lara dokunulmaz.

> ⚠️ Bu encoding **sadece antrenörler için** kullanılır. Oyuncular için manuel devam `devam_kayitlari` tablosuna gider.

## Oyuncu Devamı ile İlişki

Oyuncu **giriş** yaptığında (`qr_kaydet.php`):
- `qr_giris_cikis` satırı INSERT
- `dmv_kaydet($db, $oyuncu_id, $tarih, 'var', 'qr')` çağrılır → [[db-devam_kayitlari]] de güncellenir

Antrenör için sadece `qr_giris_cikis` yazılır (devam_kayitlari tablosu kullanılmaz).

## Geri Bağlantılar

- [[db-sema]]
- [[db-qr_kodlar]]
- [[db-devam_kayitlari]]
