240 lines
9.2 KiB
PHP
240 lines
9.2 KiB
PHP
|
<?php
|
||
|
$conn = new mysqli("localhost", "root", "", "tabela");
|
||
|
if ($conn->connect_error) {
|
||
|
die("Conexão falhou: " . $conn->connect_error);
|
||
|
}
|
||
|
|
||
|
// Definir senha de administração
|
||
|
define('ADMIN_PASSWORD', 'senha123');
|
||
|
|
||
|
function verificarSenha() {
|
||
|
if (!isset($_POST['senha']) || $_POST['senha'] !== ADMIN_PASSWORD) {
|
||
|
header("Location: index.php?view=tabela&error=2");
|
||
|
exit();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function displayTeams($conn) {
|
||
|
$ordenar_por = isset($_GET['ordenar']) ? $conn->real_escape_string($_GET['ordenar']) : 'pontos';
|
||
|
$ordem = isset($_GET['ordem']) && $_GET['ordem'] === 'asc' ? 'ASC' : 'DESC';
|
||
|
$busca = isset($_GET['busca']) ? $conn->real_escape_string($_GET['busca']) : '';
|
||
|
$filtro = $busca ? "WHERE nome LIKE '%$busca%'" : '';
|
||
|
|
||
|
$sql = "SELECT * FROM times $filtro ORDER BY $ordenar_por $ordem, saldo_gols DESC, gols_pro DESC";
|
||
|
$result = $conn->query($sql);
|
||
|
|
||
|
if ($result->num_rows > 0) {
|
||
|
$pos = 1;
|
||
|
while ($row = $result->fetch_assoc()) {
|
||
|
$nome_time = $row['nome'];
|
||
|
$nome_arquivo = preg_replace('/[^a-zA-Z0-9]/', '', strtolower(iconv('UTF-8', 'ASCII//TRANSLIT', $nome_time)));
|
||
|
$caminho_escudo = "escudos/$nome_arquivo.png";
|
||
|
if (!file_exists($caminho_escudo)) {
|
||
|
$caminho_escudo = "escudos/escudo-generico.png";
|
||
|
}
|
||
|
|
||
|
echo "<tr>";
|
||
|
echo "<td>{$pos}</td>";
|
||
|
echo "<td><div style='display: flex; align-items: center; justify-content: center; gap: 10px;'>";
|
||
|
echo "<img src='{$caminho_escudo}' class='escudo' alt='{$row['nome']}'>";
|
||
|
echo $row['nome'];
|
||
|
echo "</div></td>";
|
||
|
echo "<td>{$row['pontos']}</td>";
|
||
|
echo "<td>{$row['jogos']}</td>";
|
||
|
echo "<td>{$row['vitorias']}</td>";
|
||
|
echo "<td>{$row['empates']}</td>";
|
||
|
echo "<td>{$row['derrotas']}</td>";
|
||
|
echo "<td>{$row['gols_pro']}</td>";
|
||
|
echo "<td>{$row['gols_contra']}</td>";
|
||
|
echo "<td>{$row['saldo_gols']}</td>";
|
||
|
echo "<td>{$row['aproveitamento']}</td>";
|
||
|
echo "<td class='ultimos-jogos'>";
|
||
|
foreach (explode(",", $row['ultimos_jogos']) as $res) {
|
||
|
if ($res) echo "<span class='$res'></span>";
|
||
|
}
|
||
|
echo "</td></tr>";
|
||
|
$pos++;
|
||
|
}
|
||
|
} else {
|
||
|
echo "<tr><td colspan='12'>Nenhum dado encontrado.</td></tr>";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function displayGames($conn, $rodada) {
|
||
|
$sql = "SELECT * FROM historico_jogos WHERE rodada = $rodada ORDER BY data_jogo";
|
||
|
$result = $conn->query($sql);
|
||
|
if ($result->num_rows > 0) {
|
||
|
while ($row = $result->fetch_assoc()) {
|
||
|
$data = new DateTime($row['data_jogo']);
|
||
|
$diaSemana = $data->format('l');
|
||
|
$diaSemana = str_replace(
|
||
|
['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
|
||
|
['Dom', 'Seg', 'Ter', 'Qua', 'Qui', 'Sex', 'Sáb'],
|
||
|
$diaSemana
|
||
|
);
|
||
|
|
||
|
// Obter caminhos dos escudos
|
||
|
$nome_casa = preg_replace('/[^a-zA-Z0-9]/', '', strtolower(iconv('UTF-8', 'ASCII//TRANSLIT', $row['time_casa'])));
|
||
|
$nome_visitante = preg_replace('/[^a-zA-Z0-9]/', '', strtolower(iconv('UTF-8', 'ASCII//TRANSLIT', $row['time_visitante'])));
|
||
|
$escudo_casa = file_exists("escudos/$nome_casa.png") ? "escudos/$nome_casa.png" : "escudos/escudo-generico.png";
|
||
|
$escudo_visitante = file_exists("escudos/$nome_visitante.png") ? "escudos/$nome_visitante.png" : "escudos/escudo-generico.png";
|
||
|
|
||
|
echo "<div class='jogo-item'>";
|
||
|
echo "<div class='jogo-rodada'>Rodada {$row['rodada']}</div>";
|
||
|
echo "<div class='jogo-times'>";
|
||
|
echo "<div class='time-com-escudo'><img src='$escudo_casa' class='escudo-jogo' alt='{$row['time_casa']}'> {$row['time_casa']}</div>";
|
||
|
if ($row['gols_casa'] !== null && $row['gols_visitante'] !== null) {
|
||
|
echo "<div class='jogo-placar'>";
|
||
|
echo "<span>{$row['gols_casa']}</span>";
|
||
|
echo "<span>X</span>";
|
||
|
echo "<span>{$row['gols_visitante']}</span>";
|
||
|
echo "</div>";
|
||
|
} else {
|
||
|
echo "<div class='jogo-placar'><span>X</span></div>";
|
||
|
}
|
||
|
echo "<div class='time-com-escudo'><img src='$escudo_visitante' class='escudo-jogo' alt='{$row['time_visitante']}'> {$row['time_visitante']}</div>";
|
||
|
echo "</div>";
|
||
|
echo "<div class='jogo-info'>";
|
||
|
echo "<span>{$data->format('d/m')} - {$diaSemana}</span>";
|
||
|
echo "<span>{$data->format('H:i')}</span>";
|
||
|
echo "</div>";
|
||
|
echo "</div>";
|
||
|
}
|
||
|
} else {
|
||
|
echo "<p>Nenhum jogo cadastrado para a rodada $rodada.</p>";
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function saveGameResult($conn) {
|
||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_GET['action']) && $_GET['action'] === 'save') {
|
||
|
verificarSenha();
|
||
|
|
||
|
$jogo_id = (int)$_POST['jogo_id'];
|
||
|
$gols_casa = (int)$_POST['gols_casa'];
|
||
|
$gols_visitante = (int)$_POST['gols_visitante'];
|
||
|
|
||
|
// Verificar se o jogo existe
|
||
|
$sql = "SELECT time_casa, time_visitante, rodada FROM historico_jogos WHERE id = $jogo_id AND gols_casa IS NULL AND gols_visitante IS NULL";
|
||
|
$result = $conn->query($sql);
|
||
|
if ($result->num_rows === 0) {
|
||
|
header("Location: lancar.php?error=3");
|
||
|
exit();
|
||
|
}
|
||
|
$jogo = $result->fetch_assoc();
|
||
|
$time_casa = $conn->real_escape_string($jogo['time_casa']);
|
||
|
$time_visitante = $conn->real_escape_string($jogo['time_visitante']);
|
||
|
$rodada = (int)$jogo['rodada'];
|
||
|
|
||
|
// Atualizar o jogo com os resultados
|
||
|
$sql_update = "UPDATE historico_jogos SET gols_casa = $gols_casa, gols_visitante = $gols_visitante WHERE id = $jogo_id";
|
||
|
if (!$conn->query($sql_update)) {
|
||
|
die("Erro ao registrar resultado: " . $conn->error);
|
||
|
}
|
||
|
|
||
|
// Função para atualizar estatísticas
|
||
|
function atualizarEstatisticas($conn, $time, $gols_pro, $gols_contra, $resultado) {
|
||
|
$pontos = 0;
|
||
|
$vitorias = 0;
|
||
|
$empates = 0;
|
||
|
$derrotas = 0;
|
||
|
switch ($resultado) {
|
||
|
case 'v':
|
||
|
$pontos = 3;
|
||
|
$vitorias = 1;
|
||
|
break;
|
||
|
case 'e':
|
||
|
$pontos = 1;
|
||
|
$empates = 1;
|
||
|
break;
|
||
|
case 'd':
|
||
|
$derrotas = 1;
|
||
|
break;
|
||
|
}
|
||
|
$sql = "UPDATE times SET
|
||
|
pontos = pontos + $pontos,
|
||
|
jogos = jogos + 1,
|
||
|
vitorias = vitorias + $vitorias,
|
||
|
empates = empates + $empates,
|
||
|
derrotas = derrotas + $derrotas,
|
||
|
gols_pro = gols_pro + $gols_pro,
|
||
|
gols_contra = gols_contra + $gols_contra,
|
||
|
saldo_gols = saldo_gols + ($gols_pro - $gols_contra),
|
||
|
ultimos_jogos = CONCAT('$resultado,', IFNULL(ultimos_jogos, ''))
|
||
|
WHERE nome = '$time'";
|
||
|
if (!$conn->query($sql)) {
|
||
|
die("Erro ao atualizar estatísticas do time $time: " . $conn->error);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Atualizar estatísticas com base no resultado
|
||
|
if ($gols_casa > $gols_visitante) {
|
||
|
atualizarEstatisticas($conn, $time_casa, $gols_casa, $gols_visitante, 'v');
|
||
|
atualizarEstatisticas($conn, $time_visitante, $gols_visitante, $gols_casa, 'd');
|
||
|
} elseif ($gols_casa == $gols_visitante) {
|
||
|
atualizarEstatisticas($conn, $time_casa, $gols_casa, $gols_visitante, 'e');
|
||
|
atualizarEstatisticas($conn, $time_visitante, $gols_visitante, $gols_casa, 'e');
|
||
|
} else {
|
||
|
atualizarEstatisticas($conn, $time_casa, $gols_casa, $gols_visitante, 'd');
|
||
|
atualizarEstatisticas($conn, $time_visitante, $gols_visitante, $gols_casa, 'v');
|
||
|
}
|
||
|
|
||
|
// Atualizar aproveitamento
|
||
|
$conn->query("UPDATE times SET aproveitamento = ROUND((pontos / (jogos * 3)) * 100) WHERE jogos > 0");
|
||
|
header("Location: lancar.php?success=1");
|
||
|
exit();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
function saveNextGame($conn) {
|
||
|
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_GET['action']) && $_GET['action'] === 'save_next') {
|
||
|
verificarSenha();
|
||
|
|
||
|
// Verifica se todos os campos necessários foram enviados
|
||
|
if (!isset($_POST['time_casa']) || !isset($_POST['time_visitante']) || !isset($_POST['rodada']) || !isset($_POST['data_jogo'])) {
|
||
|
header("Location: cadastro.php?error=5");
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
$time_casa = $conn->real_escape_string($_POST['time_casa']);
|
||
|
$time_visitante = $conn->real_escape_string($_POST['time_visitante']);
|
||
|
$rodada = (int)$_POST['rodada'];
|
||
|
$data_jogo = $conn->real_escape_string($_POST['data_jogo']);
|
||
|
|
||
|
// Validações
|
||
|
if ($time_casa === $time_visitante) {
|
||
|
header("Location: cadastro.php?error=1");
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
if ($rodada < 1) {
|
||
|
header("Location: cadastro.php?error=6");
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
if (!strtotime($data_jogo)) {
|
||
|
header("Location: cadastro.php?error=4");
|
||
|
exit();
|
||
|
}
|
||
|
|
||
|
// Formata a data para o formato MySQL
|
||
|
$data_formatada = date('Y-m-d H:i:s', strtotime($data_jogo));
|
||
|
|
||
|
$sql = "INSERT INTO historico_jogos (time_casa, time_visitante, rodada, data_jogo)
|
||
|
VALUES ('$time_casa', '$time_visitante', $rodada, '$data_formatada')";
|
||
|
|
||
|
if ($conn->query($sql)) {
|
||
|
header("Location: cadastro.php?success=2");
|
||
|
} else {
|
||
|
// Adiciona mensagem de erro mais detalhada
|
||
|
$error_msg = urlencode("Erro ao cadastrar jogo: " . $conn->error);
|
||
|
header("Location: cadastro.php?error=7&detail=" . $error_msg);
|
||
|
}
|
||
|
exit();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Handle game result saving
|
||
|
saveGameResult($conn);
|
||
|
// Handle next game saving
|
||
|
saveNextGame($conn);
|
||
|
?>
|