file($f['tmp_name']); $allowed = ['image/png'=>'png','image/jpeg'=>'jpg','image/webp'=>'webp']; if (!isset($allowed[$mime])) throw new RuntimeException("Formato no permitido. Usa PNG/JPG/WEBP."); if ($f['size'] > 5*1024*1024) throw new RuntimeException("Archivo muy grande (máx 5MB)."); $ext = $allowed[$mime]; $base = sanitize_filename(pathinfo($f['name'], PATHINFO_FILENAME)); $name = $base.'-'.uniqid().'.'.$ext; $dest = rtrim($UPLOAD_DIR,'/\\').DIRECTORY_SEPARATOR.$name; if (!move_uploaded_file($f['tmp_name'],$dest)) throw new RuntimeException("No se pudo guardar el archivo."); return rtrim($PUBLIC_DIR,'/').'/'.$name; } // // Routing params // $action = $_GET['action'] ?? ''; $id = (int)($_GET['id'] ?? 0); $rasca_id = isset($_GET['rasca_id']) ? (int)$_GET['rasca_id'] : null; $msg = $err = ''; // // Form handling (solo si hay rasca_id seleccionado) // if ($rasca_id && $_SERVER['REQUEST_METHOD']==='POST') { $pid = (int)($_POST['id'] ?? 0); $rasca_id = (int)($_POST['rasca_id'] ?? 0); $nombre = trim($_POST['nombre'] ?? ''); $prob = (float)($_POST['probabilidad'] ?? 0); $stock = ($_POST['stock'] !== '' ? (int)$_POST['stock'] : null); $activo = isset($_POST['activo']) ? 1 : 0; $old_img = $_POST['old_imagen_url'] ?? ''; if ($rasca_id<=0 || $nombre==='') { $err = 'Indica rasca_id y nombre.'; } else { try { $img = upload_image('imagen',$UPLOAD_DIR,$PUBLIC_DIR) ?? ($old_img ?: null); if ($pid > 0) { $st = $conn->prepare("UPDATE rasca_premios SET rasca_id=?, nombre=?, probabilidad=?, stock=?, activo=?, imagen_url=? WHERE id=?"); // stock puede ser NULL: usa bind con "d" para probabilidad y "i" para stock; si es NULL, usa null y types "isdiisi" sigue válido porque mysqli convierte nulls $st->bind_param("isdiisi", $rasca_id, $nombre, $prob, $stock, $activo, $img, $pid); $st->execute(); $msg = 'Premio actualizado.'; } else { $st = $conn->prepare("INSERT INTO rasca_premios (rasca_id, nombre, probabilidad, stock, activo, imagen_url) VALUES (?,?,?,?,?,?)"); $st->bind_param("isdiis", $rasca_id, $nombre, $prob, $stock, $activo, $img); $st->execute(); $msg = 'Premio creado.'; } } catch (Throwable $e) { $err = $e->getMessage(); } } } // // Delete premio // if ($rasca_id && $action==='delete' && $id>0) { $st = $conn->prepare("DELETE FROM rasca_premios WHERE id=? AND rasca_id=?"); $st->bind_param("ii", $id, $rasca_id); $st->execute(); $msg = 'Premio eliminado.'; } // // Datos para vistas // $rasca_list = []; // para Vista 1 $rasca_info = null; // info del rasca seleccionado $edit = null; // en Vista 2, premio a editar $premios = []; // lista de premios del rasca if (!$rasca_id) { // Vista 1: listar rasca_config + conteo de premios $sql = "SELECT r.rasca_id, r.nombre, COALESCE(p.cnt,0) AS total_premios FROM rasca_config r LEFT JOIN ( SELECT rasca_id, COUNT(*) cnt FROM rasca_premios GROUP BY rasca_id ) p ON p.rasca_id = r.rasca_id ORDER BY r.rasca_id ASC"; $rs = $conn->query($sql); if ($rs) $rasca_list = $rs->fetch_all(MYSQLI_ASSOC); } else { // Vista 2: CRUD de premios para rasca_id $st = $conn->prepare("SELECT rasca_id, nombre FROM rasca_config WHERE rasca_id=?"); $st->bind_param("i", $rasca_id); $st->execute(); $rasca_info = $st->get_result()->fetch_assoc(); if ($action==='edit' && $id>0) { $st = $conn->prepare("SELECT * FROM rasca_premios WHERE id=? AND rasca_id=?"); $st->bind_param("ii", $id, $rasca_id); $st->execute(); $edit = $st->get_result()->fetch_assoc(); } $st = $conn->prepare("SELECT * FROM rasca_premios WHERE rasca_id=? ORDER BY id DESC"); $st->bind_param("i", $rasca_id); $st->execute(); $premios = $st->get_result()->fetch_all(MYSQLI_ASSOC); } ?> Rasca | Premios

Selecciona un juego de Rasca

Crear/editar Rasca
No hay juegos de rasca configurados todavía.
← Volver

Premios Rasca #

>
ID Nombre Prob Stock Activo Imagen Acciones
' : '—' ?> Editar Eliminar
Sin premios