- Como Criar Um Site, Blog – WebMaster.pt - http://www.webmaster.pt -

Sistema De Notícias Em PHP E MySQL Parte2

Tweet [3]

Outros artigos desta série Sistema de Notícias em PHP e MySQL:

Estrutura Do Sistema de Notícias

Upload De Imagens

Decidi atender ao pedido de um leitor e integrar já um sistema de upload de imagens. A mensagem desta minha decisão é simples: Somos Uma Comunidade! 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:

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.

Em relação ao script publicado na Parte1, alteramos os seguintes ficheiros:

O Ficheiro admin/admin.php

Não alteramos muito o código do formulário. Vamos analisar em pormenor as alterações do ficheiro admin/admin.php:


// A seguinte linha de código:

<form id="inserir" name="inserir" method="post" action="inserir-noticia.php">

// Foi substituída por esta linha de código:

<form name="inserir" id="inserir" method="post" action="inserir-noticia.php"  enctype="multipart/form-data" >

// Este linha de código foi substituída:

<input name="imgs" type="text" id="imgs" size="40" />

// por esta linha de código:

<input name="imgs" type="file" id="imgs" size="45" />

enctype=”multipart/form-data” [6]: Adicionamos, pois o nosso formulário vai processar um ficheiro de imagem e vai utilizar um campo de input do tipo type=”file”.

O Ficheiro admin/inserir-noticia.php

As principais alterações ocorrem neste ficheiro. É aqui que acontece a acção!



// Esta é a variável $imgs na versão anterior.

$imgs  =  $_POST['imgs'];

// A variável $imgs deixa de ser um $_POST e transforma-se num $_FILES['imgs'], e criamos uma nova variável a $trimimg

$imgs  =  $_FILES['imgs'];

$trimimg=  str_replace(" ", "", strtolower($_FILES["imgs"]["name"]));

A $trimimg vai ao MIME data stream do $_FILES['imgs'] e fica a saber o nome do ficheiro da imagem: $_FILES["imgs"]["name"].

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 [7] 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 [8], para remover os espaços no nome do ficheiro.

Se desenvolvermos um módulo autónomo para o upload de ficheiros, podemos também remover acentos do nome dos ficheiros e também criar automaticamente um nome de ficheiro único.

A seguir vamos criar uma condição baseada no $_FILES["imgs"]["type"] e restringir o upload dos ficheiros a 3 tipos de ficheiros: gif, png e jpeg. Aproveitamos a boleia e restringimos também o tamanho do ficheiro a ficheiros inferiores a 120 kb.



if ((($_FILES["imgs"]["type"] == "image/pjpeg") || ($_FILES["imgs"]["type"] == "image/jpeg") || ($_FILES["imgs"]["type"] == "image/gif") || ($_FILES["imgs"]["type"] == "image/png")) && ($_FILES["imgs"]["size"] < 120000)) {

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.



mysql_query("INSERT INTO noticias (n_data, n_titulo, n_texto, n_img) VALUES ('$data', '$titulo', '$texto', '$trimimg')");

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:



move_uploaded_file($_FILES["imgs"]["tmp_name"], "img/" . $trimimg);

Nesta linha de código, movemos o ficheiro da pasta temporária no servidor “tmp_name”, onde ficou uma cópia do ficheiro, para a pasta para onde vamos efectuar o upload dos ficheiros das imagens, na nossa conta de alojamento ou na pasta onde estão os ficheiros do nosso script no nosso computador. No servidor, é importante que o utilizador que executa os ficheiros PHP tenha permissões de escrita nessa pasta, para onde vamos efectuar o upload dos ficheiros das imagens.

admin/img/exemplo.gif

Como o código vai ser processado na pasta admin, 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:


move_uploaded_file($_FILES["imgs"]["tmp_name"], "img/" . $trimimg);

o pedaço de código que faz exactamente isso é este: “img/” . $trimimg.

O Ficheiro index.php

Estamos próximos do fim da Parte2 deste tutorial. Falta actualizar o ficheiro index.php, para poder ler as imagens, uma vez que deixamos de usar url e vamos passar a ler a imagem na pasta admin/img/.


echo  "<p>".$linha['n_texto']." <img src='admin/img/".$linha['n_img']."' alt='' align='left' /> "."</p>";

Que novas funcionalidades querem para este sistema de notícias em PHP e MySQL?

Download do código: Sistema De Notícias Em PHP E MySQL Parte2 [9]

Tweet [3]
Be Sociable, Share!
  • [10]
  • [11]
  • [12]
  • [13]
  • [14]