Professional Documents
Culture Documents
c
O meu projecto para os próximos artigos é criar e desenvolver um sistema de notícias
em PHP e MySQL. Vou começar com o básico e o sistema irá evoluir para um sistema
de notícias mais completo, mas será uma evolução passo a passo. Assim, qualquer leitor
que esteja a aprender PHP e MySQL terá a oportunidade de compreender o
desenvolvimento do sistema de notícias e poderá utilizar e adaptar este sistema de
notícias às suas necessidades.
Vou utilizar o CSS framework grid 960 para trabalhar o design das páginas de
administração. Mais tarde, o design poderá evoluir por outros caminhos.
c
O primeiro passo é criar a base de dados MySQL.
Criem uma base de dados MySQL com o nome e podem executar o código que
segue para criar a tabela:
p
p ppp
pp
p p
pppp
p p
p p
pp
p p p
p !"!p#$$pp
p p p
%
p%p
p p p
&'
p !"!p#$$pp
p p p
()p*)pp
p p
+p
pp
Ôp O campo é um campo numérico que se incrementa automaticamente. É
bastante útil, pois sendo uma referência única, sem duplicações, podemos
utilizar esse campo para distinguir linhas de dados para edição e outros
comandos.
Ôp O campo é um campo onde vamos gravar a data da inserção da notícia.
Ôp O campo é o campo reservado para os títulos das notícias. Podemos
escrever até 255 caracteres.
Ôp O campo é para o texto da notícia.
Ôp O campo é idêntico ao do titulo e esta guardado para gravarmos o url
duma imagem. Também está limitado a 255 caracteres.
Vamos ter um ficheiro !"!, onde vamos visualizar a informação que foi gravado
na base de dados. Mais tarde, vamos decidir que informação é que pretendemos
visualizar e como podemos seleccionar essa informação e visualizá-la. O index.php é o
ficheiro que os visitantes do website vão abrir, quando acederem ao nosso domínio. É
usual chamar à parte pública do sistema de notícias Frontoffice.
Portanto, para já, temos 1 ficheiro index.php, 1 pasta conn, onde temos o ficheiro
conn.php e uma pasta admin, onde temos vários ficheiros do Backoffice.
@# " !"!$ % &
c
Este ficheiro é a chave de acesso à base de dados. Se estiver mal configurado, não há
sistema de notícias. Portanto, é importante que fique bem configurado.
p
p,-.".p
/! ! pp0pp1"1+ p
/2 pp0pp1!1+ p
/3! pp0pp1!1+p
/" . pp0pp11+p
pp
/p0p&45/! !p/3!p/" .+ p
6p7/ p
8p
9!!+p9p:p&45!!!+ p
;p
-<p
pp
p
p,6!&p01!!1p&01!!1p&"01.1p01!! =
:.".1< p
,.p&011p4.01" 1p011p 01,-.".p"p9) =
&=9p-<1p>< p
?,2!p>< p
,.p&011p4.01%1p011p301@A1p><,2!p>< p
%?,2!p>< p
,%!p&01%1p01%1p01@$1p!B01$1<,>%!<,2!p>< p
&'?,2!p>< p
,.p&01&'1p4.01 %1p01&'1p301@A1p><,2!p>< p
,.p4.012&1p&0121p0121p 012&!1p>< p
,>6!&<p
pp
Ôp data
Ôp titulo
Ôp texto
Ôp imgs
p
p,-.".p
2!+ p
9::>>:.".9+ p
pp
/pp0pp/(
C99D+ p
/pp0pp/(
C99D+ p
/%pp0pp/(
C9%9D+ p
/&'pp0pp/(
C9&'9D+ p
pp
6p7&.4/pp7&.4/%p8 p
&452/2p/+ p
&455!41 p
p ppp%p&' p
Ep9/9p9/9p9/%9p9/&'91+ p
pp
&45/+ p
pp
"!1?p&:.".-01+ p
%+p
;p
-<p
pp
Incluímos a chave de acesso à base de dados, ou seja, incluímos o ficheiro onde está a
ligação à base de dados: vejam o include do ficheiro !"!.
p
p,-.".pp
9>:.".9+ p
&452/2p/+ p
pp
/!p0p&455!41 pFp
pp
Gp)ppG 1+ p
pp
B"/"p0p&456"!!4/!p8 p
"ppp1,"<1:/"C99D:1,>"<1+ p
"ppp1,2!p><1+p
"pp1,.<1:/"C9%9D:1p,&'p!091:/"C9&'9D:19p099p
'0969p><p1:1,>.<1+ p
"ppp1,2!p><1+p
;pp
pp
&45/+ p
-<p
pp
Mais uma vez, reparem no include do ficheiro conn.php, que permite o acesso à base de
dados, dado que a ligação à base de dados está nesse ficheiro.
A seguir, o comando c-.#/@ significa seleccionar todos os dados
da tabela noticias. Acrescentamos @//0 c. Estamos a ordenar as
notícias pelo n_id e duma forma descendente. Como o n_id é incremental, estamos a
visualizar as notícias pela ordem com que foram inseridas na base de dados, neste caso,
ordem descendente. Ou seja, as últimas notícias inseridas na base de dados são sempre
as primeiras que vamos ver no index.php.
Inserimos também um 1" que significa que enquanto houver dados o index.php
processa a informação e permite a respectiva visualização.
c
c
2
o! 3
Decidi atender ao pedido de um leitor e integrar já um sistema de upload de imagens. A
mensagem desta minha decisão é simples: c o Este sistema de
notícias irá evoluir de acordo com os vossos comentários. A decisão sobre as
funcionalidades deste sistema de notícias é vossa. Sem prejuízo do princípio subjacente
a este projeto: não queremos criar um Joomla, um WordPress ou um Drupal. Esses
CMS já existem e são open source e grátis. Queremos um sistema de notícias simples e
fácil de usar, por 2 razões:
Ôp Este tutorial tem como destinatários aqueles leitores que estão a aprender PHP e
MySQL e a aprendizagem é como uma escada que vai do simples até ao mais
complexo. Vamos começar pelo simples.
Ôp Muitas vezes, até para a maioria dos sites para empresas, um Joomla ou um
Drupal são demasiado complexos. E um sistema de notícias simples é mais
vantajoso para o programador e especialmente para o utilizador final, que não
vai ter 101 opções de configuração e não vai precisar de ler um manual para
editar um artigo.
Não criamos um módulo autónomo para o sistema de upload. Mas, podemos fazer isso
no futuro. Depende da evolução do script. É um sistema de upload muito simples e que
nem mexemos na base de dados. Vamos utilizar um campo já existe na base de dados
MySQL para guardar o nome do ficheiro da imagem: n_img.
Ôp index.php
Ôp admin/admin.php
Ôp admin/inserir-noticia.php
p
p>>pp'p"ppH'? p
pp
,6!&p01!!1p&01!!1p&"01 .1p01!! =
:.".1< p
pp
>>pp2Ip.!pp"ppH'? p
pp
,6!&p&01!!1p01!!1p&"01.1p01!! =
:.".1 pp4.01&.!>6!& =1p<p
pp
>>pp"ppH'p6p2I? p
pp
,.p&01&' 1p4.01%1p01&'1p301@A1p>< p
pp
>>p.!pp"ppH'? p
pp
,.p&01&'1p4.0161p01&'1p301@$1p>< p
pp
pp
p
pp
>>ppJ pp !K p/&'pp !Lp!!: p
pp
/&'pp0pp/(
C9&'9D+ p
pp
>>pp !K p/&'p%pp!p&p/(
pp!6!& =p&p
/C9&'9Dpp!&p&p p !K pp/!&&' p
pp
/&'pp0pp/C9&'9D+ p
pp
/!&&'0 pp!!.1p1p11p! B!/C1&'1DC1&1D+ p
pp
pp
Dado que o nome do ficheiro pode ter várias formatações: escrito em letras
MAIÚSCULAS, escrito em letras minúsculas ou até com uma combinação de letras
maiúsculas e micúsculas (Exemplo.JPG.), decidi utilizar o strtolower para alterar o
nome do ficheiro de modo que seja um nome só com letras minúsculas.
Outro problema de formatação é o nome do ficheiro ter espaços. Por exemplo: ³Nome
do ficheiro.jpeg´. Decidi usar o str_replace, para remover os espaços no nome do
ficheiro.
p
pp
6p/C1&'1DC14.1Dp00p1&'>.M.'1pNNp
/C1&'1DC14.1Dp00p1&'>M.'1pNNp/ C1&'1DC14.1Dp
00p1&'>'61pNNp/C1&'1DC14.1Dp00p1&'>.'1pOOp
/C1&'1DC131Dp,p#AAAAp8 p
pp
pp
Vamos efectuar o INSERT desta nova informação na base de dados MySQL. Não
esquecer que a variável não é a $imgs. A variável é a $trimimg.
p
pp
&455!41 p
pppp%p&'p
Ep9/9p9/9p9/%9p9/!&&'91+ p
pp
pp
O upload de imagens está a ser efectuado para a pasta admin/img. O código que
determina a pasta para onde vai ser efectuado o upload é o seguinte:
p
pp
& .6/C1&'1DC1&.&1Dp1&'>1p:p /!&&'+ p
pp
pp
! +
Como o código vai ser processado na pasta , indicamos a pasta img/ e o nome do
ficheiro que vai ser escrito nessa pasta. O nome do ficheiro vamos buscar à variável
$trimimg. Neste código:
p
p& .6/C1&'1DC1&.&1Dp1&'>1p:p /!&&'+ p
pp
o pedaço de código que faz exactamente isso é este: 6 5 ß .
p
p"pp1,.<1:/"C9%9D:1p ,&'p
!09&>&'>1:/"C9&'9D:19p099p'0969p><p1:1,>.<1+ p
pp
Que novas funcionalidades querem para este sistema de notícias em PHP e MySQL?
c
c
6
70c3708$o -
WYSIWYG não é um bicho de 7 cabeças. É o acrónimo de ³What You See Is What
You Get´. Trata-se da melhor descrição possível para definir o que é um editor de Html.
Um editor de Html é o meio mais simples de escrever conteúdo numa área de texto e de
formatar esse texto para a web. Se pretender sublinhar uma frase, basta seleccionar a
frase e na barra de ferramentas clicar no ícon correspondente ao sublinhado. Se preferir
destacar algumas palavras, pode seleccionar as palavras e clicar na opção Bold. Se
quiser criar uma lista não ordenada, selecciona as frases respectivas e clica na opção
Lista Não Ordenada. É uma forma fácil e rápida de escrever conteúdo na web, sem que
seja necessário conhecer HTML e com essa possibilidade de formatar o texto com
funcionalidades do HTML.
-
Existem muitos editores WYSIWYG:
Ôp TinyMCE
Ôp CKEditor
Ôp OpenWYSIWYG
Ôp NicEdit
Ôp YUI 2
3@-
O TinyMCE é fácil de instalar.
Na pasta admin, criem uma pasta com o nome ". Façam o download do
TinyMCE e copiem para a pasta todo o código do TinyMCE. Portanto, os ficheiros e
pastas do TinyMCE vão ficar na pasta ":
p
p,>"<p
pp
p
pp
,7==p4 p==<p
,!.p4.01%>M !.1p!01!"&>4&:M1<,>!.< p
,!.p4.01%>M !.1< p
pp4 :8 p
pppp&p?p1%!1 p
pppp"&p?p1 1 p
ppppp
pppp>>p"&p. p
pppp"& 2p?p
12!NM646M64!M64!'"NP
.N1 p
pppp"& 2#p?p11 p
pppp"& 2Qp?p11 p
pppp"& 2@p?p11 p
pppp"& 2!p?p1.1 p
pppp"& 2!'p?p161 p
pppp"& 2!p?p12&1 p
pppp"& !3'p?p! p
ppppppp
pp;+p
,>!.< p
,7==p>4 p==<p
pp
pp
p
p"& 2p?p
12! !P"!'"N&'NM646M64
!M64!'"M646NPP"!.N6!&
N!& 6!&1 p
pp
Repare:
p
p,6!&p!p01%:.". 1pB"01AAR1p"'"01@AA1p
4012!!?1< p
,.<
pp2!B!pLp.!p6!&:p(!p6 !p3ppp
2!B!:,>.< p
,>6!&< p
pp
Experimente.