As I have reported
<?php
include_once($_SERVER['DOCUMENT_ROOT']."/cobranca/plano/funcoes.php");
include_once($_SERVER['DOCUMENT_ROOT']."/cobranca/utils/global_funcoes.php");
$dadosValido = true;
$arrayMensagemErros = array();
$plano = (isset($_GET['id'])) ? carregarDadosPlanoBanco($_GET['id']) : carregarDadosPlanoSessao();
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if(!validarCamposPreenchidosPlano($arrayMensagemErros)) {
if (isset($_POST['id'])) {
if (!is_numeric($_POST['id'])) {
die("O código é inválido");
}
$plano['id'] = $_POST['id'];
}
$plano['tipo_cobranca'] = limpaCampo($_POST['tipo_cobranca']);
$plano['valor'] = limpaCampo($_POST['valor']);
$plano['nome'] = limpaCampo($_POST['nome']);
empty($plano['id']) ? inserirPlano($plano) : editarPlano($plano);
header("Location: list.php");
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Cadastro de planos de cobrança</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" type="text/css" media="screen" href="../css/style.css" />
<script src="main.js"></script>
</head>
<body>
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="POST">
<div style="width: 600px;" class="elementoCentralizado">
<h1 class="elementoCentralizado">Cadastro dos planos de cobrança</h1>
<table border="1" style="margin-left: auto;margin-right: auto">
<tr>
<td>
<label for="nome">Nome:</label>
</td>
<td colspan="2">
<input type="text" name="nome" value="<?php echo preencheValue($plano['nome']);?>"/>
<span><?php echo retornaChave($arrayMensagemErros, 'nome'); ?></span>
</td>
</tr>
<tr>
<td>
<label for="tipo_cobranca">Tipo de cobrança:</label>
</td>
<td colspan="2">
<select name="tipo_cobranca" id="tipo_cobranca" value="<?php echo preencheValue($plano['nome']);?>">
<option value="M" <?php echo optionSelector($plano['tipo_cobranca'], "M"); ?>>Mensal</option>
<option value="A" <?php echo optionSelector($plano['tipo_cobranca'], "A"); ?>>Anual</option>
</select>
<span><?php echo retornaChave($arrayMensagemErros, 'tipo_cobranca'); ?></span>
</td>
</tr>
<tr>
<td>
<label for="valor">Valor:</label>
</td>
<td colspan="2">
<input type="text" name="valor" value="<?php echo preencheValue($plano['valor']);?>">
<span><?php echo retornaChave($arrayMensagemErros, 'valor'); ?></span>
</td>
</tr>
<tr>
<td class="elementoCentralizado">
<input type="reset" value="Limpar">
</td>
<td class="elementoCentralizado">
<div class="botao">
<a href="list.php">Cancelar</a>
</div>
</td>
<td class="elementoCentralizado">
<?php if (!empty($plano['id'])) :
echo "<input type='hidden' name='id' value='{$plano['id']}'>";
endif; ?>
<input type="submit" value="Salvar">
</td>
</tr>
</table>
</div>
</form>
</body>
</html>
Functions to search the database and if there is any validation problem, keep the data in session
function carregarDadosPlanoBanco($codigo) {
$conexao = conectarAoBanco();
$sql = "SELECT * FROM planos WHERE id = " . $codigo . ";";
$result = mysqli_query($conexao, $sql);
return mysqli_fetch_assoc($result);
}
function carregarDadosPlanoSessao() {
$plano['id'] = isset($_POST['id']) ? $_POST['id'] : "";
$plano['nome'] = isset($_POST['nome']) ? $_POST['nome'] : "";
$plano['tipo_cobranca'] = isset($_POST['tipo_cobranca']) ? $_POST['tipo_cobranca'] : "";
$plano['valor'] = isset($_POST['valor']) ? $_POST['valor'] : "";
return $plano;
}
Method to validate the data, detail, step the vector by reference so as not to lose it and keep the values.
function validarCamposPreenchidosPlano(&$arrayMensagemErros) {
$dadoInvalido = false;
if (empty($_POST['nome'])) {
$arrayMensagemErros['nome'] = "Preencha o campo Nome";
$dadoInvalido = true;
}
if (empty($_POST['tipo_cobranca'])) {
$arrayMensagemErros['tipo_cobranca'] = "Preencha o campo Tipo de cobrança";
$dadoInvalido = true;
}
if (empty($_POST['valor'])) {
$arrayMensagemErros['valor'] = "Preencha o campo Valor";
$dadoInvalido = true;
}
return $dadoInvalido;
}
And finally, if the insertion or editing is correct, I use the locate method
header("Location: list.php");