# Meme Battle Elo

Prosta aplikacja PHP do porównywania memów i tworzenia rankingu "najlepszych" na podstawie systemu Elo.

## Wymagania
- PHP 7.4 lub nowszy
- Rozszerzenie `php_sqlite3` (zazwyczaj domyślnie włączone).
- Włączone uprawnienia zapisu w folderze (dla pliku bazy danych i uploadów).

## Jak uruchomić

### Sposób 1 (Windows - zalecany)
Kliknij dwukrotnie plik `run.bat`. Aplikacja uruchomi się w przeglądarce pod adresem `http://localhost:8088`.

### Sposób 2 (Terminal)
Otwórz terminal w tym katalogu i wpisz:
```bash
php -S localhost:8088 -c php.ini
```
Następnie otwórz przeglądarkę na http://localhost:8088

## Funkcje

### Podstawowe
1. **Głosowanie**: Porównanie dwóch losowych obrazków, wybór lepszego.
2. **Ranking**: Tabela wyników przeliczana na bieżąco.
3. **Upload**: Możliwość dodawania własnych obrazków przez prosty interfejs.

### ⭐ Nowe - System Statystyk
4. **Historia pojedynków**: Każdy pojedynek jest zapisywany z pełnymi danymi.
5. **Śledzenie rankingu w czasie**: Wykresy pokazujące zmiany ratingu dla każdego mema.
6. **Detekcja duplikatów**: System hashowania SHA-256 zapobiega dodawaniu tego samego obrazka dwa razy.
7. **Statystyki mema**: Szczegółowa strona dla każdego mema z:
   - Wykresem zmian ratingu w czasie
   - Historią ostatnich pojedynków
   - Szczegółowymi statystykami (win rate, ranking position, etc.)

## Aktualizacja istniejącej bazy

Jeśli korzystałeś już z aplikacji przed dodaniem systemu statystyk, uruchom skrypt aktualizacji:

```bash
php update_existing_db.php
```

lub otwórz w przeglądarce: `http://localhost:8088/update_existing_db.php`

## Dokumentacja

Szczegółowa dokumentacja systemu statystyk znajduje się w pliku: **[STATS_DOCUMENTATION.md](STATS_DOCUMENTATION.md)**

## Struktura bazy danych

Aplikacja używa SQLite z trzema głównymi tabelami:
- `memes` - lista memów z ratingiem i statystykami
- `battles` - historia wszystkich pojedynków
- `rating_history` - zmiany ratingu w czasie

## Uwagi
Baza danych (`memes.db`) zostanie utworzona automatycznie przy pierwszym uruchomieniu.
Wszystkie nowe tabele i indeksy są tworzone automatycznie przez `db.php`.

## Rozwiązywanie problemów (SQLite)
Jeśli widzisz błąd `Class "SQLite3" not found`, oznacza to, że PHP nie ładuje domyślnie rozszerzenia SQLite.
W tym folderze został utworzony plik `php.ini`, który poprawnie konfiguruje środowisko.

Aby uruchomić serwer z tą konfiguracją ręcznie:
```bash
php -S localhost:8088 -c php.ini
```
Alternatywnie użyj zaktualizowanego pliku `run.bat`.

