file($f['tmp_name']); $allowed=['image/png'=>'png','image/jpeg'=>'jpg','image/webp'=>'webp']; if(!isset($allowed[$mime])) throw new RuntimeException("Formato no permitido."); if($f['size']>5*1024*1024) throw new RuntimeException("Archivo muy grande (5MB)."); $ext=$allowed[$mime]; $base=sanitize_filename(pathinfo($f['name'],PATHINFO_FILENAME)); $fname=$base.'-'.uniqid().'.'.$ext; $dest=rtrim($UPLOAD_DIR,'/\\').DIRECTORY_SEPARATOR.$fname; if(!move_uploaded_file($f['tmp_name'],$dest)) throw new RuntimeException("No se pudo guardar $field."); return rtrim($PUBLIC_DIR,'/').'/'.$fname; } function all_juegos(mysqli $conn){ $res=$conn->query("SELECT juego_id, nombre FROM juegos_config ORDER BY juego_id ASC"); return $res->fetch_all(MYSQLI_ASSOC); } function get_carta(mysqli $conn,$id){ $stmt=$conn->prepare("SELECT * FROM cartas WHERE id=?"); $stmt->bind_param("i",$id); $stmt->execute(); return $stmt->get_result()->fetch_assoc(); } $msg=$err=''; $action=$_GET['action']??''; $id=(int)($_GET['id']??0); $juegos=all_juegos($conn); $juego_id=(int)($_GET['juego_id'] ?? ($juegos[0]['juego_id'] ?? 1)); // CREATE/UPDATE if ($_SERVER['REQUEST_METHOD']==='POST') { $cid=(int)($_POST['id']??0); $juego_id=(int)($_POST['juego_id']??0); $nombre=trim($_POST['nombre']??''); $activo=isset($_POST['activo'])?1:0; $old_front=$_POST['old_imagen_frontal']??''; $old_back =$_POST['old_imagen_trasera']??''; if ($juego_id<=0 || $nombre==='') { $err="Selecciona juego y nombre."; } else { try{ $new_front=upload_image('imagen_frontal',$UPLOAD_DIR,$PUBLIC_DIR); $new_back =upload_image('imagen_trasera',$UPLOAD_DIR,$PUBLIC_DIR); $front=$new_front?:($old_front?:null); $back =$new_back ?:($old_back ?:null); if ($cid>0) { $stmt=$conn->prepare("UPDATE cartas SET juego_id=?, nombre=?, imagen_frontal=?, imagen_trasera=?, activo=? WHERE id=?"); $stmt->bind_param("isssii",$juego_id,$nombre,$front,$back,$activo,$cid); $stmt->execute(); $msg="Carta actualizada."; } else { if(!$back){ throw new RuntimeException("La imagen trasera es obligatoria."); } $stmt=$conn->prepare("INSERT INTO cartas (juego_id,nombre,imagen_frontal,imagen_trasera,activo) VALUES (?,?,?,?,?)"); $stmt->bind_param("isssi",$juego_id,$nombre,$front,$back,$activo); $stmt->execute(); $msg="Carta creada."; } }catch(Throwable $e){ $err=$e->getMessage(); } } } // DELETE if ($action==='delete' && $id>0) { $stmt=$conn->prepare("DELETE FROM cartas WHERE id=?"); $stmt->bind_param("i",$id); $stmt->execute(); $msg="Carta eliminada."; } // EDIT $edit=null; if ($action==='edit' && $id>0) { $edit=get_carta($conn,$id); if($edit) $juego_id=(int)$edit['juego_id']; } // LIST $stmt=$conn->prepare("SELECT c.*, gc.nombre AS juego FROM cartas c LEFT JOIN juegos_config gc ON gc.juego_id=c.juego_id WHERE c.juego_id=? ORDER BY c.id DESC"); $stmt->bind_param("i",$juego_id); $stmt->execute(); $items=$stmt->get_result()->fetch_all(MYSQLI_ASSOC); ?> Memoria | Cartas

Cartas


>
IDJuegoNombreTraseraFrontalActivoAcciones
':'—' ?> ':'—' ?> Editar Eliminar
Sin cartas