DENAH KELAS X RPL-1 — SIAP HOSTING PHP Syarat: hosting PHP 8.1 atau lebih baru, PDO, dan PDO SQLite (pdo_sqlite). Alternatif: PDO MySQL dan satu database MySQL/MariaDB. Tidak membutuhkan Node.js, npm, Composer, build, atau impor SQL manual. CARA UPLOAD 1. Buka File Manager hosting/cPanel. 2. Upload ZIP ke public_html/denah (atau folder domain yang digunakan). 3. Extract ZIP. Pastikan index.php berada langsung di folder tujuan, bukan berlapis dua folder. 4. Buka https://domain-anda/denah/ (sesuaikan alamat). 5. Buat kata sandi guru pada halaman persiapan pertama. Simpan kata sandinya. 6. Bagikan alamat website yang sama ke seluruh siswa. Database SQLite dan tabel dibuat otomatis di folder .denah-private di luar public_html/document root. Default SQLite tidak membutuhkan username/password database. Jika folder privat tidak dapat dibuat otomatis, buat folder yang dapat ditulis PHP di luar public_html melalui File Manager. Masukkan path absolutnya pada data_directory di config.php. Jangan meletakkan database di dalam public_html. Jika memakai open_basedir, izinkan path folder privat itu pada konfigurasi hosting. JIKA PDO SQLITE TIDAK TERSEDIA Aktifkan pdo_sqlite melalui Select PHP Version / PHP Extensions. Jika hosting hanya menyediakan MySQL: 1. Buat database dan user lewat MySQL Databases di cPanel. 2. Berikan hak akses database kepada user tersebut. 3. Edit config.php: driver menjadi mysql, isi host, port, database, username, password. 4. Buka website. Tabel dan nama siswa dibuat otomatis; tidak perlu impor SQL. PENGGUNAAN - Semua perangkat mengakses satu database pada server yang sama. - Perubahan terlihat sekitar setiap 2 detik ketika tab aktif dan koneksi tersedia. - Drag and drop nama ke kursi, atau ketuk nama lalu kursi. - Isi sesuai gambar untuk menempatkan semua siswa sesuai gambar acuan. - Siswa memilih nama sendiri lalu menekan Saya setuju. Nama hanya dihitung satu kali, satu perangkat untuk satu persetujuan. - Setiap perubahan kursi menghapus persetujuan sebelumnya. - Setelah 25/25 setuju, pengubahan kursi ditolak oleh server. - Guru menekan Masuk guru, lalu Buka kembali (guru), untuk membuka pengaturan dan menghapus persetujuan. - Cetak, unduh JSON, impor, dan urungkan tetap tersedia. - Semua pengguna yang memiliki alamat website dapat mengatur kursi sampai terkunci. - Persetujuan berdasarkan nama yang dipilih sendiri; tidak memakai verifikasi akun sekolah. BACKUP Untuk SQLite: simpan backup folder .denah-private yang bersangkutan melalui hosting. Gunakan fasilitas backup hosting, atau hentikan penulisan sesaat dan backup classroom.sqlite bersama berkas -wal/-shm jika tersedia. Jangan memindahkan database ketika sedang ditulis. Untuk MySQL: gunakan backup database/phpMyAdmin dari hosting. Cadangan denah juga bisa dibuat lewat Unduh denah (JSON), tetapi cadangan ini tidak memuat kata sandi guru atau persetujuan. LUPA KATA SANDI GURU Melalui pengelola database hosting, hapus baris teacher_password dari tabel settings, lalu buka setup.php untuk membuat kata sandi baru. Ini tidak menghapus susunan atau persetujuan siswa. Gunakan akses pengelolaan hosting yang hanya dimiliki guru. FILE index.php — halaman utama api.php — API database bersama bootstrap.php — koneksi, validasi, persetujuan, keamanan data setup.php — konfigurasi kata sandi guru sekali saat awal config.php — pilihan SQLite/MySQL dan lokasi database seed.php — data awal 25 nama siswa dan kursi assets/ — CSS dan JavaScript .htaccess — halaman awal dan pembatasan file internal pada Apache PAKET INI UNTUK HOSTING PHP Tidak bisa langsung diunggah sebagai website statis ke GitHub Pages, Netlify static, atau Vercel static. Untuk platform tersebut dibutuhkan backend terpisah. Buka lewat URL hosting, bukan dengan mengklik file PHP di komputer.