Você está na página 1de 8

Tutoriais

PHP
Apostila para utilizar a linguagem
php na prática
Por Marcus Vinicius R. G. Cardoso
02 Tutorial -PHP
Criando um Portal de Notícias baseado em em HTML (formulário) para o cadastro de notícias. Vamos lá:
PHP/MySQL

1.º Passo - Criando e preparando o Banco de Dados ARQUIVO cadastra.php


(MySQL)Comece criando um banco de dados dedicado a este
tutorial. Por exemplo, com o nome notícias; se já estiver no <?php
cliente MySQL, digite o seguinte:
$data = date("Y-m-d");
$hora = date("H:i:s");
create database noticias; $novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" .
substr($data,0,4);
Por conseguinte, abra o banco de dados criado: $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min";

use noticias; echo "<h1>Sistema de Cadastro de Notícias</h1>";


echo "<hr><br>";
Agora é criar uma tabela para cadastro das suas notícias. Você echo "<form action='inserir.php' method='post'>";
echo "Nome:<input name='nome' type='text' size=30> *<br>";
pode seguir o exemplo abaixo, superprático: echo "Sobrenome:<input name='sobrenome' type='text' size=30>
*<br>";
CREATE TABLE noticias ( echo "Cidade:<input name='cidade' type='text' size=30> *<br>";
id int(5) NOT NULL auto_increment, echo "Estado:<i>(Exemplo: SP, RS, BA)</i><input name='estado'
nome char(30) NOT NULL , type='text' size=5> *<br>";
sobrenome char(30) NOT NULL , echo "Email: <i>(Exemplo: feitosac@yahoo.com)</i><input
cidade char(50) NOT NULL , name='email' type='text' size=30><br><br>";
estado char(2) NOT NULL , echo "Título do Texto:<input name='titulo' type='text' size=30>
email char(80) , *<br>";
data date NOT NULL, echo "Subtítulo do Texto:<textarea name='subtitulo' rows=5
hora time NOT NULL , cols=30></textarea><br>";
titulo char(100) NOT NULL , echo "Texto:<textarea name='texto' rows=10
subtitulo char(200) , cols=30></textarea> *<br>";
texto text NOT NULL , echo "<input name='data' type='hidden' value='$data'<>input
ver char(3) DEFAULT 'off' , name='hora' type='hidden' value='$hora'>";
PRIMARY KEY (id), echo "<input type='submit' value='Cadastrar'>";
UNIQUE id (id) echo "</form>";
); echo "<br><hr>";
echo "<i>Campos marcados com <b>*</b> são obrigatórios no
Se você já tiver uma base de conhecimento em SQL, poderá cadastro.<br>";
saber o que cada linha acima realizará. Irei especificar o que echo "<b>Observação</b>: Será inserido no seu cadastro a data
você irá cadastrar em cada campo: atual, bem como a hora atual do cadastro<br>";
echo "Data: $novadata - Hora: $novahora<br>";
 id = Campo de identificação da notícia (não é necessário
cadastrar nenhum dado, pois ele já está habilitado com a ?>
função auto_increment que, automaticamente, irá inserindo
novos valores) FIM DO ARQUIVO cadastra.php
 nome = Primeiro nome do autor da notícia
 sobrenome = Sobrenome do autor da notícia  Vamos realizar uma pequena análise neste arquivo. Repare
 cidade = Cidade do autor que os dados do formulário serão enviados para o script
 estado = Estado da cidade (especificada com apenas 2 "inserir.php", este, por conseguinte, será o responsável pela
caracteres) inserção desta notícia no MySQL. Outro ponto, é que não
 email = Email do autor, para contatos existem os campos id, ver, estes, como expliquei, serão
 data = Data utilizada, para saber quando foi realizado o inseridos automaticamente pelo MySQL, e os campos data,
cadastro (não será necessário nenhum cadastro, pois faremos hora, serão inseridos pelo PHP.
isso no php automaticamente, inserindo a data atual)  Agora é hora de criar o script PHP responsável por isto tudo.
 hora = Hora utilizada no cadastro da notícias (também não Vamos nessa:
é necessário o cadastro, pois será feito automaticamente com o
PHP) ARQUIVO inserir.php
 título = Título da notícia (máximo de 100 caracteres)
 subtítulo = Pequeno resumo da sua notícia (máximo de 200 <?php
caracteres)
 texto = Agora sim, o texto da sua notícia, sem limite de //Vamos definir as variáveis de data e hora
caracteres //para inserção no banco de dados
 ver = Este campo é curioso. Ele será utilizado para o //Agora com as variáveis de data e hora criadas
webmaster poder autorizar cada notícia, pois caso não tivesse //vamos criar uma variável especial para a querie sql
um campo parecido, toda notícia cadastrada iria para o site. É
como um controle de notícias. O padrão aqui, é off, assim toda $sql = "INSERT INTO noticias (nome, sobrenome, cidade, estado,
notícia primeiro será passada para o webmaster, para depois email, data, hora,
titulo, subtitulo, texto) VALUES ('$nome', '$sobrenome', '$cidade',
ser validada. * são campos obrigatórios no cadastro Agora com '$estado',
o banco de dados preparado, é hora de criarmos o sistema de '$email', '$data', '$hora', '$titulo', '$subtitulo', '$texto')";
cadastro de notícias do seu site. Este será o 2.º passo! 2º Passo
- Criando o sistema de cadastro de notíciasEste é um passo //Agora é hora de contatar o mysql
importante, onde um script criado em PHP irá inserir dados no
$conexao = mysql_connect("localhost", "root", "root")
banco de dados MySQL. Aqui iremos utilizar os or die ("Configuração de Banco de Dados Errada!");
conhecimentos passados no tutorial anterior, sobre questões
básicas de PHP/MySQL. Primeiramente será criado o arquivo //Substitua os valores acima caso não esteje de acordo com sua
Tutorial -PHP 03

máquina echo "<br>";


//Selecionando o banco de dados... echo "Autor: $nome $sobrenome - ($email)";
echo "<br>";
$db = mysql_select_db("noticias") echo "Cidade: $cidade - Estado: $estado";
or die ("Banco de Dados Inexistente!"); echo "<br>";
echo "Data: $novadata - Horário: $novahora";
//Inserindo os dados echo "<br>";
echo "Título da Notícia: $titulo";
$sql = mysql_query($sql) echo "<br>";
or die ("Houve erro na gravação dos dados, por favor, clique em echo "Subtítulo da Notícia: <i> $subtitulo </i>";
voltar e verifique os campos obrigatórios!"); echo "<br>";
echo "Notícia: $texto";
echo "<h1>Cadastro efetuado com sucesso!</h1>"; echo "<br>";
echo "Validado pelo Webmaster: ";
?> if ($ver=on) {echo "Sim"; }else {echo "Não"; }
echo "<hr>";
FIM DO ARQUIVO inserir.php
}

 Você pode aperfeiçoar muito mais o script. Por ?>


exemplo, personalizar a mensagem de erro e de êxito, inserir
um link para cadastrar novamente, etc. FIM DO ARQUIVO noticias.php
 Agora vamos para o próximo e último passo, "Recuperando
os dados cadastrados" 3.º Passo - Recuperando os dados  Viu como é super simples? Neste script criamos uma variável
cadastradosIrei mostrar como selecionar, por exemplo, as para cada campo da tabela, assim fica mais fácil de manusear os
últimas 15 notícias inseridas no MySQL; isto é muito útil, para dados de qualquer forma. Nas variávels novadata, novahora,
sites que têm seções do tipo "Últimas Notícias". Isto é feito crie uma função para mostrar as variáveis de uma forma melhor.
com PHP novamente; faça conforme o exemplo abaixo, e salve (agradecimentos a RENAS - Amigão!)
como um arquivo em PHP.  Você ainda pode personalizar estas notícias, deixando o
layout do seu jeito!
ARQUIVO noticias.php  OBS: para mostrar todas as notícias em vez de só as últimas
15, apenas crie uma nova variável $sql, como esta abaixo:
<?php $sql = "SELECT * FROM noticias WHERE ver = 'on' ORDER
//Vamos precisar contar o MySQL novamente
BY id DESC";
 Pronto! Foi só retirar "LIMIT 15". ;) 4.º Passo - Controle de
$conexao = mysql_connect("localhost","root","root"); Notícias para WebmasterNeste passo irei explicar como mostrar
$db = mysql_select_db("noticias"); todos os dados da tabela, para podermos modificá-los, apagá-
//Agora é realizar a querie de busca no banco de dados
los, etc. Primeiramente, devemos criar um arquivo PHP para
mostrar todos os dados na tela, para depois podermos manuseá-
$sql = "SELECT * FROM noticias WHERE ver = 'on' ORDER BY id los. Faça como o exemplo abaixo:
DESC LIMIT 15";

// Irá selecionar as últimas 15 notícias inseridas


ARQUIVO controle.php

// O curioso aqui, é que ele só irá selecionar os campos onde <?php


// estiver o ver=on, isto foi discutido logo atrás, como um
// controle de notícias pelo webmaster $conexao = mysql_connect("localhost","root","root");
// Por padrão o MySQL colocou off, mas o webmaster terá que $db = mysql_select_db("noticias");
// revisar as notícias e alterar o campo ver para as que quiser $sql = "SELECT * FROM noticias ORDER BY id DESC";
validar. $resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados"); echo "<table width=740 border=1 cellpadding=1 cellspacing=1>";
echo "<tr>";
// Agora iremos "pegar" cada campo da notícia echo "<th width=15>ID:</th>";
// e organizar no HTML echo "<th width=100>Nome:</th>";
echo "<th width=100>Sobrenome:</th>";
while ($linha=mysql_fetch_array($resultado)) { echo "<th width=100>Cidade:</th>";
echo "<th width=15>UF:</th>";
$id = $linha["id"]; echo "<th width=100>Email:</th>";
$nome = $linha["nome"]; echo "<th width=30>Data:</th>";
$sobrenome = $linha["sobrenome"]; echo "<th width=30>Hora:</th>";
$cidade = $linha["cidade"]; echo "<th width=100>Título:</th>";
$estado = $linha["estado"]; echo "<th width=50>Disponível?</th>";
$email = $linha["email"]; echo "<th width=50>Alterar</th>";
$data = $linha["data"]; echo "<th width=50>Excluir</th>";
$hora = $linha["hora"]; echo "</tr>";
$titulo = $linha["titulo"];
$subtitulo = $linha["subtitulo"]; while ($linha=mysql_fetch_array($resultado)) {
$texto = $linha["texto"]; $id = $linha["id"];
$ver = $linha["ver"]; $nome = $linha["nome"];
$sobrenome = $linha["sobrenome"];
$novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . $cidade = $linha["cidade"];
substr($data,0,4); $estado = $linha["estado"];
$novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; $email = $linha["email"];
$data = $linha["data"];
echo "<b>Código da Notícia</b>: $id"; $hora = $linha["hora"];
04 Tutorial -PHP
$titulo = $linha["titulo"]; $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min";
$ver = $linha["ver"];
echo "<h1>Alterar Cadastro...</h1>";
$novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . echo "<hr><br>";
substr($data,0,4); echo "<form action='alterar_db.php?id=$id' method='post'>";
$novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo "Código da Notícia: <input name='id_novo' type='text'
value='$id' size=20><br>";
echo "Data: $novadata<br>";
echo "<tr>"; echo "Hora: $novahora<br>";
echo "<th width=15>$id<br></th>"; echo "Nome:<input name='nome_novo' type='text' value='$nome'
echo "<th width=100>$nome<br></th>"; size=30> *<br>";
echo "<th width=100>$sobrenome<br></th>"; echo "Sobrenome:<input name='sobrenome_novo' type='text'
echo "<th width=100>$cidade<br></th>"; value='$sobrenome' size=30> *<br>";
echo "<th width=15>$estado<br></th>"; echo "Cidade:<input name='cidade_novo' type='text'
echo "<th width=100>$email<br></th>"; value='$cidade' size=30> *<br>";
echo "<th width=30>$novadata<br></th>"; echo "Estado:<i>(Exemplo: SP, RS, BA)</i><input
echo "<th width=30>$novahora<br></th>"; name='estado_novo' type='text'
echo "<th width=100>$titulo<br></th>"; value='$estado' size=5> *<br>";
echo "<th width=50>$ver<br></th>"; echo "Email: <i>(Exemplo: feitosac@yahoo.com)</i><input
echo "<th width=50><a name='email_novo' type='text'
href='alterar.php?id=$id'>Alterar</a><br></th>"; value='$email' size=30><br><br>";
echo "<th width=50><a echo "Título do Texto:<input name='titulo_novo' type='text'
href='excluir.php?id=$id'>Excluir</a><br></th>"; value='$titulo' size=30> *<br>";
echo "</tr>"; echo "Subtítulo do Texto:<textarea name='subtitulo_novo' rows=5
echo "<br>"; cols=30>$subtitulo</textarea><br>";
echo "Texto:<textarea name='texto_novo' rows=10
} cols=30>$texto</textarea> *<br>";
echo "Disponibilizar? (on ou off): <input name='ver_novo'
echo "</table>"; type='text' value='$ver' size=5><br>";
echo "<input type='submit' value='Alterar'>";
?> echo "</form>";
echo "<br><hr>";
FIM DO ARQUIVO controle.php }

?>
O próximo passo agora é criar os arquivos alterar.php e
excluir.php, responsáveis pela alteração e exclusão dos dados. FIM DO ARQUIVO alterar.php
É muito simples o código, veja só:
Agora basta criarmos o arquivo alterar_db.php que irá receber
ARQUIVO excluir.php os dados deste arquivo (alterar.php) e alterará seus respectivos
dados no MySQL. É muito simples:
<?php

$conexao = mysql_connect("localhost","root","root"); ARQUIVO alterar_db.php


$db = mysql_select_db("noticias");
$sql = “DELETE FROM noticias WHERE id='$id'”; <?php
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a exclusão dos dados."); $conexao = mysql_connect("localhost","root","root");
echo “<h1>A notícia foi excluída com êxito!</h1>”; $db = mysql_select_db("noticias");
$sql = "UPDATE noticias SET id='$id_novo',nome='$nome_novo'
?> ,sobrenome='$sobrenome_novo',cidade='$cidade_novo',estado='$
estado_novo'
FIM DO ARQUIVO excluir.php ,email='$email_novo',titulo='$titulo_novo',subtitulo='$subtitulo_no
vo'
,texto='$texto_novo',ver='$ver_novo' WHERE id='$id'";
ARQUIVO alterar.php $resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");
<?php echo "<h1>Notícia alterada com sucesso!</h1>";

$conexao = mysql_connect("localhost","root","root"); ?>


$db = mysql_select_db("noticias");
$sql = "SELECT * FROM noticias WHERE id='$id'"; FIM DO ARQUIVO alterar_db.php
$resultado = mysql_query($sql)
or die ("Não foi possível realizar a consulta ao banco de dados");

while ($linha=mysql_fetch_array($resultado)) {
$id = $linha["id"];
$nome = $linha["nome"];
$sobrenome = $linha["sobrenome"];
$cidade = $linha["cidade"];
$estado = $linha["estado"];
$email = $linha["email"];
$data = $linha["data"];
$hora = $linha["hora"];
$titulo = $linha["titulo"];
$subtitulo = $linha["subtitulo"];
$texto = $linha["texto"];
$ver = $linha["ver"];

$novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" .


substr($data,0,4);
Tutorial -PHP 05

Como criar um simples sistema de login em $logar = mysql_query("SELECT * FROM login WHERE
nome='$nome' AND senha='$senha'") or die("erro ao selecionar");
PHP/Mysql /*aqui depois de verificado redirecionamos a pagina secreta(caso
nome e senha estarem corretos) ou senha
e apelido não conferem caso tais estiverem errados. Repare que há
1º passo uma rotina para o valor inserido em senha não seja nulo.

Vamos criar o arquivo de conexão com o banco de dados e obs: Aonde esta escrito paginasecreta.php é aonde vc deve colocar
chamá-lo de conectar.php: a página para onde o script ira redirecionar*/
if (strlen($senha)< 1)
echo '
$host = "localhost";
$user = "nome_do_usuario"; Senha ou apelido não conferem
$senha = "senha_do_usuario"; tente denovo
$dbname = "nome_do_db"; ';
//conecta ao banco de dados elseif (mysql_num_rows($logar)>0 ){
mysql_connect($host, $user, $senha) or die("Não foi possível header("location:paginasecreta.php");
conectar-se com o banco de dados"); }else {
//seleciona o banco de dados echo '
mysql_select_db($dbname)or die("Não foi possível conectar-se Senha ou apelido não conferem
com o banco de dados"); tente denovo
?> ';
}
2ºpasso (criação das tabelas) ?>

Agora vamos criar as tabelas no banco de dados a partir deste 5ºpasso (criando o o formulário de login)
script em php:
Finalmente o último passo vamos criar o formulário de login:
//inclui o arquivo de conexão com o banco de dados
include ("conectar.php"); Nome:
//cria a tabela no db senão retorna a mensagem "não foi
possívelcriar a tabela"
mysql_query("CREATE TABLE login ( Senha:
nome VARCHAR(25) NOT NULL,
senha VARCHAR (15) NOT NULL Enviar
)") or die ("não foi possível criar as tabelas");
?>
Atenção: este é um sistema de login simples ! Se
3ºpasso (criando um formulário de cadastramento de usuários) você desejar um sistema mais seguro, você deve
trabalhar com cookies e sessões, assuntos que
Agora vamos criar um formulário de cadastramento de
usuários: não foram abordados aqui.

Nome: Sistema de Busca

Senha: Primeiramente vamos criar a tabela no MySQL onde os dados


serão buscados:
Enviar
CREATE TABLE noticias (
codigo INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT PRIMARY
4ºpasso (criando o script de cadastramento) KEY,
titulo VARCHAR(255) NOT NULL,
Vamos agora criar o documento php de cadastramento, noticia TEXT NOT NULL
);
chamando-o de cadastro.php:
Pronto! A tabela acima é um exemplo de uma tabela de notícia.
//conexão com o db
include ("conectar.php"); Bom, agora iremos criar o script de busca:
//variaveis enviadas pelo método post
$nome = $_POST['nome']; busca.php
$senha = $_POST['senha'];
//insere os valores no db
$insere = mysql_query("INSERT INTO `login`( `nome`, `senha`) <form method="POST">
VALUES ('$nome','$senha')") or die(mysql_error()); Palavra: <input type="text" name="palavra">
if($insere) <input type="submit" value="Buscar">
echo "Cadastro realizado com sucesso!"; </form>
Else <?
echo "Não foi possível fazer o seu cadastramento!"; if(!empty($HTTP_POST_VARS[palavra])) {
?> $palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]);
/* Altera os espaços adicionando no lugar o simbolo % */
$qr = "SELECT * FROM noticias WHERE noticia LIKE
5ºpasso (criando o script de login) '%".$palavra."%' ORDER BY codigo DESC";
$sql = mysql_query($qr); // Executa a query no Banco de
Chamaremos de login.php Dados
$total = mysql_num_rows($sql); // Conta o total ded
//conecta com o db resultados encontrados
include ("conectar.php"); echo "Sua busca retornou <b>'$total'</b>
$nome= $_POST['nome']; resultados.<br>\n";
$senha = $_POST['senha']; while($r = mysql_fetch_array($sql)) {// Gera o Loop com os
//faz a confirmação de nome e senha no db resultados
06 Tutorial -PHP
echo "<hr>\n";
echo $r[noticia]."<br>\n"; Parte 2
} } ?>
Agora iremos fazer com que o PHP gere os links das páginas:
Pronto, o seu sistema de busca ja esta funcionando.
if($pagina > 0) {
Utilizando Session em PHP $menos = $pagina - 1;
$url = "$PHP_SELF?pagina=$menos";
echo "<a href="$url">Anterior</a>"; // Vai para a página
anterior
}
for($i=0;$i<$paginas;$i++) {// Gera um loop com o link para as
Para utilizar session é muito simples e facilita bastante. páginas
Session é uma variável global a qual é eliminada quando o $url = "$PHP_SELF?pagina=$i";
usuário fecha o browser. Por exemplo, faremos uma página echo " | <a href="$url">$i</a>";
aonde setaremos um número qualquer para o usuário e esse }
if($pagina < $paginas) {
número só será necessário em outra página muito a frente. Ao $mais = $pagina + 1;
invés de ficarmos carregando pagina.php?num=1, criaremos $url = "$PHP_SELF?pagina=$mais";
uma session e somente nos preocuparemos com o número echo " | <a href="$url">Próxima</a>";
setado no final do script. }

O número será o 1 e o nome do session será "numero". Pronto. Veremos como fica o script inteiro:
Setando o session:
<?php <?
session_start(); $sql = mysql_query("SELECT * FROM tabela");
session_register("numero");
$lpp = 10; // Especifique quantos resultados você quer por página
if (!isset($numero)) {$numero = 1; } $total = mysql_num_rows($sql); // Esta função irá retornar o total
?> de linhas na tabela
$paginas = ceil($total / $lpp); // Retorna o total de páginas
Verificamos se ela ainda não foi setada, e a definimos como if(!isset($pagina)) {$pagina = 0; }// Especifica uma valor para
1. Agora, suponhamos que passamos todo o cadastro e agora variavel pagina caso a mesma não esteja setada
queremos recuperar esse número. $inicio = $pagina * $lpp; // Retorna qual será a primeira linha a
ser mostrada no MySQL
<?php
$sql = mysql_query("SELECT * FROM tabela LIMIT $inicio, $lpp");
session_start();
// Executa a query no MySQL com o limite de linhas.
session_register("numero");
while($l = mysql_fetch_array($sql)) {
if (isset($numero)) {print($numero); }
echo "Resultado...
?>
n";
Pronto! Verificamos se ele já foi setado e após apenas }
mostramos ele na página. Agora, quando precisar, já sabe o
if($pagina > 0) {
que é e como usar uma session. $menos = $pagina - 1;
$url = "$PHP_SELF?pagina=$menos";
echo "<a href="$url">Anterior</a>"; // Vai para a página
anterior
Como fazer Paginação de resultados? }
for($i=0;$i<$paginas;$i++) {// Gera um loop com o link para as
Neste tutorial iremos aprender a fazer paginação. páginas
$url = "$PHP_SELF?pagina=$i";
echo " | <a href="$url">$i</a>";
Parte 1 }
Primeiramente vamos executar uma query no mysql. if($pagina < ($paginas - 1)) {
$mais = $pagina + 1;
$sql = mysql_query("SELECT * FROM tabela"); $url = "$PHP_SELF?pagina=$mais";
echo " | <a href="$url">Próxima</a>";
Esta query irá retornar o valor total da tabela. }
?>
Vamos então fazer a paginação.

$lpp = 10; // Especifique quantos resultados você quer por página


$total = mysql_num_rows($sql); // Esta função irá retornar o
total de linhas na tabela
$paginas = ceil($total / $lpp); // Retorna o total de páginas
if(!isset($pagina)) {$pagina = 0; }// Especifica uma valor para
variavel pagina caso a mesma não esteja setada
$inicio = $pagina * $lpp; // Retorna qual será a primeira linha a
ser mostrada no MySQL
$sql = mysql_query("SELECT * FROM tabela LIMIT $inicio, $lpp");
// Executa a query no MySQL com o limite de linhas.

Agora iremos fazer o loop para que liste os resultados:

while($l = mysql_fetch_array($sql)) {
echo "Resultado...
n";
}

Pronto.
Tutorial -PHP 07
Macus Vinicus Da R. G. Cardoso
Produções

Você também pode gostar