PHP - HTML Form with more than two buttons and each perform a different action

Asked

Viewed 1,967 times

0

I need to create a form that creates, deletes, and edits a record in my database. My question is: How to make it perform an action by clicking the button?

If I click on any button it only performs the save action.

The buttons need to be with the icons, and not just written 'Save'.

Follows the codes:

cadastroCliente.html

<html>
<head>
    <meta charset="utf-8">
    <title>Cadastrar cliente - World Bikes</title>
    <link href="css/ordemstyle.css" rel="stylesheet" type="text/css">
    <link href="css/fundo.css" rel="stylesheet" type="text/css">
</head>

<body id="fundo">
    <img src="css/img/logo.png" alt="World Bikes" width="20%">

    <nav id="menu">
        <ul>
            <li><a href="agenda.html">Agenda</a></li>
            <li><a href="cadastro.html">Cadastro</a></li>
            <li><a href="ordemServico.html">Ordem de Serviço</a></li>
           <li><a class="active" href="cadastroCliente.html">Cadastrar Cliente</a></li>
        </ul>
    </nav>

    <hr style="background-color: #33c208">

    <h1 id="titulo">Cadastro de Cliente</h1>

    <div id=form2>
        <form method="post" action="salvarCliente.php">
            <fieldset id=borda>
                <label for="cpf">CPF: </label>
                <br />
                <input type="text" name="cpf" id="cpf" class="campo1" />
                <div class="button">
                    <input src="icons/buscar.png" type="image">
                </div>
                <br />
                <label for="name">Nome do cliente:</label>
                <br />
                <input type="text" name="nome" id="nome" />
                <br />
                <label for="telefone">Telefone:</label>
                <br />
                <input type="text" name="telefone" id="telefone" />
                <br />

                <label for="modelo">Modelo da bicicleta:</label>
                <br />
                <input type="text" name="modelo" id="modelo" />
                <br />
                <label for="aro">Aro da bicicleta: </label>
                <br />
                <input type="text" name="aro" id="aro" />
                <br />
                <label for="cor">Cor da bicicleta:</label>
                <br />
                <input type="text" name="cor" id="cor" />
                <br />
                <div class="button">
                    <input type="image" name="salvar" src="icons/Salvar2.png">
                   <input type="image" name="excluir src="icons/excluir4.png">
                    <input type="image" name="salvar" src="icons/Editar4.png">
                </div>
            </fieldset>
        </form>
          </div>

         </body>


        </html>

salvarCliente.php

  <?php

  //conectar no banco de dados - incluir o arquivo do banco

  if($_POST){


    include "conecta.php";

//pega as variaveis vindas do formulario
$nome = ($_POST["nome"]);
$cpf = trim($_POST["cpf"]);
$telefone = trim($_POST["telefone"]);
$modelo = trim($_POST["modelo"]);
$aro = trim($_POST["aro"]);
$cor = trim($_POST["cor"]);


// para validar os campos em branco.
if (empty($nome)) {
    //se o login estiver em branco exibe esta mensagem: "preencha o login"
    echo "<script>alert('Preencha o nome');history.back();</script>";
}
if (empty($cpf)) {

    echo "<script>alert('Preencha o campo CPF');history.back();</script>";
}
if (empty($telefone)) {

    echo "<script>alert('Preencha o campo telefone');history.back( </script>";
}
if (empty($modelo)) {

    echo "<script>alert('Preencha o campo modelo');history.back();</script>";
}
if (empty($aro)) {

    echo "<script>alert('Preencha o campo aro');history.back();</script>";
}
if (empty($cor)) {

    echo "<script>alert('Preencha o campo cor');history.back();</script>";
}
else {
    $sql = "INSERT INTO cliente (nome, cpf, telefone, modelo, aro, cor)
     VALUES ('$nome', '$cpf', '$telefone', '$modelo','$aro','$cor')"; 
     mysqli_select_db($_SG['link'],"oficina") or die ("Banco de Dados Inexistente!"); 
    //inserindo dados no banco
    mysqli_query($_SG['link'], $sql)
     or die ("<script>alert('Erro na gravação');history.back();</script>"); 

     echo "<script>alert('Cliente  cadastrado');window.location.href='ordemServico.html';</script>";

    }

    }

  ?> 
  • https://i.stack.Imgur.com/evLUR.png see why in https://pt.meta.stackoverflow.com/questions/1078/como-e-por-que-aceitar-uma-resposta/1079#1079

  • I put an example with the statements, Insert, delete and upadate, including a functional example that will be active for a certain time.

2 answers

1


First of all, each customer must have a unique identification in the database. A suggestion is an index column UNIQUE when making an edit or deletion there are no problems.

For this answer I will consider the Cpf column to be of the type UNIQUE.

The buttons must have names different and should not be type image because they cannot carry a value to the server.

You can use your images as long as they are part of a <button> or use jquery.

  <button type="submit" name="salvar"><img src="cons/Salvar2.png"></button>
  <button type="submit" name="excluir"><img src="icons/excluir4.png"></button>
  <button type="submit" name="editar"><img src="icons/Editar4.png"></button>

In PHP

if(isset($_POST['excluir'])){
    //recupere o valor do cpf
    $cpf=$_POST['cpf'];
    $sql = ("DELETE FROM cliente Where cpf='$cpf'");
}else{
    //recupere os valores dos campos
    //validação dos campos
    if(isset($_POST['salvar'])){
        //faça o INSERT
    }else{
       //faça o UPDATE
    }
}

Example with Mysql declarations

PHP

if($_POST["cpf"]){

        //**********conexão*********

        #Conecta banco de dados 
        $myHost = "localhost"; // use seu nome de host
        $myUserName = "USUARIO";   // nome de usuário
        $myPassword = "SENHA";   // sua senha de login
        $myDataBaseName = "Nome_DB"; // nome do banco de dados

        $con = mysqli_connect( $myHost, $myUserName, $myPassword, $myDataBaseName ); 

        // Checa conexão
        if (mysqli_connect_errno())
          {
            echo "Falha na conexão MySQL: " . mysqli_connect_error();
          }

   $cpf = mysqli_real_escape_string($con, $_POST["cpf"]);
   // Inclui o arquivo com a função valida_cpf
   include('valida-cpf.php');

   // Verifica o CPF
   if ( !valida_cpf( $cpf ) ) {
      echo "CPF <span style='color:red'>" .$cpf. "</span> inváido.";
   }else{

      //verifica se existe cpf no banco
      $consulta = ("SELECT * FROM cliente Where cpf='$cpf'");
      $buscar=mysqli_query($con,$consulta);
      $dados=mysqli_fetch_array($buscar);   
      $result=mysqli_num_rows($buscar);

        if(isset($_POST['buscar'])){

            //se existir o cpf retorna os dados do banco

            if ($result===1) {
                //esses dados serão os values dos campos da tabela
                $nome = $dados["nome"];
                $telefone = $dados["telefone"];
                $modelo = $dados["modelo"];
                $aro = $dados["aro"];
                $cor = $dados["cor"];

            }else{
                echo "Registro não encontrado";
            }


        }elseif(isset($_POST['excluir'])){
            if ($result===1) {
                $delete1=mysqli_query($con,"DELETE FROM cliente Where cpf='$cpf'");
                echo "DELETE executado com sucesso!";

            }else{

                echo "DELETE não executado, CPF <span style='color:red'>" .$cpf. "</span> não encontrado";
            }

        }else{

            //recupere os valores dos campos
            $nome = mysqli_real_escape_string($con, $_POST["nome"]);
            $telefone = mysqli_real_escape_string($con, $_POST["telefone"]);
            $modelo = mysqli_real_escape_string($con, $_POST["modelo"]);
            $aro = mysqli_real_escape_string($con, $_POST["aro"]);
            $cor = mysqli_real_escape_string($con, $_POST["cor"]);

            //faça as validações dos campos aqui

            if(isset($_POST['salvar'])){
                if ($result===0) {
                    //faça o INSERT

                    $sql = 'INSERT INTO cliente (nome, cpf, telefone, modelo, aro, cor) VALUES(?, ?, ?, ?, ?, ?)';

                    $stmt = $con->prepare($sql);

                    $stmt->bind_param('ssssss', $nome, $cpf, $telefone, $modelo, $aro, $cor);
                    $stmt->execute();

                    echo "INSERT executado com sucesso!";
                }else{
                    echo "Registro com cpf= <span style='color:red'>" .$cpf. "</span>  já existente";
                }


            }else{

               if ($result===1) {
               //faça o UPDATE

                   $con->query("UPDATE cliente SET nome='$nome', cpf = '$cpf', telefone = '$telefone', modelo = '$modelo', aro = '$aro', cor = '$cor' WHERE cpf='$cpf'");

                   echo "UPDATE realizado com sucesso!";

               }else{
                    echo "UPDATE não executado, CPF <span style='color:red'>" .$cpf. "</span> não encontrado";
               }

            } //post salvar

       } //post buscar

   } // valida cpf

   mysqli_close($con);

} //post cpf

valida-Cpf.php

Note: CPF validation is performed based on the check digits according to the CPF algorithm. A CPF declared as valid by this verifier does not mean that it exists in the National Register of Individuals nor that it is an active number or with regular cadastral situation.

function valida_cpf( $cpf = false ) {

    if ( ! function_exists('calc_digitos_posicoes') ) {
        function calc_digitos_posicoes( $digitos, $posicoes = 10, $soma_digitos = 0 ) {

            for ( $i = 0; $i < strlen( $digitos ); $i++  ) {
                $soma_digitos = $soma_digitos + ( $digitos[$i] * $posicoes );
                $posicoes--;
            }

            $soma_digitos = $soma_digitos % 11;

            if ( $soma_digitos < 2 ) {
                $soma_digitos = 0;
            } else {
                $soma_digitos = 11 - $soma_digitos;
            }

            $cpf = $digitos . $soma_digitos;

            return $cpf;
        }
    }

    // Verifica se o CPF foi enviado
    if ( ! $cpf ) {
        return false;
    }

    // Remove tudo que não é número do CPF
    $cpf = preg_replace( '/[^0-9]/is', '', $cpf );

    // Verifica se o CPF tem 11 caracteres
    if ( strlen( $cpf ) != 11 ) {
        return false;
    }   

    // Captura os 9 primeiros dígitos do CPF
    $digitos = substr($cpf, 0, 9);

    // Faz o cálculo dos 9 primeiros dígitos do CPF para obter o primeiro dígito
    $novo_cpf = calc_digitos_posicoes( $digitos );

    // Faz o cálculo dos 10 dígitos do CPF para obter o último dígito
    $novo_cpf = calc_digitos_posicoes( $novo_cpf, 11 );

    // Verifica se o novo CPF gerado é idêntico ao CPF enviado
    if ( $novo_cpf === $cpf ) {
        // CPF válido
        return true;
    } else {
        // CPF inválido
        return false;
    }
}

HTML

<div id=form2>
    <form method="post" action="">
        <fieldset id=borda>
            <label for="cpf">CPF: </label>
            <br />
            <input type="text" name="cpf" id="cpf" class="campo1" value="<?php echo $cpf ?>"/>
            <div class="button">
                <button type="submit" name="buscar"><img src="icons/buscar.png"></button>
            </div>
            <br />
            <label for="name">Nome do cliente:</label>
            <br />
            <input type="text" name="nome" id="nome" value="<?php echo $nome ?>" />
            <br />
            <label for="telefone">Telefone:</label>
            <br />
            <input type="text" name="telefone" id="telefone" value="<?php echo $telefone ?>" />
            <br />

            <label for="modelo">Modelo da bicicleta:</label>
            <br />
            <input type="text" name="modelo" id="modelo" value="<?php echo $modelo ?>" />
            <br />
            <label for="aro">Aro da bicicleta: </label>
            <br />
            <input type="text" name="aro" id="aro" value="<?php echo $aro ?>" />
            <br />
            <label for="cor">Cor da bicicleta:</label>
            <br />
            <input type="text" name="cor" id="cor" value="<?php echo $cor ?>" />
            <br />
            <div class="button">
              <button type="submit" name="salvar"><img src="icons/Salvar2.png"></button>
              <button type="submit" name="excluir"><img src="icons/excluir4.png"></button>
              <button type="submit" name="editar"><img src="icons/Editar4.png"></button>
           </div>
        </fieldset>
    </form>
</div>
  • Thank you so much, it worked .

0

At the point where you have the buttons in your HTML, put javascript functions:

<div class="button">
   <input type="image" 
          name="salvar" 
          src="icons/Salvar2.png"
          onclick="salvarCliente()">
   <input type="image" 
          name="excluir"
          src="icons/excluir4.png"
          onclick="excluirCliente()">
   <input type="image" 
          name="salvar"
          src="icons/Editar4.png"
          onclick="editarCliente()">
</div>

Then, create a point with javascript, whether in the project document, or in a separate one, is at your discretion.

<script>
   function salvarCliente() {
      // Recupere os dados dos inputs
      // Crie uma requisição via ajax
      // Dê uma resposta ao usuário em relação a transação
   }

   function editarCliente() {
      // Recupere os dados dos inputs
      // Crie uma requisição via ajax
      // Dê uma resposta ao usuário em relação a transação
   }

   function excluirCliente() {
      // Recupere o cpf dados dos inputs
      // Crie uma requisição via ajax
      // Dê uma resposta ao usuário em relação a transação
   }
</script>

But remember, this is a very generic example, just so you know how to start moving forward. If you don’t know Javascript, Ajax and etc, see the questions here in the community that you will find several "recipes" of how to do something similar to what you need.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.