Formulário PHP para salvar informações e imagens

30/03/2021

0

Olá, estou criando um formulário que adiciona novas noticias a um site. Pois bem, criei vários cases sobre o resultado do formulário submetido e cai em dois que não estou conseguindo tratar: 1º a noticia era salva mas não a imagem, ela não registra no banco nem salva na pasta indicada. Tentando resolver isso cheguei ao 2º case que é um erro geral ao salvar a noticia "Erro ao salvar a notícia, por favor volte e verifique". Se alguém puder me ajudar, estou a dias batendo cabeça e não consigo resolver. Abaixo seguem os códigos:

acaoNoticia.php
<?php
$titulo = 'Atenção!';
$mensagem = 'Houve um erro ao acessar esta página, por favor, tente novamente.';
$tipo = 'warning';
$html = '';
if(!empty($_POST['acao'])){
require_once '../../_constantes.php';
require_once RAIZ_SITE_ADMIN . '/Classes/classNoticias.php';
$classNoticias = new classNoticias();
/*
* diminuir a quantidade de arquivos dessa forma
* utiliza um arquivo desse pra cada modulo (noticas textos, ..)
* o que vai determinar o que sera feito, eh o campo acao
* o que estiver dentro do switch case, vai ser executado de acordo com o valor da acao
*/
$conn = new mysqli(HOST, USER, SENHA, BD);
switch ($_POST['acao']) {
/*
* se for uma nova noticia entra neste case
*/
case 'novaNoticia':
{
if(!empty($_POST['titulo']) && !empty($_POST['previa']) && !empty($_POST['texto'])) {
/*
* atribui os valores as variaveis. falta o upload da imagem e os outros campos
*/
$classNoticias->titulo = $_POST['titulo'];
$classNoticias->previa = $_POST['previa'];
$classNoticias->texto = $_POST['texto'];
$classNoticias->fixa = $_POST['fixa'];
$classNoticias->status = $_POST['status'];

/*
* Verifica se fez o upload da imagem
*/

$mensagemExiste = 'N';
if (!empty($_FILES['imagemDestaque'])) {
/*$extensao = pathinfo(substr($_FILES['imagemDestaque']['name'], PATHINFO_EXTENSION, -4));*/
$extensao = pathinfo($_FILES['imagemDestaque']['name'], PATHINFO_EXTENSION);
$mensagemExiste = 'S';
if (array_search(strtolower($extensao), ['jpg', 'png', 'jpeg']) == true) {
$nomeImagem = md5(date('dmYHis')) . '.' . $extensao;

if (move_uploaded_file(RAIZ_SITE . '/var/www/html/novoSiteCoopama/images/noticias' . $nomeImagem, $_FILES['imagemDestaque']['tmp_name']) == true) {
$mensagemExiste = 'V';
$classNoticias->imagem = $nomeImagem;
} else {
$mensagemExiste = 'X';
}
}


}
/*
* salva a noticia
*/
$retorno = $classNoticias->cadastrarNovaNoticia();

// retorno true ou false do insert
if ($retorno == true) {

switch ($mensagemExiste) {
case 'N':
$txt = 'Imagem não selecionada.';
break;
case 'S':
$txt = 'Noticia não gravada, confira novamente';
break;
case 'X':
$txt = 'Notícia gravada com sucesso mas houve um erro ao salvar a imagem.';
break;
case 'V':
$txt = 'Notícia gravada com sucesso.<br>Imagem armazenada com sucesso.';
break;
default:
$txt = 'Notícia gravada com sucesso mas sem imagem selecionada.';
break;
}
$tipo = 'success';
$titulo = 'Sucesso!';
$mensagem = $txt;
} else {
$tipo = 'error';
$titulo = 'Erro!';
$mensagem = 'Erro ao gravar a noticia, por favor, tente novamente.';
}

} else {
$mensagem = 'Por favor, preencha todos os campos para gravar sua notícia.';
}

break;

}


case 'listarNoticias': {
$sql = "SELECT codNoticia, titulo, previa, texto, dataPostagem, status, fixaTopo FROM noticias";
$conn = mysqliConnect();
$result = $conn->query($sql);

$registros = [];

if ($result->num_rows > 0){
while($row = $result->fetch_assoc()){
$registros[] = $row;
}
}elseif ($conn->error){
echo "Erro: " . $conn->error;
}
break;
}
case 'editarNoticias': {
break;
}
case 'localizarNoticia': {
break;
}
default:
echo "Erro: " . $conn->connect_error;
}
} else {
// caso tenha cmapo vazio, vai retornar para pagina de cadastro de noticias
$tipo = 'warning';
$titulo = 'Atenção!';
$mensagem = 'Por favor, preencha todos os campos e tente novamente.';
}

echo json_encode([
'titulo' => $titulo,
'tipo' => $tipo,
'mensagem' => $mensagem,
'html' => $html,
]);
Rafael

Rafael

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar