Gostaria que alguém me ajudasse a encontrar erro num código. Estou fazendo um curso na net, e tentando adaptar o código que funciona para ir aprimorando a aprendizagem. Então vou colocar dois códigos aqui, onde um funciona o outro não. O que funciona é o do curso com mais campos. O que fiz foi apenas adaptar esse código que funciona para uma quantidade bem menor, e ver se funciona. Os dois códigos abre o formulário, aparentemente consultam o banco com sucesso, porém só o original está alterando, certamente por algum erro meu. Mas já olhei trocentas vezes, postei dúvida lá no curso, e o cara não responde, então tô parado na aprendizagem por conta disso. Basicamente é um formulário de cadastro de transportadoras onde o usuário altera os dados de uma transportadora através desse formulário. Esse tá funcionando tudo certinho. Tentei reproduzir esse mesmo formulário, porém apenas com dois campos (cidade e estado), e mesmo assim não funciona. Lista certinho, mas não altera, por isso acho que é um erro simples. Segue os dois códigos pra que comparem:
CÓDIGO QUE FUNCIONA:
<?php require_once("conexao/conexao.php"); ?>
<?php
if (isset($_POST["nometransportadora"])){
$nome = utf8_decode($_POST["nometransportadora"]);
$endereco = utf8_decode($_POST["endereco"]);
$cidade = utf8_decode($_POST["cidade"]);
$estado = $_POST["estados"];
$cep = $_POST["cep"];
$cnpj = $_POST["cnpj"];
$telefone = $_POST["telefone"];
$tID = $_POST["transportadoraID"];
// CRIAR O OBJETO PARA ALTERAR
$alterar = "UPDATE transportadoras ";
$alterar .= "SET ";
$alterar .= "nometransportadora = '{$nome}', ";
$alterar .= "endereco = '{$endereco}', ";
$alterar .= "cidade = '{$cidade}', ";
$alterar .= "estadoID = {$estado}, ";
$alterar .= "cep = '{$cep}', ";
$alterar .= "cnpj = '{$cnpj}', ";
$alterar .= "telefone = '{$telefone}' ";
$alterar .= "WHERE transportadoraID = {$tID}";
$operacao_alterar = mysqli_query($conecta, $alterar);
if (!$operacao_alterar){
die("Erro na alteração!");
}else {
header("location: listagem2.php");
}
}
// Consulta a tabela de transportadoras.
$tr = "SELECT * ";
$tr .= "FROM transportadoras ";
if (isset($_GET["codigo"])){
$id = $_GET["codigo"];
$tr .= "WHERE transportadoraID = {$id} ";
}else {
$tr .= "WHERE transportadoraID = 1 ";
}
$con_transportadora = mysqli_query($conecta, $tr);
if (!$con_transportadora){
die("Erro na consulta");
}
$info_transportadora = mysqli_fetch_assoc($con_transportadora);
// Consulta aos estados
$estados = "SELECT * ";
$estados .= "FROM estados ";
$lista_estados = mysqli_query($conecta, $estados);
if (!$lista_estados){
die("erro no banco");
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Curso PHP INTEGRACAO</title>
<!-- estilo -->
<link href="_css/estilo.css" rel="stylesheet">
<link href="_css/alteracao.css" rel="stylesheet">
</head>
<body>
<?php include_once("_incluir/topo.php"); ?>
<main>
<div id="janela_formulario">
<form action="alteracao.php" method = "post">
<h2>Alteração de Transportadoras</h2>
<label for="nometransportadora">Nome da Transportadora</label>
<input type = "text" value = "<?php echo utf8_encode( $info_transportadora["nometransportadora"]) ?>" name = "nometransportadora" id = "nometransportadora">
<label for="endereco">Endereço</label>
<input type = "text" value = "<?php echo utf8_encode( $info_transportadora["endereco"]) ?>" name = "endereco" id = "endereco">
<label for="cidade">Cidade</label>
<input type = "text" value = "<?php echo utf8_encode( $info_transportadora["cidade"]) ?>" name = "cidade" id = "cidade">
<label for="estados">Estados</label>
<select id = "estados" name = "estados">
<?php
$meuestado = $info_transportadora["estadoID"];
while ($linha = mysqli_fetch_assoc($lista_estados)){
$estado_principal = $linha["estadoID"];
if ($meuestado == $estado_principal){
?>
<option value="<?php echo $linha["estadoID"] ?>" selected>
<?php echo utf8_encode($linha ["nome"]) ?>
</option>
<?php
} else {
?>
<option value="<?php echo $linha["estadoID"] ?>">
<?php echo utf8_encode($linha ["nome"]) ?>
</option>
<?php
}
}
?>
</select>
<label for="cep">CEP</label>
<input type = "text" value = "<?php echo ( $info_transportadora["cep"]) ?>" name = "cep" id = "cep">
<label for="telefone">Telefone</label>
<input type = "text" value = "<?php echo utf8_encode( $info_transportadora["telefone"]) ?>" name = "telefone" id = "telefone">
<label for="cnpj">CNPJ</label>
<input type = "text" value = "<?php echo utf8_encode( $info_transportadora["cnpj"]) ?>" name = "cnpj" id = "cnpj">
<input type = "hidden" name = "transportadoraID" value = "<?php echo $info_transportadora["transportadoraID"] ?>">
<input type = "submit" value="Confirmar Alteração">
</form>
</div>
</main>
<?php include_once("_incluir/rodape.php"); ?>
</body>
</html>
CÓDIGO QUE NÃO FUNCIONA. (Lista tudo certinho, mas não altera, nem traz o estádo pré-checado).
<?php require_once("conexao/conexao.php"); ?>
<?php
if( isset($_POST["nomeCidade"]) ) {
$nomeCidade = utf8_decode($_POST["nomeCidade"]);
$estado = $_POST["estados"];
$cID = $_POST["cidadeID"];
// Objeto para alterar
$alterar = "UPDATE cidades ";
$alterar .= "SET ";
$alterar .= "nomeCidade = '{$nomeCidade}', ";
$alterar .= "estadoID = {$estado} ";
$alterar .= "WHERE cidadeID = {$cID} ";
$operacao_alterar = mysqli_query($conecta, $alterar);
if(!$operacao_alterar) {
die("Erro na alteracao");
} else {
header("location:alterarCidades.php");
}
}
// Consulta a tabela de cidades
$tr = "SELECT * ";
$tr .= "FROM cidades ";
if(isset($_GET["codigo"]) ) {
$id = $_GET["codigo"];
$tr .= "WHERE cidadeID = {$id} ";
} else {
$tr .= "WHERE cidadeID = 1 ";
}
$con_cidade = mysqli_query($conecta,$tr);
if(!$con_cidade) {
die("Erro na consulta");
}
$info_cidade = mysqli_fetch_assoc($con_cidade);
// consulta aos estados
$estados = "SELECT * ";
$estados .= "FROM estados ";
$lista_estados = mysqli_query($conecta, $estados);
if(!$lista_estados) {
die("erro no banco");
}
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Alteração Cidades</title>
<!-- estilo -->
<link href="_css/estilo.css" rel="stylesheet">
<link href="_css/alteracao.css" rel="stylesheet">
</head>
<body>
<?php include_once("_incluir/topo.php"); ?>
<main>
<div id="janela_formulario">
<form action="alteracaoCidades.php" method="post">
<h2>Alteração de Cidades</h2>
<label for="nomeCidade">Nome da Cidade</label>
<input type="text" value="<?php echo utf8_encode($info_cidade["nomeCidade"]) ?>" name="nomeCidade" id="nomeCidade">
<label for="estados">Estados</label>
<select id="estados" name="estados">
<?php
$meuestado = $info_cidade["estadoID"];
while($linha = mysqli_fetch_assoc($lista_estados)) {
$estado_principal = $linha["estadoID"];
if($meuestado == $estado_principal) {
?>
<option value="<?php echo $linha["estadoID"] ?>" selected>
<?php echo utf8_encode($linha["nome"]) ?>
</option>
<?php
} else {
?>
<option value="<?php echo $linha["estadoID"] ?>" >
<?php echo utf8_encode($linha["nome"]) ?>
</option>
<?php
}
}
?>
</select>
<input type="hidden" name="cidadeID" value="<?php echo $info_cidade["cidadeID"] ?>">
<input type="submit" value="Confirmar alteração">
</form>
</div>
</main>
<?php include_once("_incluir/rodape.php"); ?>
</body>
</html>