connect_error) { $conn = @new mysqli($host, $user, 'F2e9B7o2', $db); if ($conn->connect_error) die("Erro de conexão DB"); } $conn->set_charset("utf8mb4"); // 2. GARANTE TABELA E DADOS $check = $conn->query("SHOW TABLES LIKE 'indicadores'"); if ($check->num_rows == 0) { $conn->query("CREATE TABLE indicadores (id BIGINT PRIMARY KEY, p TEXT, u TEXT, o TEXT, i TEXT, per TEXT, ten TEXT, um TEXT, metas LONGTEXT, realizado LONGTEXT)"); $conn->query("CREATE TABLE IF NOT EXISTS reports (id BIGINT AUTO_INCREMENT PRIMARY KEY, indicador_id BIGINT, texto TEXT, usuario VARCHAR(100), data_hora DATETIME DEFAULT CURRENT_TIMESTAMP)"); } // 3. API INTERNA if (isset($_GET['api'])) { if(ob_get_length()) ob_clean(); header("Content-Type: application/json"); $act = $_GET['api']; $input = json_decode(file_get_contents('php://input'), true); if ($act == 'get') { $res = $conn->query("SELECT * FROM indicadores ORDER BY id DESC"); $out = []; if($res) while($r = $res->fetch_assoc()) { $r['metas'] = json_decode($r['metas']) ?: new stdClass(); $r['realizado'] = json_decode($r['realizado']) ?: new stdClass(); $out[] = $r; } echo json_encode(["payload" => $out]); } if ($act == 'save') { foreach($input['payload'] as $i) { $id = $conn->real_escape_string($i['id']); $p = $conn->real_escape_string($i['p']); $u = $conn->real_escape_string($i['u']); $o = $conn->real_escape_string($i['o']); $ind = $conn->real_escape_string($i['i']); // Campos extras do seu original $per = isset($i['per']) ? $conn->real_escape_string($i['per']) : ''; $ten = isset($i['ten']) ? $conn->real_escape_string($i['ten']) : ''; $um = isset($i['um']) ? $conn->real_escape_string($i['um']) : ''; $m = $conn->real_escape_string(json_encode($i['metas'], JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK)); $r = $conn->real_escape_string(json_encode($i['realizado'], JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK)); $conn->query("INSERT INTO indicadores (id,p,u,o,i,per,ten,um,metas,realizado) VALUES ('$id','$p','$u','$o','$ind','$per','$ten','$um','$m','$r') ON DUPLICATE KEY UPDATE p='$p', u='$u', o='$o', i='$ind', per='$per', ten='$ten', um='$um', metas='$m', realizado='$r'"); } echo json_encode(["ok"=>true]); } if ($act == 'reports') { $id = $_GET['id']; $res = $conn->query("SELECT * FROM reports WHERE indicador_id='$id' ORDER BY id DESC"); $out = []; if($res) while($row = $res->fetch_assoc()) $out[] = $row; echo json_encode(["reports" => $out]); } if ($act == 'save_report') { $id = $input['id']; $txt = $conn->real_escape_string($input['texto']); $conn->query("INSERT INTO reports (indicador_id, texto, usuario) VALUES ('$id', '$txt', 'Admin')"); echo json_encode(["ok"=>true]); } exit; } ?> SEDET 360 - Monitoramento PEI com Reports
SEDET

Monitoramento PEI

Painel Estratégico

Unidade / Indicador 2025 2026 2027 2028 2029 2030 Evolução