Hoje falaremos sobre um tipo de sistema muito utilizado no dia a dia. O Sistema de Notícias.
Dificilmente você encontra matérias na Internet contendo um passo a passo completo e explicativo. Tem sim: vários sistemas disponíveis com código pronto para você apenas copiar.
Nesta matéria comentaremos as partes mais importantes de cada script, visando facilitar seu aprendizado.
Passo 1: Estrutura de pastas
Como alguns já sabem, gosto de focar os sistemas que desenvolvo de forma limpa, prática e organizada.
Por este motivo, apresentamos abaixo a estrutura utilizada nas pastas deste Sistema:
OBS.: Na pasta
Passo 2: Criando as Tabelas na Base de Dados:
Antes de partirmos para a programação, abra o arquivo script-sql.txt (disponível no arquivo em anexo) e cole seu conteúdo no Programa utilizado para gerenciamento da base de dados.
Em nossas matérias utilizamos como padrão o MySQLFront. Caso você queira utilizar este programa, clique em SQL Editor e cole o conteúdo do script (conforme imagem abaixo).
Passo 3: Script De Conexão
Tendo as pastas já criadas e as tabelas na base de dados geradas, você já pode dar início à Programação!
Crie o arquivo conexao.php e coloque dentro da pasta CONFIG.
Neste arquivo, você deverá disponibilizar o texto abaixo:
----- CONFIG.PHP ------
$database="localhost:3307"; // SERVIDOR E PORTA UTILIZADA
$dbname="tutorial"; // BASE DE DADOS
$usuario="root"; // USUÁRIO DO MYSQL
$dbsenha=""; // SENHA DO MYSQL
$conexao=mysql_connect ($database, $usuario, $dbsenha);
if($conexao){
if (mysql_select_db($dbname, $conexao)){ print "";
}else{ print "Não foi possível selecionar o Banco de Dados"; }
}else{ print "Erro ao conectar o MySQL"; }
?>
----------
Passo 4: Menu Gerencial – Formulário (index.php):
A página index.php apesar de ter uma aparência simples, é de fundamental importância para este sistema.
Através dela temos acesso ao menu gerencial!
OBS.: Para facilitar seus acessos, criamos o usuário abaixo:
Login: teste@teste.com – Senha: 123456
Passo 5: Menu Gerencial – Autenticação (autenticacao.rotinas.php):
Esta será a página onde faremos todo o gerenciamento de usuários, isto é: Diremos ao Sistema quem deve ou não ter acesso à Área Gerencial.
Bem… estamos disponibilizando um script simples de acesso, porém, caso seja de seu interesse, você poderá melhorar este código.
-----Linha 02 e 03 -----
session_start();
include ("../config/conexao.php");
------------
Talvez esta seja a parte mais importante do código, pois se você não tiver este conteúdo em seu código, ele simplesmente não vai registrar a sessão, nem permitir a conexão à base de dados.
-----Linha 06 à Linha 08 -----
$cliente_username = $_POST["usuario"];
$cliente_password = $_POST["senha"];
$enviado = $_POST["enviado"];
---------------
Através das linhas acima você receberá as variáveis com o nome do usuário, senha de acesso e o status (neste caso, utilizaremos a condição enviado para reforçar na segurança).
-----Linha 10 à Linha 29 -----
if ($enviado == "posted"){
if (!isset($cliente_username) or !isset($cliente_password)) { echo "Erro!"; exit; }
if (empty($cliente_username) or empty($cliente_password)) { echo "Dados inválidos!"; exit; }
$query = "select * from tbl_usuarios where email = '$cliente_username' and senha = '$cliente_password'";
$result = mysql_query($query);
$number = mysql_num_rows($result);
if ($number==0) { ?>
exit;
} else {
$_SESSION['usuario_id'] = mysql_result($result,0,'id');
$_SESSION['usuario_nome'] = mysql_result($result,0,'nome');
?>
}
mysql_close($conexao);
}
----------
Nas linhas acima o script fará uma validação completa, verificando se o usuário e a senha informado existem.
Antes disso, ele só fará a leitura se a variável $enviado (exemplo da linha 6 à linha 8) tiver o valor posted.
Caso este valor (que será passado através do método POST) não seja o informado, ele sequer fará a leitura no demais.
Nas linhas a seguir (após ele validar a variável $enviado) o script fará uma série de verificações, finalizando ao registrar as sessões para o ID e NOME do Usuário selecionado. Além disso ele fará seu direcionamento à página principal.php.
Passo 6: Menu Gerencial – Página Principal (principal.php):
Esta será a página principal do sistema, onde teremos acesso às demais a serem gerenciadas (conforme você pode ver na imagem abaixo).
OBS.: Apesar de também estar disponível no Sistema (no arquivo em anexo), para não tomar muito seu tempo, falaremos nesta matéria apenas dos itens Cadastrar Notícia e Listar Notícias.
Certamente os comentários diversos disponíveis nesta matéria sanarão qualquer dúvida que você tenha quanto aos demais arquivos.
-----Linha 02 à Linha 11 -----
session_start();
if (empty($_SESSION['usuario_id'])){
echo "Acesso negado!";
exit;
}else{
include('config/conexao.php');
$usuario_id = $_SESSION['usuario_id'];
$usuario_nome = $_SESSION['usuario_nome'];
}
------------
Neste trecho do script faremos uma validação!
Se o ID e NOME do usuário tiver em uso nsta sessão, ele deverá lhe dar acesso, caso não esteja em uso ele deverá restringir o acesso.
Fará acesso também ao script conexao.php (responsável pela conexão ao banco de dados).
Após isto, o sistema fará algumas verificações simples neste script, só atentando para o botão excluir (onde ele deverá direcionar seu acesso ao script logout.php (responsável pela exclusão da sessão).
Passo 7: Menu Gerencial – Cadastrar Notícia (noticias_cadastrar.php):
Esta é a página responsável pelo cadastro da notícia (conforme você pode ver na imagem disponível abaixo).
-----Linha 28 à Linha 35 -----
----------
O trecho acima chama os scripts responsáveis pelo funcionamento do Editor de Textos.
OBS.: Veja que ele chama os scripts a seguir: javascript.js, htmlarea.js, jscript.js e a pasta htmlarea.
-----Linha 46 -----
169 Responses
cara aqui o meu sistema não exclui a categoria… ele cita a msg em java dizendo que a categoria foi excluida, mas na realidade não foi…. ela permanece… tens alguma idéia de como arrumar?!
Sei que já faz tempo mas descobri o problema que a maioria estava tendo quanto ao login e tudo mais…
o autor usou as Short tag's do PHP <? ?> e por padrão alguns servidores locais como WAMP XAMP etc.. não vem habilitado essa opção. Ou seja basta habilitar as short tags e tudo volta a funcionar 😀
Olá amigo,
Como faço para deixar as notícia em ordem decrescente por data , pois quando cadastramos uma notícia ela fica em ultimo e deveria ficar em primeiro pois é a mais atual. Aguardo sua resposta.
Abraços
Poxa MUITO obrigado , sistema exelente !!
quando colo o script no Mysql front diz que tem erro de sintaxe em tbl_noticias line 1. Foi publicada já alguma correção?
Boas a todos.. Gostei bastante da simplicidade do script, por ser simples de compreender e facil de usar.
Alem de outros bugs, um dos problemas que reparei, foi mesmo o facto de nao estarem ordenadas por ordem decrescente na pagina principal.
Se alguem puder ajudar, ficaria muito agradecido.
Abraços
Olá amigo, Não concigo entrar no sistema (Autorização Inxistente/senha invalida ou expirada), porém as soluções mostradas , não serviram para resolver meu problema, continua igual.
Amigo, boa noite, baixei o script, porem o cadastrar uma notícia com texto com caracteres com acentos, não funciona, se cadastrar sem acentro funciona.
Exemplo: Avião
So aparece: Avi
Boas, seria possivél fazer upload de multiplas imagens em vez de ser so uma seria prai umas 3 ou 4…
Agradeçia resposta 🙂
Ae Amigos, eu uso wamp para aprender e como uso esses codigos no phpmyadmin?
pessoa gostaria de parabenizar o autor por este código excelente, estou tendo um probleminha só , o título,descrição das notícias estão retornando do banco de dados com os acentos errados por exemplo:
Abre novas inscri��es
como resolvo isso??
muito obrigado.
Eu solucionei este caso mudando a codificação da página para iso-8859-1
espero que resolva o seu problema.
Olá amigo, ótimo sistema, fácil e prático, os scripts são escritos para que um iniciante como eu possa entender bem e avançar nos estudo, por isso agradeço a atenção dispendida neste post. Gostaria de saber como fazer uma agenda de compromissos com calendário, se possível posta ai!!
Dário
Alguém resolveu o problema das ordens na qual as notícias aparecem?
Quando cadastro novas notícias a mais antiga que aparece na primeira linha. :/
Alguem conseguiu resolver, quando vai adicionar nova noticia, aparece em branco no Banco de Dados?
estou usando Ubuntu 11.04 php5.3.5, apache2.2.17, MySql 5.1.54
Boa noite pessoal, estou a utilizar esse excelente sistema de notícias porém estou tendo alguns problemas em cadastrar e editar tanto as notícias quanto as categorias. Recebo a mensagem em javascript dizendo que foi feito o cadastramento ou edição da noticia, porém isso não ocorre. É necessário da um CHMOD em algum arquivo ou pasta??? Poderiam me ajudar???
opa!! Primeiramente gostaria de parabenizar pelo artigo, muito bom. Em segundo gostaria de uma ajuda,
baixei o sistema no link informado e já mandei tudo para o servidor. Verificando as funcionalidades do mesmo percebi que o sistema não esta cadastrando e nem editando noticias, também não edita as categorias.
Poderiam me ajudar???
Oi, estou já há algum tempo tentando resolver este problema, mas ainda não consegui, será que alguem pode dar uma ajuda, quando tento fazer login aparece o alert de "Autorização inexistente/Senha inválida ou expirada", ja verifiquei inúmeras vezes o arquivo de conexão e está tudo certo, quando compilo o arquivo tenho o seguinte warning:
Warning: session_start(): Cannot send session cookie – headers already sent in C:Webserverwwwsistema-noticiasadminincautenticacao.rotinas_Temp.phpon line 2
Warning: session_start(): Cannot send session cache limiter – headers already sent (output started at C:Webserverwwwsistema-noticiasadminincautenticacao.rotinas_Temp.php:2) in C:Webserverwwwsistema-noticiasadminincautenticacao.rotinas_Temp.php on line 2
também não consigo cadastrar ou sequer visualizar as notícias previamente cadastradas no banco, se alguem puder ajudar fico grata!
BOA TARDE, EU COMECEI A FAZER UMA MODIFICAÇÃO NA INTERFACE DO SISTEMA SEM ALTERAR O SCRIPT DO BANCO, MAS NÃO ESTOU OBTENDO SUCESSO. eSTOU UTILIZANDO TAMBÉM, NO WAMPSERVER. SE VOCE PUDER ME ORIENTAR PARA CONSEGUIR RODAR O SISTEMA E ARMAZENAR NO BANCO EU LHE SEREI MUITO GRATO.
o sistema é muito bom mas notei uma falha. as noticias não são mostradas na ordem decrescente pois da forma que está a nticia mais atual acaba sendo a ultima da lista.
Se poderem resolver isto agradeço muito.
Bom dia a todos, como mencionei anteriormente, não consigo fazer a conexão do banco no sistema. Estou utilizando o wampserver. Gostaria que alguém pudesse me ajudar.
Pessoal, eu estou apanhando um pouco na importação do script para a criação dos itens no MySQL.
Segue mensagem de erro:
consulta SQL:
CREATE TABLE tbl_categorias_noticias(
id_categoria_noticia tinyint( 3 ) unsigned NOT NULL AUTO_INCREMENT ,
categoria varchar( 50 ) default NULL ,
PRIMARY KEY ( id_categoria_noticia ) ) TYPE = MYISAM ROW_FORMAT = DYNAMIC ;
Mensagens do MySQL :
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM ROW_FORMAT=DYNAMIC' at line 6
estou temdo problemas na hora de cadastrar e editar as noticias.
quando cadastro fica tudo em branco e quando edito as q coloquei direto no banco de dados nao faz alteração nenhuma, o erro é sempre no script_noticias até mesmo para excluir da erro mas mesno assim a noticia e excluida tambem o cadastro de categorias da erro mas mesmo assim cadastra se tiver como ver esses erros pra mim, aqui diz q o erro está na linha 29,45,114,134 e um monte de outros q não consigo ler.
não fiz alteraçoes no script porque ainda estou testando modifiquei apenas no arquivo noticias_visualizar porque eu nao estava conseguindo visualizar as noticias mas ja resolvi essa pagina mas a outra ta dificil.
bom se puder ajudar.
Estou com o mesmo problema =/
Alguem já resolveu o lance pra colocar em ordem aê ?
Em que a ultima noticia postada seja a primeira da lista… Não obtive sucesso –'
Olá consegui fazer isso basta você mudar o codigo da pagina index: $query_noticias = "select * from tbl_noticias mensagem where status = '1' limit 25";
por este: $query_noticias = "select * from tbl_noticias order by id_noticia desc";
ai fica na ordem de postagem!!
Qual arquivo index vc se refere??
Olá, eu não estou conseguindo executar o codigo sql, dá um erro referindo à linha q informa o tipo da primeira tabela (type=myisam). Estou usando o sql- front versao 5.1. Por favor me ajude
para mim não aparece nenhuma noticia , quando peço para exibilas
cara gostei desde sistema
mas nao ta funcionando aqui
oque dever estar acontecendo
me da uma ajuda ia
desde ja agradeço
Galera o meu esta aparecendo o seguinte erro alguem sabe me dizer o que pode ser? e como solucionar…
Notice: Use of undefined constant cadastrar_categoria – assumed 'cadastrar_categoria' in C:xampphtdocsnoticiasadminscript_noticias.php on line 29
Notice: Use of undefined constant cadastrar – assumed 'cadastrar' in C:xampphtdocsnoticiasadminscript_noticias.php on line 45
Notice: Undefined variable: HTTP_POST_FILES in C:xampphtdocsnoticiasadminscript_noticias.php on line 67
Notice: Undefined variable: HTTP_POST_FILES in C:xampphtdocsnoticiasadminscript_noticias.php on line 69
Notice: Undefined index: nome_arquivo_descricao in C:xampphtdocsnoticiasadminscript_noticias.php on line 70
Strict Standards: mktime() [function.mktime]: You should be using the time() function instead in C:xampphtdocsnoticiasadminscript_noticias.php on line 75
Notice: Undefined variable: HTTP_POST_FILES in C:xampphtdocsnoticiasadminscript_noticias.php on line 86
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 88
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 89
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 90
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 91
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 92
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 93
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 94
Notice: Undefined variable: HTTP_POST_VARS in C:xampphtdocsnoticiasadminscript_noticias.php on line 96
Deprecated: Function ereg_replace() is deprecated in C:xampphtdocsnoticiasadminscript_noticias.php on line 97
Muito bom o script sou novo aqui mais desde ja meus parabéns ja me ajudou muito! Agora gostaria de saber se teria como eu alterar e mudar o formato da pagina aonde vai aparescer a noticia cofigurando para o modelo de minhas paginas html se tem aonde é que esta o arquivo que tenho que mudar… Abração!
Como posso mudar o link, por exemplo: noticias-descricao.php?id_noticia=2 para apenas /id=2
Boa Noite alguem passou pelo o seguinte problema – não conseguir incluir nem editar noticia pelo sistema , somente pelo banco .
Amigos, bom dia. Me é remetido determinado erro ( Warning: mysql_fetch_array(): supplied argument is not a valid MySQL) quando executa-se ./noticias_categoria_listar.php e noticias_cadastrar.php. Como resolver? Desde já, agradeço-lhes!
Nesse tutorial está <?
hoje se utiliza '<?php' pois em alguns servidores não reconhece '<?'
abraço
Olá, amigo ,, quando efetuo a exclusão de uma noticia a página fica em branco e a noticia não é deletada. o que será que pode está faltando ?
Muito bom o artigo, porem gostaria de saber como posso fazer para cadastrar noticias especificas para cada usuario do cadastrado no site.? onde da area administrativa eu possa cadstrar o usuario e cadstrar noticias que só este usuario possa ver ao acessar sua area no site.
Seria possivel cadastrar noticias personalizadas e disponibliza-las na area de cada usuarios especificos do site?
Está faltando um arquivo no pacote…
Que é o CSS da própria página de notícias (por exemplo o arquivo noticia.php, tem alguns elementos com classe (class="arial_preto"), sendo que não percebi nenhuma estilização da página.
Fora isso, adorei, sou seu fã cara! Salvou minha pele muito! Te amo.
Uma dúvida:
Como faço pra mudar a senha padrão que é :
Login: teste@teste.com – Senha: 123456
????
Fácil mano, vai direto na BD e altera manual
olá pessoal, alguém pode me ajudar, não consigo logar, altorização inexistente…
Tou com um problema na importação do script para a criação dos itens no MySQL.
Segue mensagem de erro:
consulta SQL:
CREATE TABLE tbl_categorias_noticias(
id_categoria_noticia tinyint( 3 ) unsigned NOT NULL AUTO_INCREMENT ,
categoria varchar( 50 ) default NULL ,
PRIMARY KEY ( id_categoria_noticia ) ) TYPE = MYISAM ROW_FORMAT = DYNAMIC ;
Mensagens do MySQL :
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TYPE=MyISAM ROW_FORMAT=DYNAMIC' at line 5
Olá, Pedro.
É muito simples de resolver esse erro. No final do SQL há: "TYPE = MYISAM ROW_FORMAT = DYNAMIC" deleta essa informação onde estiver.
Olá,
parabéns, funciona corretamente. Só que gostaria de saber se é possível ordenar as notícias em destaque por ordem de postagem, com as mais recentes aparecendo no topo, e não embaixo como está aqui.
Quando eu envio o 'script-sql' para o phpmyadmin dá varios erros, um deles fala sobre o ———-Cria….———-
Como faço para arrumar isto?
—
Depois eu tentei criar manualmente as tabelas com o que tem nelas, porém a parte que era para aparecer as noticias não aparece (as noticias) e quando vou fazer login diz que não existe…
—
Por favor, me ajudem!
Caro amigo bom meu problema ja começa desde o inico na tabela do MySQL bom meu banco de dados nao que aceita os codigos das tabelas que veio no arquivo para download…
Amigo. Parabéns pelo script. Muito bom. Teria como modificar o tipo de arquivo em anexar, para aceitar o formato PDF e DOCX ??? Obrigado
ola, queria saber se tem como deixar o sistema de noticia rotativo… alem das noticias ficar um em baixo da outra eu usaria o script <img src="img/noticias/<?=$imagem_noticia;?>" height="200" alt="img-notice"> no lugar do <?=$descricao_noticia;?> e ele ficaria passando como um slide?
Query SQL:
——– — CRIA A TABELA DE CATEGORIA DE NOT�CIAS ———-
CREATE TABLE `tbl_categorias_noticias` (
`id_categoria_noticia` TINYINT( 3 ) UNSIGNED NOT NULL AUTO_INCREMENT ,
`categoria` VARCHAR( 50 ) DEFAULT NULL ,
PRIMARY KEY ( `id_categoria_noticia`) ) TYPE = MYISAM ROW_FORMAT = DYNAMIC ;
Mensagem do MySQL: Documentação
O BANCO DE DADADOS APRESENTOU ERRO
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '———- CRIA A TABELA DE CATEGORIA DE NOTÍCIAS ———-
CREATE TABLE `tb' at line 1
O QUE DEVO FAZER?
Bom dia Rui! Baixei Sistema de Notícias e, no wampp criei uma pasta ( feed) na qual descompactei os arquivos. Criei então o banco de dados (rede) e meu usuário (admin) e a senha(admin/2014). Mas na criação das Tabelas, fiz como você recomenda, importei para o sql e não foi possível criar as tabelas. Rui, veja a mensagem:
Erro
Query SQL:
Mensagem do MySQL: Documentação
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '———- CRIA A TABELA DE CATEGORIA DE NOT?CIAS ———-
CREATE TABLE `tb' at line 1
OLA AOU IMPORTAR O ARQUIVO db apresentou o seguinte erro
#1064 – You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '———- CRIA A TABELA DE CATEGORIA DE NOT?CIAS ———-
CREATE TABLE `tb' at line 1
alguem pode me ajudar?
Troque o TYPE do sql por ENGINE
REMOVA OS COMENTARIOS E AI IRÁ FUNCIONAR
alguem pode me ajudar eu não estou conseguindo adicionei-me no skype:arturbernardo16
pena que não funciona por completo 🙁
Aqui aparece no phpmyadmin:
———- CRIA A TABELA DE CATEGORIA DE NOT�CIAS ———-
CREATE TABLE `tbl_categorias_noticias` (
`id_categoria_noticia` tinyint(3) unsigned NOT NULL auto_increment,
`categoria` varchar(50) default NULL,
PRIMARY KEY (`id_categoria_noticia`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;
Mensagem do MySQL: Documentação
#1064 – Você tem um erro de sintaxe no seu SQL próximo a '———- CRIA A TABELA DE CATEGORIA DE NOT?CIAS ——
Troca < …TYPE=MyISAM…> por < …ENGINE=MyISAM… >