Como Criar Funções no PHP. Aprenda a reutilizar seu código

Como criar funções no PHP

No ultimo artigo sobre PHP, vimos como fazer inserir registros no banco de dados MySQL. Hoje nós vamos aprender Como Criar Funções no PHP.

O próximo passo será mostrar a lista de produtos. Mas antes disso, vamos melhorar um pouco o que já escrevemos até então. Afinal, é fundamental que o programador escreva código que seja fácil de ser lido e mantido por outros desenvolvedores.

Veja também: Os Melhores Cursos GRATUITOS Com Certificado

Analisando o Código Atual

Primeiramente, logo abaixo encontra-se o nosso código atual, ao analisar ele, podemos ver que é possível melhorar alguns pontos:

<?php include("cabecalho.php"); ?>
    <?php
    $nome = $_GET["nome"];
    $preco = $_GET["preco"];
    
    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
    
    $conexao = mysqli_connect('localhost', 'root', '', 'loja');
    if(mysqli_query($conexao, $query)) {
    ?>
        <p class="alert-success">
            Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso!
        </p>
    <?php
    } else {
    ?>
        <p class="alert-danger">
            ERRO - O produto não foi adicionado!
        </p>
    <?php
    }
    ?>
<?php include("rodape.php"); ?>

Esse if que verifica se deu sucesso está difícil de ler. Vamos extrair para uma variável:

$resultadoDaInsercao = mysqli_query($conexao, $query);
if($resultadoDaInsercao) {
 // codigo continua

Depois de extrair o resultado da inserção, colocando dentro de uma variável, o comando If já ficou melhor, ficou mais fácil de ser lido.

Criando Uma Função

Agora vamos tentar extrair esse bloco de código e inserir para uma função com um nome mais semântico. Para criar uma função devemos utilizar a palavra function conforme exemplo abaixo:

function insereProduto($nome, $preco) {
    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
}

A função está quase pronta. Para que funcione bem, ela precisa receber a conexão também (veja a variável conexao). A função precisa também retornar o resultado:

function insereProduto($conexao, $nome, $preco) {
    $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
    $resultadoDaInsercao = mysqli_query($conexao, $query);
    return $resultadoDaInsercao;
}

Para usá-la, fica fácil, basta chamar a função insereProduto passando os parâmetros de conexão, nome e preço conforme exemplo abaixo:

if(insereProduto($conexao, $nome, $preco)) {
    // continua aqui
}

Além disso, a vantagem de se criar uma função e a reutilização do código. Basta invocar a função sempre que quisermos inserir um produto. O código fica muito mais fácil de ser mantido.

Depois das alterações feitas o nosso código fica assim:

<?php include("cabecalho.php"); ?>
    <?php
    $nome = $_GET["nome"];
    $preco = $_GET["preco"];
    
    function insereProduto($conexao, $nome, $preco) {
        $query = "insert into produtos (nome, preco) values ('{$nome}', {$preco})";
        $resultadoDaInsercao = mysqli_query($conexao, $query);
        return $resultadoDaInsercao;
    }

    $conexao = mysqli_connect('localhost', 'root', '', 'loja');

    if(insereProduto($conexao, $nome, $preco)) {
    ?>
        <p class="alert-success">
            Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso!
        </p>
    <?php
    } else {
    ?>
        <p class="alert-danger">
            ERRO - O produto não foi adicionado!
        </p>
    <?php
    }
    ?>
<?php include("rodape.php"); ?>

Leia também: Os 6 Melhores Livros Para Aprender PHP Sozinho

Melhorando as Cores

Agora vamos fazer algumas alterações nas cores das mensagens. Neste momento a mensagem de sucesso é apresentada com fonte e fundo verde.

Além disso, será que é possível fazer com que apenas o texto fique verde? Claro que sim, para isso, basta trocar a classe alert-success e alert-danger para text-success e text-danger.

    if(insereProduto($conexao, $nome, $preco)) {
    ?>
        <p class="text-success">
            Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso!
        </p>
    <?php
    } else {
    ?>
        <p class="text-danger">
            ERRO - O produto não foi adicionado!
        </p>
    <?php
    }
    ?>

Observação:
Depois tire um tempo para estudar as classes do Bootstrap, pois ele realmente nos ajuda a melhorar a interface do nosso site.

Inserindo Barra de Navegação

Outro ponto muito importante que devemos nos preocupar é a navegabilidade do nosso site.

Ou seja, se você reparar, da página principal não há como chegar na página do formulário; do formulário não há como chegar na página principal.

Portanto, vamos melhorar esse ponto alterando o cabecalho.php, criando um div novo. Veja que usamos as várias classes do Bootstrap, que começam com nav*. Essas classes nos ajudam a criar menus:

<html>
    <head>
        <title>Minha Loja</title>
        <meta charset="utf-8">
        <link rel="stylesheet" href="css/bootstrap.min.css" >
        <link rel="stylesheet" href="css/loja.css">
    </head>
    <body>
        <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div class="navbar-header">
                    <a href="index.php" class="navbar-brand">Minha Loja</a>
                </div>
                <div>
                    <ul class="nav navbar-nav">
                        <li><a href="produto-formulario.php">Adiciona Produto</a></li>
                        <li><a href="sobre.php">Sobre</a></li>
                    </ul>
                </div>
            </div><!-- container acaba aqui -->
        </div>
        <div class="container">
            <div class="principal">

Depois de salvar o arquivo cabecalho.php o resultado deve ser igual a imagem abaixo:

Tela de bem vindo com barra de navegação

Agora sim, esta muito melhor. Nosso site já está mais navegável.

Utilizando Tabela no Formulário

Logo depois, vamos agora melhorar o formulário, que ainda não está bonito. Para isso, vamos fazer uso de tabelas:

<?php include("cabecalho.php"); ?>
    
    <h1>Formulário de Cadastro</h1>
    <form action="adiciona-produto.php">
        <table class="table">
            <tr>
                <td>Nome</td>
                <td><input type="text" name="nome" /></td>
            </tr>
            <tr>
                <td>Preço</td>
                <td><input type="number" name="preco" /></td>
            </tr>
            <tr>
                <td><input type="submit" value="Cadastrar" /></td>
            </tr>
        </table>
    </form>

<?php include("rodape.php"); ?>

Depois de utilizar tabela em nosso fomulário, o resultado deve ser igual a imagem abaixo:

Formulário de cadastro em PHP com barra de navegação

Agora está melhor. O estilo de tabelas do Bootstrap são amigáveis.

Podemos também utilizar a classe form-control nas caixas de texto, que é o estilo próprio do Bootstrap para esse tipo de elemento.

No botão, podemos utilizar os estilos btn btn-primary.

Melhorando a Mensagem de Erro

Para finalizar esse artigo, vamos melhorar a mensagem de erro. Neste momento, quando algo falha, apenas exibimos uma mensagem avisando o usuário, mas não explicamos bem qual foi o erro.

Vamos resolver isso, exibindo o erro que o próprio MySql nos envia. Para isso, basta usar o mysqli_error:

    <?php
    if(insereProduto($conexao, $nome, $preco)) {
    ?>
        <p class="text-success">
            Produto: <?= $nome; ?>, preco: <?= $preco; ?> - adicionado com sucesso!
        </p>
    <?php
    } else {
        $msg = mysqli_error($conexao);
    ?>
        <p class="text-danger">
            O produto <? = $nome; ?> não foi adicionado: <?= $msg ?>
        </p>
    <?php
    }
    ?>

Depois de aplicar as alterações acima, no momento em que faço a inclusão de um produto sem informar o preço, é apresentado a mensagem retornada do MySql conforme imagem abaixo:

Melhorando a mensagem de erro com PHP

Conclusão

Em conclusão, chegamos ao fim de mais um artigo sobre PHP, aprendemos:

Criar funções – Uma técnica super comum e muito importante no mundo da programação, com isso podemos separar blocos de códigos que poderão ser reutilizados.

Capturar a mensagem de erro que vem do MySql, dessa forma podemos entender exatamente o que o MySQL esta reclamando, facilitando o entendimento dos erros de banco de dados.

Enfim, espero que este artigo tenha te ajudado a dar mais um passo em busca de seus objetivos. 😉

Gostou do conteúdo?
Comente aqui em baixo o que você achou desse artigo.

Não perca tempo! Dê um passo decisivo em direção ao seu sucesso profissional agora mesmo. Basta clicar no botão abaixo e abrir as portas para mais de 1400 cursos completos, todos com certificados válidos.

ACESSAR CURSOS COM CERTIFICADO

Muito Obrigado pela audiência e lhe desejo TERABYTES DE SUCESSO!!! 💻

Tags: | |

Sobre o Autor

Programador Viking
Programador Viking

DICA EXTRA: Algumas pessoas estão me perguntando qual é o curso que recomendo para quem deseja aprender programação, mesmo sem ter qualquer conhecimento sobre o assunto. Minha recomendação, tanto para quem está iniciando, como para quem já possui mais experiência, é essa AQUI...

2 Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.


plugins premium WordPress