[Tutorial] [PHP] Como criar um pequeno cуdigo para aceder a base de dados.
#1

Boa noite a todos.
Hoje, estou aqui para mostrar como criar um pequeno cуdigo em PHP, usando Mysql, para aceder uma base de dados.
Jб vi muita gente a usar sistemas baseados em SQL sem fazer escaping, etc.
Portanto, estou aqui para *ensinar* como inserir, selecionar e remover dados, de uma forma segura.
[Modificar й com o SELECT, mas com o "SET", sendo como jб sгo 2:30 da manhг.. nгo vou falar sobre ela.

Portanto, bem... vamos lб!

Aquilo que vamos precisar й de:
  1. Um "web server" com php, e o mysql.
  2. Um "IDE" de jeito para criar um cуdigo PHP[Neste caso, vou usar o visual studio ultimate 2013]
  3. Inteligкncia, e nada de burrice.
  4. E uma mъsica ambiente para acalmar o stress, e trabalhar-mos melhor.
Etapa 1:
Vamos criar um ficheiro / projeto em php.


Etapa 2:
Vamos preparar a base de dados[e um utilizador, no meu caso]...


Etapa 3:
Vamos criar uma tabela pelo PHPMyAdmin...


Atй agora, o nosso progresso foi:
  1. Criar um projeto / ficheiro de php
  2. Criar uma base de dados
  3. Adicionar uma tabela а base de dados*.
*Onde nid tкm auto incrementaзгo, e nгo necessita de um valor introduzido por nуs[null]
Titulo, que й uma string, com tamanho mбximo de 128 bytes.
E o Texto, como nгo sabemos que conteъdo e o tamanho dele que vamos lб colocar, vamos "declara-lo" como "Text"[o]

Etapa 4:

Agora, ire-mos criar uma conexгo inicial а base de dados, verificando, assim, se ela estб a trabalhar ou nгo.

Cуdigo usado:
PHP код:
<?php
$mysql 
= new mysqli("********","samptest""lol123""samptest"); // iremos ligar а base de dados.
if($mysql->connect_error == "") { // se nao houve nenhum erro a ligar
    
echo "Conectado a base de dados!"// informamos ao utilizador que foi efetuada uma ligacao, com sucesso, а base de dados
    
$mysql->close(); // fechamos a ligaзгo
}
else 
    echo 
"Nao conectado a base de dados.<br />Error: ".$mysql->connect_error// informamos ao utilizador que nгo foi possivel ligar а base de dados
?>
Bem, por agora, estб tudo a correr bem!

Etapa 5:
Agora, ire-mos adicionar dados а base de dados, com a utilizaзгo das "forms" do html.
Primeiro, fazemos a pбgina HTML[5].
Код HTML:
<html>
    <head>
        <title>SA-MP Tutorial</title>
    </head>
    <body>
        <form action="" method="post">
            Introduza o titulo: <input type="text" name="Titulo" maxlength="128" />
            <p>&nbsp;</p>
            Introduza o texto:  <textarea name="texto"></textarea><br />
            <input type="submit" name="enviar" value="Enviar" />
        </form>
    </body>
</html>
Agora, cria-mos o cуdigo PHP dentro do cуdigo HTML.
PHP код:
<?php
$mysql 
= new mysqli("******""samptest""lol123""samptest");
if(
$mysql->connect_error != "") { // verificamos se ocorreu algum erro
    
die("Nao foi possivel conectar-se a base de dados."); // para-mos a execucao o codigo com o "die", a informar que nao foi possivel conectar-se a base de dados.
}
?>
<html>
    <head>
        <title>SA-MP Tutorial</title>
    </head>
    <body>
        <?php 
        
if(isset($_POST['enviar'])) { // se o utilizador carregou no botao enviar, iremos introduzir os dados, se validados.
            
if(empty($_POST['Titulo'])) {
                echo 
'Nao inseriu o titulo!<br />
                      <a href="index.php">Tentar novamente</a>'
;
            } elseif(empty(
$_POST['texto'])) {
                echo 
'Nao inseriu o texto!<br />
                      <a href="index.php">Tentar novamente</a>'
;
            } else {
                
$titulo htmlentities($mysql->escape_string($_POST['Titulo'])); // ire-mos limpar o conteudo de entrada no $_POST titulo
                
$texto htmlentities($mysql->escape_string($_POST['texto'])); // ire-mos limpar o conteudo de entrada no $_POST texto.
                
$mysql->query("INSERT INTO `teste` (`Titulo`, `Texto`) VALUES ('{$titulo}', '{$texto}')");
                if(
$mysql->error == "")
                    echo 
"Os dados foram introduzidos com sucesso na base de dados!<br />
                         <a href=\"index.php\">Voltar atras</a>"
;
                else {
                    echo 
"Nao foi possivel colocar os dados na base de dados.<br />
                          Erro: "
.$mysql->error.".";
                }
            }
        } else {
        
?>
        <form action="" method="post">
            Introduza o titulo: <input type="text" name="Titulo" maxlength="128" />
            <p>&nbsp;</p>
            Introduza o texto:  <textarea name="texto"></textarea><br />
            <input type="submit" name="enviar" value="Enviar" />
        </form>
        <?php
        
}
        
?>
    </body>
</html>
<?php
$mysql
->close(); // fechamos a ligacao com a base de dados
?>
Neste momento, jб estamos a introduzir dados "limpos" na base de dados.
Mesmo que o utilizador tente fazer SQL Injection, ele irб falhar, porque estamos totalmente protegidos.
Resultado:




Etapa 6:
Fazer um "Delete", com dados introduzidos pelo utilizador, totalmente protegidos.
Para isto, iremos criar mais "dados" no banco de dados.[Eu acho que para isto, nгo й preciso foto]
E iremos usar o seguinte cуdigo:
PHP код:
<?php
$mysql 
= new mysqli("******""samptest""lol123""samptest");
if(
$mysql->connect_error != "") { // verificamos se ocorreu algum erro
    
die("Nao foi possivel conectar-se a base de dados."); // para-mos a execucao o codigo com o "die", a informar que nao foi possivel conectar-se a base de dados.
}
?>
<html>
    <head>
        <title>SA-MP Tutorial</title>
    </head>
    <body>
        <?php
        
if(isset($_POST['remover'])) { // se o utilizador escolheu uma opcao para remover...
            
if(isset($_POST['id'])) {
                
$id str_replace('Noticia numero '''$_POST['id']); // iremos limpar os dados do input.
                
$id $mysql->escape_string($id); // iremos limpar os dados para a input.
                //// vamos apagar a noticia escolhida.
                
@$mysql->query("DELETE FROM `teste` WHERE `nid` = '{$id}'");
                if(
$mysql->error == "") {
                    echo 
'A noticia foi removida com sucesso!<br />
                        <a href="index.php">Voltar atras</a>'
;
                } else {
                    echo 
'Ocorreu um erro ao remover a noticia.<br />
                          Erro: '
.$mysql->error.'<br />
                          <a href="index.php">Voltar atras</a>'
;
                }
            } else {
                echo 
'Nenhuma noticia selecionada!<br />
                      <a href="index.php">Voltar atras</a>'
;
            }
        } else { 
// senao, apresentamos os dados na base de dados.
            
$dados = array(); // onde os nossos dados com os numeros das "noticias" irao ficar guardados.
            
$data $mysql->query("SELECT * FROM `teste` ORDER BY `nid` ASC"MYSQLI_USE_RESULT); // iremos pedir a base de dados todas as "rows" da tabela teste, organizados de ordem crescente, pelo conteudo da coluna de nid
            
            
while($buffer $data->fetch_Array()) { // enquanto houver dados para "apanhar", iremos buscalos.
                
$dados[count($dados)] = $buffer['nid']; // iremos guardar sucessivamente dados dentro da variavel $dados, com o numero da noticia.
            
}
            
//// agora, vamos apresentar os dados. :)
            
?>
            <form action="" method="post">
                Escolha uma noticia para remover.<br />
                <select name="id">
                    <?php
                    
foreach($dados as $op) {
                        echo 
'<option>Noticia numero '.$op.'</option>';   
                    }
                    
?>
                </select>
                <input type="submit" name="remover" value="Remover" />
            </form>
            <?php
        
}
        
?>
    </body>
</html>
Resultado:


Etapa 7[A etapa final]
Executar um "select", o qual, irб mostrar o conteъdo da notнcia selecionada.
Para isso, precisamos de um cуdigo parecido a este:
PHP код:
<?php
$mysql 
= new mysqli("*******""samptest""lol123""samptest");
if(
$mysql->connect_error != "") { // verificamos se ocorreu algum erro
    
die("Nao foi possivel conectar-se a base de dados."); // para-mos a execucao o codigo com o "die", a informar que nao foi possivel conectar-se a base de dados.
}
?>
<html>
    <head>
        <title>SA-MP Tutorial</title>
    </head>
    <body>
        <?php
        
if(isset($_POST['mostrar'])) { // se o utilizador escolheu uma opcao para mostrar...
            
if(isset($_POST['id'])) {
                
$id str_replace('Noticia numero '''$_POST['id']); // iremos limpar os dados do input.
                
$id $mysql->escape_string($id); // iremos limpar os dados para a input.
                //// vamos selecionar a noticia escolhida.
                
$data = @$mysql->query("SELECT * FROM `teste` WHERE `nid` = '{$id}'"MYSQLI_USE_RESULT);
                if(
$mysql->error == "") {
                    
$dados $data->fetch_Array(); // iremos guardar os dados da noticia dentro de um vetor
                    
echo 'Numero: '.$dados['nid']."<br />"// iremos mostrar
                    
echo 'Titulo: '.$dados['Titulo']."<br />"// o conteudo
                    
echo 'Texto: '.$dados['Texto']."<br />"// do vetor
                    
echo '<a href="index.php">Voltar atras.</a>';
                } else {
                    echo 
'Ocorreu um erro ao selecionar a noticia solicitada.<br />
                          Erro: '
.$mysql->error.'<br />
                          <a href="index.php">Voltar atras</a>'
;
                }
            } else {
                echo 
'Nenhuma noticia selecionada!<br />
                      <a href="index.php">Voltar atras</a>'
;
            }
        } else { 
// senao, apresentamos os dados na base de dados.
            
$dados = array(); // onde os nossos dados com os numeros das "noticias" irao ficar guardados.
            
$data $mysql->query("SELECT * FROM `teste` ORDER BY `nid` ASC"MYSQLI_USE_RESULT); // iremos pedir a base de dados todas as "rows" da tabela teste, organizados de ordem crescente, pelo conteudo da coluna de nid
            
            
while($buffer $data->fetch_Array()) { // enquanto houver dados para "apanhar", iremos buscalos.
                
$dados[count($dados)] = $buffer['nid']; // iremos guardar sucessivamente dados dentro da variavel $dados, com o numero da noticia.
            
}
            
//// agora, vamos apresentar os dados. :)
            
?>
            <form action="" method="post">
                Escolha uma noticia para mostra.<br />
                <select name="id">
                    <?php
                    
foreach($dados as $op) {
                        echo 
'<option>Noticia numero '.$op.'</option>';   
                    }
                    
?>
                </select>
                <input type="submit" name="mostrar" value="Mostrar" />
            </form>
            <?php
        
}
        
?>
    </body>
</html>
Resultado:



Bem, espero que tenham gostado & percebido deste tutorial.
Fico а espera de crнticas construtivas.
Reply
#2

A ideia do tutorial em sн й boa, porйm o tуpico ficou muito mal organizado, todo bagunзado, e as images nгo estгo a funcionar.

Recomendo que dк uma modificada no tуpico.
Reply
#3

Quote:
Originally Posted by Dolby
Посмотреть сообщение
A ideia do tutorial em sн й boa, porйm o tуpico ficou muito mal organizado, todo bagunзado, e as images nгo estгo a funcionar.

Recomendo que dк uma modificada no tуpico.
As imagens estгo, aqui, a trabalhar corretamente.
E eu jб estou um pouco a dormir, sгo 2:40 da manhг, mais logo dou uma arrumadela no tуpico.
E tambйm posso dizer que sou pйssimo a arrumar conteъdo corretamente >.<
Reply
#4

Dei uma passada de olho e irei ler melhor..

De cara assim.. Parace estar otimo Parabйns!
Reply
#5

estava mesmo a precisar de um tuto deste genero

obrigado.
Reply
#6

O tutorial jб foi mais organizado, e pus as imagens hospedados noutro host[imgur].
Espero que *gostem*.
Reply
#7

Parabйns, bem legal..

#Off

IE vey ? AUSHHUA
Reply
#8

Eu conforme carregava F5[compilar em C#, C/++, VB], para o PHP й para iniciar o internet explorer e ir logo para o script que quero testar.

Como podes ver, utilizei o Firefox para criar a base de dados e a tabela.
Reply
#9

Bom trabalho man, creio que faltou uma explicaзгozinha aн das funзхes PHP, creio que jogar o cуdigo e mostrar como instalar, nгo й uma boa forma de ensino





Quote:
Originally Posted by DannielCooper
Посмотреть сообщение
Parabйns, bem legal..

#Off

IE vey ? AUSHHUA
Internet Explorer й um dos navegadores mais SEGUROS(acho que vocк jб deveria saber disto), o navegador ganhou uma mб fama pois em alguns computadores ele й lento, mas vocк tem que saber, se tirar o IE do seu PC, nada mais relacionado internet funciona.
Reply
#10

Quote:
Originally Posted by zSuYaNw
Посмотреть сообщение
Bom trabalho man, creio que faltou uma explicaзгozinha aн das funзхes PHP, creio que jogar o cуdigo e mostrar como instalar, nгo й uma boa forma de ensino
No prуximo tutorial irei ter isso em mente, obrigado pelo post!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)