Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola, estou tendo problemas com o cadastro de dados de um formulário no BD, ele gera o ID (auto increment), mas não insere os dados vindo do formulário no banco de dados.
Ja estou tão cego que não estou conseguindo achar o erro, alguém pode me dar uma força?
HTML
<form method="POST" action="proc_cad_faq.php" enctype="multipart/form-data">
<div class="form-group">
<label for="pergunta">Pergunta</label>
<input name="pergunta" type="text" class="form-control" id="pergunta" placeholder="Digite a Pergunta">
</div>
<div class="form-group">
<label for="resposta">Resposta</label>
<textarea name="resposta" class="form-control" id="resposta" rows="3" placeholder="Digite uma Resposta"></textarea>
</div>
<div class="form-group">
<div class="custom-control custom-checkbox">
<input name="status" type="checkbox" class="custom-control-input" id="ativo" value="ativo">
<label class="custom-control-label" for="ativo">Ativo</label>
</div>
</div>
<button type="submit" class="btn btn-primary">CADASTRAR</button>
</form>
PHP - 7.4
<?php
session_start();
include_once("../conexao/conexao.php");
$pergunta = filter_input(INPUT_POST, 'pergunta', FILTER_SANITIZE_STRING);
$resposta = filter_input(INPUT_POST, 'resposta', FILTER_SANITIZE_STRING);
$status = filter_input(INPUT_POST, 'status', FILTER_SANITIZE_STRING);
$result_faq = "INSERT INTO faq (pergunta, resposta, status, created) VALUES ('$pergunta', '$resposta', '$status', NOW())";
$resultado_faq = mysqli_query($conn, $result_faq);
if(mysqli_insert_id($conn)){
$_SESSION['msg_cad_faq'] = "<script>
Swal.fire({
icon: 'success',
title: 'SUCESSO!',
text: 'FAQ cadastrada com sucesso!',
showConfirmButton: true,
})
</script>";
header("Location: cadastrar_faq.php"); $_SESSION['msg_cad_faq'] = "<script>
Swal.fire({
icon: 'error',
title: 'ERRO!',
text: 'FAQ não cadastrada, tente novamente!'
})
});
});
</script>";
header("Location: cadastrar_faq.php");
}Boa tarde, Maurício,
O primeiro problema é o
<input name=status type=checkbox value="ativo">
O valor do checkbox é "on" ou "off", logo, no lugar do value="ativo" o correto é checked ou unchecked.
Você precisa ver se o campo status da tabela faq foi definido como varchar(3).
O segundo problema é o
session_start();
Não vejo nenhuma necessidade de usar a session para mandar mensagem ao usuário, isso pode ser feito diretamente na rotina de inclusão do registro, assim:
astudy.php
<div style=height:5%></div>
<div style="width:50%;margin:0 auto">
<form method=POST>
<input name=pergunta placeholder="Digite a Pergunta">
<p><textarea name=resposta rows=3 placeholder="Digite uma Resposta"></textarea>
<p>status<input name=status type=checkbox checked>
<p><input type=submit value=Cadastrar>
</form>
</div>
<?php
if(!isset($_POST['pergunta'])){exit;}
$pergunta=filter_input(INPUT_POST,'pergunta');
$resposta=filter_input(INPUT_POST,'resposta');
$status= filter_input(INPUT_POST,'status');
$mysqli=new mysqli("localhost","root","","astudy"); // usei no lugar de include 'conexao.php';
$query=$mysqli->query("insert into faq (pergunta, resposta, status, created)
values ('$pergunta','$resposta','$status',NOW())");
echo ($query) ? "Cadastrado com sucesso!" : $mysqli->error;
echo "<input type=submit value=Voltar onclick=location.replace('astudy.php')>";
Olá. Aqui tudo ok.
- siga essas orientações para exibir mensagens de erro:
https://forum.imasters.com.br/topic/542539-atenção-orientações-e-regras-do-fórum-de-php/