Olá. Tenho uma página com um formulário para cadastrar uma nova dentro de do painel admin mas ele não cadastra as infos no banco, refiz a conexão toda mas não registra. Se alguém puder me ajudar ficarei muito agradecido. Irei inserir todos os codigos que estou usando.
<?php
// aqui vai validar se esses campos foram preenchidos
if(!empty($_POST['titulo']) && !empty($_POST['previa']) && !empty($_POST['texto']) && !empty($_POST['acao'])) {
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, é o campo acao
* veja que já chamou a classe acima e já instanciou ela, então não precisa chamar mais
* 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':
{
/*
* atribui os valores as variaveis. falta o upload da imagem e os outros campos
* nas linhas de baixo você vai atribuir as variaveis aos objetos da classe, titulo, previa, texto, ....
*/
$classNoticias->titulo = $_POST['titulo'];
$classNoticias->previa = $_POST['previa'];
$classNoticias->texto = $_POST['texto'];
$classNoticias->fixa = $_POST['fixa'];
$classNoticias->status = $_POST['status'];
$classNoticias->imagem = $_POST['imagem'];
/*
* Verifica se fez o upload da imagem
*/
$mensagemExiste = 'N';
if (!empty($_FILES['imagem']['tmp_name'])) {
$extensao = pathinfo($_FILES['imagem']['name'], PATHINFO_EXTENSION);
$mensagemExiste = 'S';
if (array_search(strtolower($extensao, ['jpg', 'png', 'jpeg'])) == true) {
$nomeImagem = md5(date('dmYHis')) . '.' . $extensao;
/*
* verifica se conseguiu fazer a copia/salvamento da imagem
*/
if (move_uploaded_file(RAIZ_SITE . '/images/noticias/' . $nomeImagem, $_FILES['imagem']['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) {
/*
* poderia ser qualquer valor para a variavel $menagemExiste apenas pra identificar as condicoes e mostrar
* as informacoes corretas ao tentar salvar a imagem/noticia
*/
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;
}
$_SESSION['MSG_RETORNO'] = ['tipo' => 'success', 'titulo' => 'Sucesso!', 'mensagem' => $txt];
} else {
$_SESSION['MSG_RETORNO'] = ['tipo' => 'error', 'titulo' => 'Erro!', 'mensagem' => 'Erro ao gravar a noticia, por favor, tente novamente.'];
}
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
$_SESSION['MSG_RETORNO'] = ['tipo' => 'warning','titulo' => 'Atenção!', 'mensagem' => 'Por favor, preencha todos os campos e tente novamente.'];
header('LOCATION:/admin/noticiaNovo.php');
die();
}
/*
* Note que são os mesmos campos do array criado aqui, serao utilizados na pagina de cadsatro de noticias
*
*/
classNoticias.php
<?php
require_once $_SERVER['DOCUMENT_ROOT'] . 'connectMysql.php';
include_once $_SERVER['DOCUMENT_ROOT'] . '/admin/Beans/Noticias.php';
class classNoticias extends connectMysql
{
public $titulo = '';
public $texto = '';
public $previa = '';
public $imagem = '';
public $data = '';
public $status = '';
public $fixa = '';
public $codNoticia = '';
/**
* classNoticias constructor.
*/
public function __construct()
{
}
/**
* @return array
*/
public function editaNoticia()
{
$query = $this->executeQuery("UPDATE noticias SET titulo = '" . addslashes(utf8_decode($this->titulo)) . "',
texto = '" . addslashes(utf8_decode($this->texto)) . "',
previa = '" . addslashes(utf8_decode($this->previa)) . "',
imagem = '" . $this->imagem . "',
NOW(),
status = '" . $this->status . "',
fixaTopo = '" . $this->fixa . "',
WHERE codNoticia = '" . (int)$this->codNoticia . "'
LIMIT 1");
if ($query == true) {
return ['tipo' => 'sucess', 'titulo' => 'Sucesso!', 'mensagem' => 'Noticia modificada!'];
} else {
return ['tipo' => 'error', 'titulo' => 'Erro!', 'mensagem' => 'Erro ao fazer a edição, tente novamente'];
}
}
public function listaNoticias()
{
$query = $this->executeQuery("SELECT * FROM noticias WHERE codNoticia = " . (int)$this->codNoticia . "LIMIT 1");
$return = [];
if ($sql = $query->fetch_array()) {
$return[] = [
'titulo' => utf8_encode($sql['titulo']),
'texto' => utf8_encode($sql['texto']),
'previa' => utf8_encode($sql['previa']),
'imagemDestaque' => utf8_encode($sql['imagemDestaque']),
'dataPostagem' => utf8_encode($sql['dataPostagem']),
'status' => utf8_encode($sql['status']),
'fixaTopo' => utf8_encode($sql['fixaTopo'])
];
}
return $return;
}
public function cadastrarNovaNoticia(Noticias $noticias)
{
if ($noticias->getFixaTopo() == 'S') {
$this->execute("UPDATE noticias SET fixa = 'X'");
}
$sql = "INSERT INTO noticias (titulo, texto, previa, imagem, dataPostagem, status, fixaTopo)
VALUES ('" . addslashes(utf8_decode($this->titulo)) . "',
'" . addslashes(utf8_decode($this->texto)) . "',
'" . addslashes(utf8_decode($this->previa)) . "',
'" . addslashes(utf8_decode($this->imagem)) . "',
NOW(),
'" . addslashes(utf8_decode($this->status)) . "',
'" . addslashes(utf8_decode($this->fixa)) . "')";
return $this->executeQuery($sql);
}
}
connectMysql.php
<?php
class connectMysql
{
private $host = 'localhost';
private $user = 'root';
private $password = 'Be15se90@';//'admin';
private $banco = 'siteNovoCoopama';
private $mysqli = '';
private $insertId = '';
public function __construct(){
}
function newConexao($banco = 'siteNovoCoopama'){
$host = 'localhost';
$user = 'root';
$password = 'Be15se90@';
$conn = new mysqli($host, $user, $password, $banco);
if ($conn->connect_error){
die("Erro: ") . $conn->connect_error;
}
return $conn;
}
private function mysqlConnect()
{
$this->mysqli = new mysqli($this->host, $this->user, $this->password, $this->banco);
if (mysqli_connect_error()) {
die('FATAL ERROR: Can not connect to SQL Server.');
exit();
}
}
public function executeQuery($query)
{
$this->mysqlConnect();
$query = mysqli_real_escape_string($this->mysqli, $query);
$this->result = $this->mysqli->query($query);
//$this->insertId = mysqli_insert_id();
Pergunta
rafaelpereirap
Olá. Tenho uma página com um formulário para cadastrar uma nova dentro de do painel admin mas ele não cadastra as infos no banco, refiz a conexão toda mas não registra. Se alguém puder me ajudar ficarei muito agradecido. Irei inserir todos os codigos que estou usando.
noticiaNovo.php
acaoNoticias.php
classNoticias.php
connectMysql.php
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.