Baixe o app para aproveitar ainda mais
Prévia do material em texto
<?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Documentação PHP https://www.php.net/manual/pt_BR/ Criar banco de dados e tabela 1 - Criar banco de dados com o nome ‘crud’ no MySQL 2 - Criar tabela ‘paciente’ com os campos abaixo: Paciente id (chave primária) cpf nome telefone email CREATE TABLE `crud` . `paciente` ( `id` INT NOT NULL AUTO_INCREMENT , `cpf` VARCHAR ( 11 ) NOT NULL , `nome` VARCHAR ( 100 ) NOT NULL , `telefone` VARCHAR ( 11 ) NOT NULL , `email` VARCHAR ( 100 ) NOT NULL , PRIMARY KEY ( `id` )) ENGINE = InnoDB ; Criar index.php usando bootstrap 1- criar arquivo ‘index.php’ incluindo bootstrap conforme código abaixo: Documentação bootstrap: https://getbootstrap.com/docs/4.3/getting-started/introduction/ Exemplo ‘index.php’ <! DOCTYPE html > < html lang = "pt-BR" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < meta http-equiv = "X-UA-Compatible" content = "ie=edge" > < title > CRUD PHP procedural </ title > <!-- CSS do Bootstrap --> < link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" https://www.php.net/manual/pt_BR/ http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/create-table.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/create-table.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/numeric-types.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_not http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/string-types.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_not http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/string-types.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_not http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/string-types.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_not http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/string-types.html http://localhost/phpmyadmin/url.php?url=https://dev.mysql.com/doc/refman/5.5/en/logical-operators.html#operator_not https://getbootstrap.com/docs/4.3/getting-started/introduction/ <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous" > </ head > < body > < header > <!-- AQUI VAI O CABEÇALHO --> </ header > < section > <!-- AQUI VAI O CONTEÚDO PRINCIPAL --> </ section > < footer > <!-- AQUI VAI O RODAPÉ --> </ footer > <!-- JavaScript --> < script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin = "anonymous" ></ script > < script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity = "sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin = "anonymous" ></ script > < script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity = "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin = "anonymous" ></ script > </ body > </ html > 2 - incluir no <header> o menu usando bootstrap documentação bootstrap: https://getbootstrap.com/docs/4.3/components/navbar/ menu deve ficar dessa forma: https://getbootstrap.com/docs/4.3/components/navbar/ <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Separar cabeçalho e rodapé em arquivos diferentes 1 - Recortar o código abaixo da página ‘index.php’ e colar em um novo arquivo chamado “cabecalho.php” e salvar arquivo. <! DOCTYPE html > < html lang = "pt-BR" > < head > < meta charset = "UTF-8" > < meta name = "viewport" content = "width=device-width, initial-scale=1.0" > < meta http-equiv = "X-UA-Compatible" content = "ie=edge" > < title > CRUD PHP procedural </ title > <!-- CSS do Bootstrap --> < link rel = "stylesheet" href = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity = "sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin = "anonymous" > </ head > < body > < header > < nav class = "navbar navbar-expand-lg navbar-light bg-light" > < a class = "navbar-brand" href = "#" > CRUD PHP </ a > < button class = "navbar-toggler" type = "button" data-toggle = "collapse" data-target = "#navbarSupportedContent" aria-controls = "navbarSupportedContent" aria-expanded = "false" aria-label = "Toggle navigation" > < span class = "navbar-toggler-icon" ></ span > </ button > < div class = "collapse navbar-collapse" id = "navbarSupportedContent" > < ul class = "navbar-nav mr-auto" > < li class = "nav-item active" > < a class = "nav-link" href = "#" > Paciente </ a > </ li > </ div > </ nav > </ header > <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> 2 - Recortar o código abaixo da página ‘index.php’ e colar em um novo arquivo chamado “rodape.php” e salvar arquivo. < footer > <!-- AQUI VAI O RODAPÉ --> </ footer > <!-- JavaScript --> < script src = "https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity = "sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin = "anonymous" ></ script > < script src = "https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity = "sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin = "anonymous" ></ script > < script src = "https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity = "sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin = "anonymous" ></ script > </ body > </ html > 3 - Agora no arquivo “index.php”, vamos utilizar o comando ‘require_once’ do php para importar os arquivos ‘cabecalho.php’ e ‘rodape.php’ na página ‘index.php’. o arquivo ‘index.php’ deve ficar assim: <!-- importa o arquivo cabeçalho --> <?php require_once ( "cabecalho.php" ); ?> < section > <!-- AQUI VAI O CONTEUDO PRINCIPAL --> </ section > <!-- importa o arquivo rodapé --> <?php require_once ( "rodape.php" ); ?> Assim, você consegue reaproveitar o código do cabeçalho e rodapé em todas as páginas que criar aumentando a produtividade. Existem outros comandos para fazer importação como ‘include’ e ‘require’. Pesquise a diferença desses comandos no PHP. O que descobriu? <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Criar a conexão com o banco de dados Documentação funções mysql no php = https://www.php.net/manual/pt_BR/book.mysql.php1 - criar o arquivo ‘conexao.php’ segue exemplo do código de conexão utilizando programação procedural <?php //conexao com banco de dados $servidor = "localhost" ; $usuario = "root" ; $senha = "" ; $banco = "crud" ; $conexao = mysqli_connect ( $servidor , $usuario , $senha , $banco ); //caso ocorra erro na conexao exibe mensagem de erro if (! $conexao ) { echo "ERRO = " . mysqli_connect_error (); } Criar arquivo de acesso ao banco de dados 1 - criar um arquivo chamado ‘banco-paciente.php’, esse arquivo será responsável por ter todas as funções (select, insert, update e delete) de acesso do banco de dados. Dessa forma, o código fica organizado. Pois, todo comando SQL está dentro desse arquivo. Segue exemplo abaixo: <?php require_once ( "conexao.php" ); //função para retornar todos os pacientes function listarPaciente ( $conexao ){ //monta SQL $query = " SELECT id, cpf, nome, telefone, email FROM paciente" ; //executa SQL $resultado = mysqli_query ( $conexao , $query ); //cria uma array de pacientes $pacientes = array (); //le resultado do SQL e coloca dentro da array while ( $dados = mysqli_fetch_array ( $resultado )) { array_push ( $pacientes , $dados ); } //retorna array com os dados return $pacientes ; } https://www.php.net/manual/pt_BR/book.mysql.php <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> //função para buscar um paciente por ID function buscarPaciente ( $conexao , $id ) { //monta SQL para pegar um paciente especifico $query = " SELECT id, cpf, nome, telefone, email FROM paciente WHERE id = $id " ; //executa SQL $resultado = mysqli_query ( $conexao , $query ); return mysqli_fetch_assoc ( $resultado ); } //função para inserir um paciente function inserirPaciente ( $conexao , $cpf , $nome , $telefone , $email ){ $cpf = mysqli_escape_string ( $conexao , $cpf ); $nome = mysqli_escape_string ( $conexao , $nome ); $telefone = mysqli_escape_string ( $conexao , $telefone ); $email = mysqli_escape_string ( $conexao , $email ); //monta o SQL $query = "insert into paciente (cpf, nome, telefone, email) values (' $cpf ', ' $nome ', ' $telefone ',' $email ')" ; //executa o SQL $resultadoInsercao = mysqli_query ( $conexao , $query ); //retorna resultado da execucao return $resultadoInsercao ; } //função para alterar um paciente function alterarPaciente ( $conexao , $id , $cpf , $nome , $telefone , $email ) { $id = mysqli_escape_string ( $conexao , $id ); $cpf = mysqli_escape_string ( $conexao , $cpf ); $nome = mysqli_escape_string ( $conexao , $nome ); $telefone = mysqli_escape_string ( $conexao , $telefone ); $email = mysqli_escape_string ( $conexao , $email ); //monta SQL $query = " UPDATE paciente SET cpf = ' $cpf ', nome = ' $nome ', telefone = ' $telefone ', email = ' $email ' WHERE id = $id " ; //executa o SQL $resultadoAlteracao = mysqli_query ( $conexao , $query ); //retorna resultado da execucao return $resultadoAlteracao ; } <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> //função para excluir um paciente function removerPaciente ( $conexao , $id ) { $id = mysqli_escape_string ( $conexao , $id ); //monta SQL $query = " DELETE FROM paciente where id = $id " ; //executa SQL $resultadoExclusao = mysqli_query ( $conexao , $query ); return $resultadoExclusao ; } ?> <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Criar tela para listar paciente 1 - criar arquivo “paciente-lista.php’, não esquecer de importar o cabeçalho e rodapé nesse arquivo. 2 - criar a tabela usando bootstrap documentação bootstrap: https://getbootstrap.com/docs/4.3/content/tables/ 3 - o arquivo ‘paciente-lista.php’ deve ficar assim. não esqueça de ajustar o link do menu para ‘chamar’ para o arquivo ‘paciente-lista.php’ Criar tela de cadastro de paciente 1 - criar arquivo “paciente-form.php’, não esquecer de importar o cabeçalho e rodapé nesse arquivo. 2 - criar o formulário usando bootstrap documentação bootstrap: https://getbootstrap.com/docs/4.3/components/forms/ 3 - o arquivo ‘paciente-form.php’ deve ficar assim. não esqueça de ajustar o link do botão ‘novo paciente’ da tela ‘paciente-lista.php’ para chamar ‘paciente-form.php’ https://getbootstrap.com/docs/4.3/content/tables/ https://getbootstrap.com/docs/4.3/components/forms/ <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Inserir paciente no banco de dados 1 - agora vamos criar o código PHP para fazer o insert no banco de dados, para isso crie um arquivo chamado ‘paciente-action-inserir.php’. Exemplo do código: <?php require_once ( "cabecalho.php" ); require_once ( "banco-paciente.php" ); //pega as informações do POST do formulário $cpf = $_POST [ 'cpf' ]; $nome = $_POST [ 'nome' ]; $telefone = $_POST [ 'telefone' ]; $email = $_POST [ 'email' ]; //chamar função de inserir e verificar sucesso da execução if ( inserirPaciente ( $conexao , $cpf , $nome , $telefone , $email )): echo '<div class="container alert alert-success">Paciente cadastrado com sucesso</div>' ; else : echo '<div class="container alert alert-danger">Erro no cadastrado de paciente</div>' ; endif ; 2 - Ajuste as informações do form para chamar ‘paciente-action-inserir.php’ < form action = "paciente-action-inserir.php" method = "post" > 3 - efetue o teste, neste momento não estamos fazendo nenhuma validação dos campos antes de inserir no banco de dados. Segue o resultado, consulta mysql para verificar. <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Consultar lista de pacientes no banco de dados 1 - agora vamos criar o código PHP para fazer a consulta e listar na tabela do arquivo ‘paciente-lista.php’. 2 - incluir no inicio do arquivo ‘paciente-lista.php’ o código abaixo. <?php require_once ( "banco-paciente.php" ); //chama função que lista os pacientes do banco de dados e retorna uma array $pacientes = listarPaciente ( $conexao ); ?> 3 - Agora que temos uma array chamada $pacientes, vamos ler esse array e montar a tabela. Segue código: < table class = "table" > < thead > < tr > < th scope = "col" > ID </ th > < th scope = "col" > CPF </ th > < th scope = "col" > Nome </ th > < th scope = "col" > Telefone </ th > < th scope = "col" > Email </ th > < th scope = "col" ></ th > </ tr > </ thead > < tbody > <?php //ler todos os registros do array pacientes e colocar na tabela foreach ( $pacientes as $paciente ) : ?> < tr > < td > <?= $paciente [ 'id' ] ?> </ td > < td > <?= $paciente [ 'cpf' ] ?> </ td > < td > <?= $paciente [ 'nome' ] ?> </ td > < td > <?= $paciente [ 'telefone' ] ?> </ td> < td > <?= $paciente [ 'email' ] ?> </ td > < td > < a href = "#" class = "btn btn-info" > Alterar </ a > < a href = "#" class = "btn btn-danger" > Excluir </ a > </ td > </ tr > <?php endforeach ?> </ tbody > </ table > <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Excluir paciente no banco de dados 1- Para chamar o programa de exclusão, temos que ajustar o link do botão excluir no arquivo ‘paciente-lista-php’, ficando dessa forma: < a href = "paciente-action-excluir.php?id= <?= $paciente [ 'id' ] ?> " class = "btn btn-danger" onclick = " return confirm ('Confirma exclusão de <?= $paciente [ 'nome' ] ?> ?');" > Excluir </ a > 2 - agora vamos criar o código PHP para fazer a exclusão do paciente. Para isso, criar o arquivo ‘paciente-action-excluir.php’ Exemplo do código: <?php require_once ( "cabecalho.php" ); require_once ( "banco-paciente.php" ); //pega as informações formulário $id = $_GET [ 'id' ]; //chamar função de inserir e verificar sucesso da execução if ( removerPaciente ( $conexao , $id )): echo '<div class="container alert alert-success">Paciente excluido com sucesso</div>' ; else : echo '<div class="container alert alert-danger">Erro na exclusão de paciente</div>' ; endif ; 3 - Efetuar o teste e chamar a tela ‘paciente-lista.php’ para verificar o resultado Alterar paciente no banco de dados 1- Para chamar a tela de alteração, temos que ajustar o link do botão alterar no arquivo ‘paciente-lista-php’, ficando dessa forma: < a href = "paciente-form-alterar.php?id= <?= $paciente [ 'id' ] ?> " class = "btn btn-info" > Alterar </ a > 2 - agora vamos criar a tela para alteração, ela será igual a página de inclusão adicionando somente o campo com o ID do paciente (escondido) e a consulta específica do paciente para pegar os dados para preencher o formulário. Criar o arquivo ‘paciente-form-alterar.php’, conforme código abaixo: <!-- importa o arquivo cabeçalho --> <?php require_once ( "cabecalho.php" ); ?> <?php require_once ( "banco-paciente.php" ); //pega o id no GET $id = $_GET [ 'id' ]; //chama função que busca o paciente para valorizar os campos do formulário <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> $paciente = buscarPaciente ( $conexao , $id ); ?> < section class = "container mt-3" > < div > < h3 > Alterar Paciente </ h3 > </ div > < div > < form action = "paciente-action-editar.php" method = "post" > < input type = "hidden" id = "txtId" name = "id" value = " <?= $paciente [ 'id' ] ?> " > < div class = "form-group" > < label for = "txtCPF" > CPF </ label > < input type = "number" class = "form-control" id = "txtCPF" name = "cpf" placeholder = "digite seu CPF" value = " <?= $paciente [ 'cpf' ] ?> " > </ div > < div class = "form-group" > < label for = "txtNome" > Nome </ label > < input type = "text" class = "form-control" id = "txtNome" name = "nome" placeholder = "digite seu nome" value = " <?= $paciente [ 'nome' ] ?> " > </ div > < div class = "form-group" > < label for = "txtTelefone" > Telefone </ label > < input type = "number" class = "form-control" id = "txtTelefone" name = "telefone" placeholder = "digite seu telefone" value = " <?= $paciente [ 'telefone' ] ?> " > </ div > < div class = "form-group" > < label for = "txtEmail" > Email </ label > < input type = "email" class = "form-control" id = "txtEmail" name = "email" placeholder = "digite seu email" value = " <?= $paciente [ 'email' ] ?> " > </ div > < a href = "paciente-lista.php" class = "btn btn-secondary" > Cancelar </ a > < button type = "submit" class = "btn btn-success" name = "btnAlterar" > Alterar </ button > </ form > </ div > </ section > <!-- importa o arquivo rodapé --> <?php require_once ( "rodape.php" ); ?> 2 - agora vamos criar o código PHP para fazer a alteração do paciente. Para isso, criar o arquivo ‘paciente-action-editar.php’ que será chamado pelo formulário acima. Exemplo do código: <?php require_once ( "cabecalho.php" ); require_once ( "banco-paciente.php" ); <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> //pega as informações do POST do formulário $id = $_POST [ 'id' ]; $cpf = $_POST [ 'cpf' ]; $nome = $_POST [ 'nome' ]; $telefone = $_POST [ 'telefone' ]; $email = $_POST [ 'email' ]; //chamar função de inserir e verificar sucesso da execução if ( alterarPaciente ( $conexao , $id , $cpf , $nome , $telefone , $email )): echo '<div class="container alert alert-success">Paciente alterado com sucesso</div>' ; else : echo '<div class="container alert alert-danger">Erro na alteração de paciente</div>' ; endif ; 3 - Efetuar o teste e chamar a tela ‘paciente-lista.php’ para verificar o resultado Nenhum resultado na lista de paciente 1- Quando a lista de paciente estiver vazia, mostrar a mensagem “Nenhum paciente cadastrado.” 2 - Para mostrar a mensagem, verifique o tamanho do array e pergunte em um IF para mostrar a mensagem ou mostrar a tabela <?php if ( sizeof ( $pacientes ) > 0 ): ?> < table class = "table" > ... </ table > <?php else : ?> < p > Nenhum paciente cadastrado. </ p > <?php endif ?> Usando sessão para mostrar mensagem 1- Você sabe o que é sessão? Segue um artigo sobre o assunto: https://klauslaube.com.br/2012/04/05/entendendo-os-cookies-e-sessoes.html https://klauslaube.com.br/2012/04/05/entendendo-os-cookies-e-sessoes.html <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> 2 - agora vamos usar a sessão para armazenar a mensagem da execução de alguma operação para exibir a mensagem em outra página. Exemplo do uso da sessão no arquivo ‘paciente-action-inserir.php’ <?php require_once ( "cabecalho.php" ); require_once ( "banco-paciente.php" ); //inicia a sessão que será utilizada no caso de sucesso ou erro session_start (); //pega as informações do POST do formulário $cpf = $_POST [ 'cpf' ]; $nome = $_POST [ 'nome' ]; $telefone = $_POST [ 'telefone' ]; $email = $_POST [ 'email' ]; if ( inserirPaciente ( $conexao , $cpf , $nome , $telefone , $email )): $_SESSION [ "mensagem" ] = "Paciente cadastrado com sucesso." ; header ( "Location: paciente-lista.php" ); else : $_SESSION [ "mensagem" ] = "Erro ao cadatrar paciente." ; header ( "Location: paciente-lista.php" ); endif ; Nesse código, iniciamos a sessão ‘session_start();’ criamos a variável na sessão com o nome de ‘mensagem’ e atribuímos uma mensagem para ela. O comando header location é somente para direcionar para a página‘paciente-lista.php’ 3 - agora no arquivo ‘paciente-lista.php’, vamos acessar a sessão e pegar a mensagem para exibir na tela Incluir o código abaixo: <?php //inicia sessão session_start (); //verifica se a sessão 'mensagem' existe if ( isset ( $_SESSION [ 'mensagem' ])) : //exibe conteudo da 'mensagem' echo $_SESSION [ 'mensagem' ]); //apaga a 'mensagem' da sessão unset ( $_SESSION [ 'mensagem' ]); endif ; ?> <?PHP echo (“PHP Procedural - Fazendo um CRUD usando Bootstrap”); ?> Personalizando a mensagem usando bootstrap 1 - vamos criar mensagem diferente na sessão uma para sucesso e outra para erro. Para isso vamos usar as palavras da classe do bootstrap que vai nos ajudar. Exemplo código: if ( inserirPaciente ( $conexao , $cpf , $nome , $telefone , $email )): $_SESSION [ "success" ] = "Paciente cadastrado com sucesso." ; header ( "Location: paciente-lista.php" ); else : $_SESSION [ "danger" ] = "Erro ao cadatrar paciente." ; header ( "Location: paciente-lista.php" ); endif ; 2- agora vamos criar um arquivo novo, que terá uma função para tratar as mensagens da sessão Arquivo ‘mostrar-alerta.php’, segue código <?php session_start (); function mostraAlerta ( $tipo ) { if ( isset ( $_SESSION [ $tipo ])) : ?> < p class = "p-3 alert- <?= $tipo ?> " > <?= $_SESSION [ $tipo ] ?> </ p > <?php unset ( $_SESSION [ $tipo ]); endif ; } 3- agora no arquivo ‘paciente-lista.php’, vamos usar a função do arquivo ‘mostrar-alerta’ para exibir a mensagem com o css personalizado <?php mostraAlerta ( "success" ); mostraAlerta ( "danger" ) ?>
Compartilhar