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

0

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

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

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

Follow the codes:

  

CustomerCast.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>
  

saveClient.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>";

    }

    }

  ?> 
    
asked by anonymous 03.10.2018 / 00:12

2 answers

1

First of all, each client must have a unique ID in the database. One suggestion is an index column UNIQUE so when you do an edit or delete there are no problems.

For this answer I will consider that the column cpf is of type UNIQUE .

  

The buttons should have names different and should not be type image because they can not 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

valid-cpf.php

  

Note: CPF validation is performed based on the verifier digits according to the CPF algorithm. A CPF declared 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 a regular registration status.

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>
    
03.10.2018 / 03:57
0

At the point where you have the buttons in your HTML, enter 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 javascript dot, either in the project document or in a separate one, it's up to you.

<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 do not know Javascript, Ajax and etc., check out the questions here from the community that you will find several "recipes" on how to do something like what you need.

    
03.10.2018 / 03:34