Baixe o app para aproveitar ainda mais
Prévia do material em texto
Tutoriais PHP Tutoriais PHP Por Marcus Vinicius R. G. Cardoso Apostila para utilizar a linguagem php na prática Criando um Portal de Notícias baseado em PHP/MySQL 1.º Passo - Criando e preparando o Banco de Dados (MySQL)Comece criando um banco de dados dedicado a este tutorial. Por exemplo, com o nome notícias; se já estiver no cliente MySQL, digite o seguinte: create database noticias; Por conseguinte, abra o banco de dados criado: use noticias; Agora é criar uma tabela para cadastro das suas notícias. Você pode seguir o exemplo abaixo, superprático: Se você já tiver uma base de conhecimento em SQL, poderá saber o que cada linha acima realizará. Irei especificar o que você irá cadastrar em cada campo: 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) nome = Primeiro nome do autor da notícia sobrenome = Sobrenome do autor da notícia cidade = Cidade do autor estado = Estado da cidade (especificada com apenas 2 caracteres) email = Email do autor, para contatos data = Data utilizada, para saber quando foi realizado o cadastro (não será necessário nenhum cadastro, pois faremos isso no php automaticamente, inserindo a data atual) hora = Hora utilizada no cadastro da notícias (também não é necessário o cadastro, pois será feito automaticamente com o 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 caracteres) texto = Agora sim, o texto da sua notícia, sem limite de caracteres ver = Este campo é curioso. Ele será utilizado para o webmaster poder autorizar cada notícia, pois caso não tivesse um campo parecido, toda notícia cadastrada iria para o site. É como um controle de notícias. O padrão aqui, é off, assim toda notícia primeiro será passada para o webmaster, para depois ser validada. * são campos obrigatórios no cadastro Agora com o banco de dados preparado, é hora de criarmos o sistema de cadastro de notícias do seu site. Este será o 2.º passo! 2º Passo - Criando o sistema de cadastro de notíciasEste é um passo importante, onde um script criado em PHP irá inserir dados no banco de dados MySQL. Aqui iremos utilizar os conhecimentos passados no tutorial anterior, sobre questões básicas de PHP/MySQL. Primeiramente será criado o arquivo CREATE TABLE noticias ( id int(5) NOT NULL auto_increment, nome char(30) NOT NULL , sobrenome char(30) NOT NULL , cidade char(50) NOT NULL , estado char(2) NOT NULL , email char(80) , data date NOT NULL, hora time NOT NULL , titulo char(100) NOT NULL , subtitulo char(200) , texto text NOT NULL , ver char(3) DEFAULT 'off' , PRIMARY KEY (id), UNIQUE id (id) ); em HTML (formulário) para o cadastro de notícias. Vamos lá: ARQUIVO cadastra.php <?php $data = date("Y-m-d"); $hora = date("H:i:s"); $novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . substr($data,0,4); $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo "<h1>Sistema de Cadastro de Notícias</h1>"; echo "<hr><br>"; echo "<form action='inserir.php' method='post'>"; echo "Nome:<input name='nome' type='text' size=30> *<br>"; echo "Sobrenome:<input name='sobrenome' type='text' size=30> *<br>"; echo "Cidade:<input name='cidade' type='text' size=30> *<br>"; echo "Estado:<i>(Exemplo: SP, RS, BA)</i><input name='estado' type='text' size=5> *<br>"; echo "Email: <i>(Exemplo: feitosac@yahoo.com)</i><input name='email' type='text' size=30><br><br>"; echo "Título do Texto:<input name='titulo' type='text' size=30> *<br>"; echo "Subtítulo do Texto:<textarea name='subtitulo' rows=5 cols=30></textarea><br>"; echo "Texto:<textarea name='texto' rows=10 cols=30></textarea> *<br>"; echo "<input name='data' type='hidden' value='$data'<>input name='hora' type='hidden' value='$hora'>"; echo "<input type='submit' value='Cadastrar'>"; echo "</form>"; echo "<br><hr>"; echo "<i>Campos marcados com <b>*</b> são obrigatórios no cadastro.<br>"; echo "<b>Observação</b>: Será inserido no seu cadastro a data atual, bem como a hora atual do cadastro<br>"; echo "Data: $novadata - Hora: $novahora<br>"; ?> FIM DO ARQUIVO cadastra.php Vamos realizar uma pequena análise neste arquivo. Repare que os dados do formulário serão enviados para o script "inserir.php", este, por conseguinte, será o responsável pela inserção desta notícia no MySQL. Outro ponto, é que não existem os campos id, ver, estes, como expliquei, serão inseridos automaticamente pelo MySQL, e os campos data, hora, serão inseridos pelo PHP. Agora é hora de criar o script PHP responsável por isto tudo. Vamos nessa: ARQUIVO inserir.php <?php //Vamos definir as variáveis de data e hora //para inserção no banco de dados //Agora com as variáveis de data e hora criadas //vamos criar uma variável especial para a querie sql $sql = "INSERT INTO noticias (nome, sobrenome, cidade, estado, email, data, hora, titulo, subtitulo, texto) VALUES ('$nome', '$sobrenome', '$cidade', '$estado', '$email', '$data', '$hora', '$titulo', '$subtitulo', '$texto')"; //Agora é hora de contatar o mysql $conexao = mysql_connect("localhost", "root", "root") or die ("Configuração de Banco de Dados Errada!"); //Substitua os valores acima caso não esteje de acordo com sua Tutorial -PHP02 máquina //Selecionando o banco de dados... $db = mysql_select_db("noticias") or die ("Banco de Dados Inexistente!"); //Inserindo os dados $sql = mysql_query($sql) or die ("Houve erro na gravação dos dados, por favor, clique em voltar e verifique os campos obrigatórios!"); echo "<h1>Cadastro efetuado com sucesso!</h1>"; ?> 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. Agora vamos para o próximo e último passo, "Recuperando os dados cadastrados" 3.º Passo - Recuperando os dados cadastradosIrei mostrar como selecionar, por exemplo, as últimas 15 notícias inseridas no MySQL; isto é muito útil, para sites que têm seções do tipo "Últimas Notícias". Isto é feito com PHP novamente; faça conforme o exemplo abaixo, e salve como um arquivo em PHP. ARQUIVO noticias.php <?php //Vamos precisar contar o MySQL novamente $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("noticias"); //Agora é realizar a querie de busca no banco de dados $sql = "SELECT * FROM noticias WHERE ver = 'on' ORDER BY id DESC LIMIT 15"; // Irá selecionar as últimas 15 notícias inseridas // O curioso aqui, é que ele só irá selecionar os campos onde // estiver o ver=on, isto foi discutido logo atrás, como um // controle de notícias pelo webmaster // Por padrão o MySQL colocou off, mas o webmaster terá que // revisar as notícias e alterar o campo ver para as que quiser validar. $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); // Agora iremos "pegar" cada campo da notícia // e organizar no HTML 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); $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo "<b>Código da Notícia</b>: $id"; echo "<br>"; echo "Autor: $nome $sobrenome - ($email)"; echo "<br>"; echo "Cidade: $cidade - Estado: $estado"; echo "<br>"; echo "Data: $novadata - Horário: $novahora"; echo "<br>"; echo "Título da Notícia: $titulo"; echo "<br>"; echo "Subtítulo da Notícia: <i> $subtitulo </i>"; echo "<br>"; echo "Notícia: $texto"; echo "<br>"; echo "Validado pelo Webmaster: "; if ($ver=on) {echo "Sim"; }else {echo "Não"; } echo "<hr>"; } ?> FIM DO ARQUIVO noticias.php Viu como é super simples? Neste script criamos uma variável para cada campo da tabela, assim fica mais fácil de manusear os dados de qualquer forma. Nas variávels novadata, novahora, crie uma função para mostrar as variáveis de uma forma melhor. (agradecimentos a RENAS - Amigão!) Você ainda pode personalizar estas notícias, deixando o layout do seu jeito! OBS: para mostrar todas as notícias em vez de só as últimas 15, apenas crie uma nova variável $sql, como esta abaixo: $sql = "SELECT * FROM noticias WHERE ver = 'on' ORDER BY id DESC"; Pronto! Foi só retirar "LIMIT 15". ;) 4.º Passo - Controle de Notícias para WebmasterNeste passo irei explicar como mostrar todos os dados da tabela, para podermos modificá-los, apagá- los, etc. Primeiramente, devemos criar um arquivo PHP para mostrar todos os dados na tela, para depois podermos manuseá- los. Faça como o exemplo abaixo: ARQUIVO controle.php <?php $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("noticias"); $sql = "SELECT * FROM noticias ORDER BY id DESC"; $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>"; echo "<th width=15>ID:</th>"; echo "<th width=100>Nome:</th>"; echo "<th width=100>Sobrenome:</th>"; echo "<th width=100>Cidade:</th>"; echo "<th width=15>UF:</th>"; echo "<th width=100>Email:</th>"; echo "<th width=30>Data:</th>"; echo "<th width=30>Hora:</th>"; echo "<th width=100>Título:</th>"; echo "<th width=50>Disponível?</th>"; echo "<th width=50>Alterar</th>"; echo "<th width=50>Excluir</th>"; echo "</tr>"; 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"]; Tutorial -PHP 03 $titulo = $linha["titulo"]; $ver = $linha["ver"]; $novadata = substr($data,8,2) . "/" .substr($data,5,2) . "/" . substr($data,0,4); $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo "<tr>"; echo "<th width=15>$id<br></th>"; echo "<th width=100>$nome<br></th>"; echo "<th width=100>$sobrenome<br></th>"; echo "<th width=100>$cidade<br></th>"; echo "<th width=15>$estado<br></th>"; echo "<th width=100>$email<br></th>"; echo "<th width=30>$novadata<br></th>"; echo "<th width=30>$novahora<br></th>"; echo "<th width=100>$titulo<br></th>"; echo "<th width=50>$ver<br></th>"; echo "<th width=50><a href='alterar.php?id=$id'>Alterar</a><br></th>"; echo "<th width=50><a href='excluir.php?id=$id'>Excluir</a><br></th>"; echo "</tr>"; echo "<br>"; } echo "</table>"; ?> 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. É muito simples o código, veja só: ARQUIVO excluir.php <?php $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("noticias"); $sql = “DELETE FROM noticias WHERE id='$id'”; $resultado = mysql_query($sql) or die ("Não foi possível realizar a exclusão dos dados."); echo “<h1>A notícia foi excluída com êxito!</h1>”; ?> FIM DO ARQUIVO excluir.php ARQUIVO alterar.php <?php $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("noticias"); $sql = "SELECT * FROM noticias WHERE id='$id'"; $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); $novahora = substr($hora,0,2) . "h" .substr($hora,3,2) . "min"; echo "<h1>Alterar Cadastro...</h1>"; echo "<hr><br>"; echo "<form action='alterar_db.php?id=$id' method='post'>"; echo "Código da Notícia: <input name='id_novo' type='text' value='$id' size=20><br>"; echo "Data: $novadata<br>"; echo "Hora: $novahora<br>"; echo "Nome:<input name='nome_novo' type='text' value='$nome' size=30> *<br>"; echo "Sobrenome:<input name='sobrenome_novo' type='text' value='$sobrenome' size=30> *<br>"; echo "Cidade:<input name='cidade_novo' type='text' value='$cidade' size=30> *<br>"; echo "Estado:<i>(Exemplo: SP, RS, BA)</i><input name='estado_novo' type='text' value='$estado' size=5> *<br>"; echo "Email: <i>(Exemplo: feitosac@yahoo.com)</i><input name='email_novo' type='text' value='$email' size=30><br><br>"; echo "Título do Texto:<input name='titulo_novo' type='text' value='$titulo' size=30> *<br>"; echo "Subtítulo do Texto:<textarea name='subtitulo_novo' rows=5 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' type='text' value='$ver' size=5><br>"; echo "<input type='submit' value='Alterar'>"; echo "</form>"; echo "<br><hr>"; } ?> FIM DO ARQUIVO alterar.php Agora basta criarmos o arquivo alterar_db.php que irá receber os dados deste arquivo (alterar.php) e alterará seus respectivos dados no MySQL. É muito simples: ARQUIVO alterar_db.php <?php $conexao = mysql_connect("localhost","root","root"); $db = mysql_select_db("noticias"); $sql = "UPDATE noticias SET id='$id_novo',nome='$nome_novo' ,sobrenome='$sobrenome_novo',cidade='$cidade_novo',estado='$ estado_novo' ,email='$email_novo',titulo='$titulo_novo',subtitulo='$subtitulo_no vo' ,texto='$texto_novo',ver='$ver_novo' WHERE id='$id'"; $resultado = mysql_query($sql) or die ("Não foi possível realizar a consulta ao banco de dados"); echo "<h1>Notícia alterada com sucesso!</h1>"; ?> FIM DO ARQUIVO alterar_db.php Tutorial -PHP04 Como criar um simples sistema de login em PHP/Mysql 1º passo Vamos criar o arquivo de conexão com o banco de dados e chamá-lo de conectar.php: $host = "localhost"; $user = "nome_do_usuario"; $senha = "senha_do_usuario"; $dbname = "nome_do_db"; //conecta ao banco de dados mysql_connect($host, $user, $senha) or die("Não foi possível conectar-se com o banco de dados"); //seleciona o banco de dados mysql_select_db($dbname)or die("Não foi possível conectar-se com o banco de dados"); ?> 2ºpasso (criação das tabelas) Agora vamos criar as tabelas no banco de dados a partir deste script em php: //inclui o arquivo de conexão com o banco de dados include ("conectar.php"); //cria a tabela no db senão retorna a mensagem "não foi possívelcriar a tabela" mysql_query("CREATE TABLE login ( nome VARCHAR(25) NOTNULL, senha VARCHAR (15) NOT NULL )") or die ("não foi possível criar as tabelas"); ?> 3ºpasso (criando um formulário de cadastramento de usuários) Agora vamos criar um formulário de cadastramento de usuários: 4ºpasso (criando o script de cadastramento) Vamos agora criar o documento php de cadastramento, chamando-o de cadastro.php: //conexão com o db include ("conectar.php"); //variaveis enviadas pelo método post $nome = $_POST['nome']; $senha = $_POST['senha']; //insere os valores no db $insere = mysql_query("INSERT INTO `login`( `nome`, `senha`) VALUES ('$nome','$senha')") or die(mysql_error()); if($insere) echo "Cadastro realizado com sucesso!"; Else echo "Não foi possível fazer o seu cadastramento!"; ?> 5ºpasso (criando o script de login) Chamaremos de login.php //conecta com o db include ("conectar.php"); $nome= $_POST['nome']; $senha = $_POST['senha']; //faz a confirmação de nome e senha no db $logar = mysql_query("SELECT * FROM login WHERE nome='$nome' AND senha='$senha'") or die("erro ao selecionar"); /*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á uma rotina para o valor inserido em senha não seja nulo. obs: Aonde esta escrito paginasecreta.php é aonde vc deve colocar a página para onde o script ira redirecionar*/ if (strlen($senha)< 1) echo ' Senha ou apelido não conferem '; elseif (mysql_num_rows($logar)>0 ){ header("location:paginasecreta.php"); }else { echo ' Senha ou apelido não conferem '; } ?> 5ºpasso (criando o o formulário de login) Finalmente o último passo vamos criar o formulário de login: Atenção: este é um sistema de login simples ! Se você desejar um sistema mais seguro, você deve trabalhar com cookies e sessões, assuntos que não foram abordados aqui. Sistema de Busca Primeiramente vamos criar a tabela no MySQL onde os dados serão buscados: CREATE TABLE noticias ( codigo INT(11) NOT NULL DEFAULT '0' AUTO_INCREMENT PRIMARY KEY, titulo VARCHAR(255) NOT NULL, noticia TEXT NOT NULL ); Pronto! A tabela acima é um exemplo de uma tabela de notícia. Bom, agora iremos criar o script de busca: busca.php <form method="POST"> Palavra: <input type="text" name="palavra"> <input type="submit" value="Buscar"> </form> <? 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 '%".$palavra."%' ORDER BY codigo DESC"; $sql = mysql_query($qr); // Executa a query no Banco de Dados $total = mysql_num_rows($sql); // Conta o total ded resultados encontrados echo "Sua busca retornou <b>'$total'</b> resultados.<br>\n"; while($r = mysql_fetch_array($sql)) {// Gera o Loop com os resultados tente denovo tente denovo Tutorial -PHP Nome: Senha: Enviar Nome: Senha: Enviar 05 echo "<hr>\n"; echo $r[noticia]."<br>\n"; } } ?> Pronto, o seu sistema de busca ja esta funcionando. Utilizando Session em PHP Para utilizar session é muito simples e facilita bastante. Session é uma variável global a qual é eliminada quando o usuário fecha o browser. Por exemplo, faremos uma página aonde setaremos um número qualquer para o usuário e esse número só será necessário em outra página muito a frente. Ao invés de ficarmos carregando pagina.php?num=1, criaremos uma session e somente nos preocuparemos com o número setado no final do script. O número será o 1 e o nome do session será "numero". Setando o session: Verificamos se ela ainda não foi setada, e a definimos como 1. Agora, suponhamos que passamos todo o cadastro e agora queremos recuperar esse número. Pronto! Verificamos se ele já foi setado e após apenas mostramos ele na página. Agora, quando precisar, já sabe o que é e como usar uma session. Como fazer Paginação de resultados? Neste tutorial iremos aprender a fazer paginação. Parte 1 Primeiramente vamos executar uma query no mysql. $sql = mysql_query("SELECT * FROM tabela"); 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. <?php session_start(); session_register("numero"); if (!isset($numero)) {$numero = 1; } ?> <?php session_start(); session_register("numero"); if (isset($numero)) {print($numero); } ?> Parte 2 Agora iremos fazer com que o PHP gere os links das páginas: if($pagina > 0) { $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 páginas $url = "$PHP_SELF?pagina=$i"; echo " | <a href="$url">$i</a>"; } if($pagina < $paginas) { $mais = $pagina + 1; $url = "$PHP_SELF?pagina=$mais"; echo " | <a href="$url">Próxima</a>"; } Pronto. Veremos como fica o script inteiro: <? $sql = mysql_query("SELECT * FROM tabela"); $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. while($l = mysql_fetch_array($sql)) { echo "Resultado... n"; } if($pagina > 0) { $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 páginas $url = "$PHP_SELF?pagina=$i"; echo " | <a href="$url">$i</a>"; } if($pagina < ($paginas - 1)) { $mais = $pagina + 1; $url = "$PHP_SELF?pagina=$mais"; echo " | <a href="$url">Próxima</a>"; } ?> Tutorial -PHP06 Tutorial -PHP 07 Macus Vinicus Da R. G. Cardoso Produções Página 1 Página 2 Página 3 Página 4 Página 5 Página 6 Página 7 Página 8
Compartilhar