Jump to content
  • 0
luigiferrari

Botão excluir e editar em um DataTable

Question

Bom dia, eu gostaria de fazer dois botões na datatable, um para excluir e outro que direcionaria o usuario para outra página.

Meu index.php está desta forma, 

<?php include('scripts/inicio.php') ?>


<link rel="stylesheet" href="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
        <script src="https://code.jquery.com/jquery-3.3.1.js"></script>
        <script src="https://cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
        <script src="//cdn.datatables.net/plug-ins/1.10.19/i18n/Portuguese-Brasil.json"></script>

        <script src="https://cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css"></script>
        <script src="../../extensions/Editor/css/editor.dataTables.min.css"></script>
<script>
        $(document).ready(function() {
            $('#listar-usuario').DataTable({            
                "processing": true,
                "serverSide": true,
                "ajax": {
                    "url": "proc_pesq_registro.php",
                    "type": "POST"

                }
            });
        } 
        );



 
</script>
        



              <script>
   
   // $(document).ready(function() {
        //$('#listar-usuario').DataTable( {
            //"language": {
    //"sEmptyTable": "Nenhum registro encontrado",
   // "sInfo": "Mostrando de _START_ até _END_ de _TOTAL_ registros",
    //"sInfoEmpty": "Mostrando 0 até 0 de 0 registros",
   // "sInfoFiltered": "(Filtrados de _MAX_ registros)",
   // "sInfoPostFix": "",
    //"sInfoThousands": ".",
    //"sLengthMenu": "_MENU_ resultados por página",
    //"sLoadingRecords": "Carregando...",
    //"sProcessing": "Processando...",
    //"sZeroRecords": "Nenhum registro encontrado",
    //"sSearch": "Pesquisar",
    //"oPaginate": {
     //   "sNext": "Próximo",
       // "sPrevious": "Anterior",
        //"sFirst": "Primeiro",
        //"sLast": "Último"
    //},
    //"oAria": {
      //  "sSortAscending": ": Ordenar colunas de forma ascendente",
        //"sSortDescending": ": Ordenar colunas de forma descendente"
    //}
//}
  //      } );
    //} );
</script>

    <title>Registos</title>
  </head>
  <body>
     <div class="container">
            
            <div class="row">
                
                <div class="col-md-8 col-lg-8">
                  <a href="cadregistro.php" class="btn btn-primary">Voltar</a>
                  <a href="index.php" class="btn btn-primary">Home</a>
                    <hr class="new1"> 
                </div>
                    
                    <div class="col-md-4">
                         <a href="http://www.novalima.mg.gov.br/" target="_blank" class="thumbnail" >
                <img data-src="holder.js/100%x180" />
   
                <img src="imagens/logo.png" class="img-responsive" alt="PMNL" />
                         </a>
                        
                    </div>
            </div> 

            <center><h1>Registros</h1></center>
            <br><br><br>

            <div class="row">
        <div class="col-md-12">
            <br><br>
            <div class="panel panel-primary">
                    <div class="panel-heading">
                        <h3 class="panel-title painel-title-responsive">Registros</h3>
                    </div>
<div class="panel-body">

            <table id="listar-usuario" class="table table-striped table table-bordered table-hover table-responsive">
                    
                <thead>
                 <tr>
                        <th>Data de Abertura</th>
                        <th>Data do Serviço</th>
                        <th>Data da Busca</th>
                        <th>Comentarios</th>
                        <th>Cliente</th>
                        <th>Problema</th>
                        <th>Prestador</th>
                        <th>Id</th>

                        
               
                        
                    </tr>
                </thead>
 
            </table>
        </div>
    </div>
</div>

</body>
<htnl>

PS: Também gostaria de deixar o form em português, o código está como comentário pois quando coloco ele, traduz, porém não lista nada...

 

Já a página proc_pesq_registro.php está desta forma:

<?php
include_once("conexoes/conexao.php");
?>

<?php


//Receber a requisão da pesquisa 
$requestData= $_REQUEST;


//Indice da coluna na tabela visualizar resultado => nome da coluna no banco de dados
$columns = array( 
	0 =>'dataabertura_os', 
	1 => 'dataservico_os',
	2=> 'databusca_os',
	3=> 'comentario_servico',
	4=> 'tbl_cliente_id_cliente',
	5=> 'tbl_prestador_id_prestador',
	6=> 'tbl_categoria_id_categoria',
	7=> 'id_os',

);

//Obtendo registros de número total sem qualquer pesquisa
$result_user = "SELECT * from tbl_os inner JOIN tbl_cliente
on tbl_cliente.id_cliente = tbl_os.tbl_cliente_id_cliente
inner JOIN tbl_prestador on tbl_prestador.id_prestador = tbl_os.tbl_prestador_id_prestador
INNER JOIN tbl_categoria on tbl_categoria.id_categoria = tbl_os.tbl_categoria_id_categoria
";
$resultado_user =mysqli_query($conn, $result_user);
$qnt_linhas = mysqli_num_rows($resultado_user);

//Obter os dados a serem apresentados
$result_usuarios = "SELECT * from tbl_os inner JOIN tbl_cliente
on tbl_cliente.id_cliente = tbl_os.tbl_cliente_id_cliente
inner JOIN tbl_prestador on tbl_prestador.id_prestador = tbl_os.tbl_prestador_id_prestador
INNER JOIN tbl_categoria on tbl_categoria.id_categoria = tbl_os.tbl_categoria_id_categoria
WHERE 1=1";

if( !empty($requestData['search']['value']) ) {   // se houver um parâmetro de pesquisa, $requestData['search']['value'] contém o parâmetro de pesquisa
	$result_usuarios.=" AND ( dataabertura_os LIKE '".$requestData['search']['value']."%' "; 

	$result_usuarios.=" OR dataservico_os LIKE '".$requestData['search']['value']."%' ";

	$result_usuarios.=" OR databusca_os LIKE '".$requestData['search']['value']."%' ";

	$result_usuarios.=" OR comentario_servico LIKE '".$requestData['search']['value']."%' ";

	$result_usuarios.=" OR nome_cliente LIKE '".$requestData['search']['value']."%' ";

	$result_usuarios.=" OR nome_prestador LIKE '".$requestData['search']['value']."%' ";

	$result_usuarios.=" OR descricao_categoria LIKE '".$requestData['search']['value']."%' ";

	$result_usuarios.=" OR id_os LIKE '".$requestData['search']['value']."%' )";


	
}

$resultado_usuarios=mysqli_query($conn, $result_usuarios);
$totalFiltered = mysqli_num_rows($resultado_usuarios);
//Ordenar o resultado
$result_usuarios.=" ORDER BY ". $columns[$requestData['order'][0]['column']]."   ".$requestData['order'][0]['dir']."  LIMIT ".$requestData['start']." ,".$requestData['length']."   ";
$resultado_usuarios=mysqli_query($conn, $result_usuarios);
	
// Ler e criar o array de dados
$dados = array();
while( $row_usuarios =mysqli_fetch_array($resultado_usuarios) ) {  
	$dado = array(); 
	$dado[] = $row_usuarios["dataabertura_os"];
	$dado[] = $row_usuarios["dataservico_os"];
	$dado[] = $row_usuarios["databusca_os"];
	$dado[] = utf8_encode($row_usuarios["comentario_servico"]);
	$dado[] =  utf8_encode($row_usuarios["nome_cliente"]);
	$dado[] = utf8_encode($row_usuarios["nome_prestador"]);
	$dado[] = utf8_encode($row_usuarios["descricao_categoria"]);
	$dado[] = utf8_encode($row_usuarios["id_os"]);

	

 
	$dados[] = $dado;
}


//Cria o array de informações a serem retornadas para o Javascript
$json_data = array(
	"draw" => intval( $requestData['draw'] ),//para cada requisição é enviado um número como parâmetro
	"recordsTotal" => intval( $qnt_linhas ),  //Quantidade de registros que há no banco de dados
	"recordsFiltered" => intval( $totalFiltered ), //Total de registros quando houver pesquisa
	"data" => $dados   //Array de dados completo dos dados retornados da tabela 
);

echo json_encode($json_data);  //enviar dados como formato json

 

 

Então para resumir, eu gostaria de saber como coloco um botão para excluir o registro, e um para direcionar o usuário para uma outra página para alterar aquele registro. Também gostaria de saber onde coloco o código para tradução...

Obrigado!

 

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts

  • 0

Eu costumo criar uma função para gerar os botões e retorna-los para o datatables:

 

<?php

...

while( $row_usuarios =mysqli_fetch_array($resultado_usuarios) ) {  
	$dado = array(); 
	$dado[] = $row_usuarios["dataabertura_os"];
	$dado[] = $row_usuarios["dataservico_os"];
	$dado[] = $row_usuarios["databusca_os"];
	$dado[] = utf8_encode($row_usuarios["comentario_servico"]);
	$dado[] =  utf8_encode($row_usuarios["nome_cliente"]);
	$dado[] = utf8_encode($row_usuarios["nome_prestador"]);
	$dado[] = utf8_encode($row_usuarios["descricao_categoria"]);
	$dado[] = utf8_encode($row_usuarios["id_os"]);
  
  	//Cria o botão de exclusão
	$dado[] = criarBotao($row_usuarios["id"]);

 
	$dados[] = $dado;
}

/**
 * função para cirar botão html
 *
 */
function criarBotaoExcluir($id_linha) {
	$botao = sprintf("<button onclick='excluir(%s)'>Excluir</button>", $id_linha);
	return $botao;
}

Depois disso só adicionar mais uma coluna na sua tabela do datatables para exibir o botão, e criar uma função javascript para executar a exclusão do item.

 

Para o botão de editar o principio é exatamente o mesmo.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By ricardonews
      olá pessoal, alguém ja teve dificuldade de logar no banco com um formulario de login feito pelo ajax quando a senha é criptografada?
      a minha está o sendo pelo md5 e quando deixo sem criptografia eu logo no banco.  Eu gostaria de logar com criptografia.
      vou deixar  a index e o arquivo que busca no banco de dados
      <!doctype html> <html> <?php require_once"config.php"; ?> <head> <title>Formulario de login</title> <style type="text/css"> html{ height:100%; background: linear-gradient(rgba(38, 128, 101, 0.9), rgba(52, 177, 140, 0.9)); } #div_login{ width:500px; margin:40px auto; position:relative; background-color: #ffffff; padding: 20px; border-radius: 5px; } #message{ width:100%; text-align:center; color:red; margin-bottom: 20px; } #div_login h1 { text-align: center; } #div_login input, #div_login textarea,#div_login a{ padding:10px; border:1px solid rgba(38, 128, 101, 0.9); border-radius:4px; -moz-border-radius:4px; -webkit-border-radius:4px; outline:none; box-sizing: border-box; width:100%; font:14px "Trebuchet MS", tahoma, arial; color:#090; margin-bottom:10px; } #div_login #but_submit,#div_login a { background-color: #27ae60; font-weight: bold; text-transform: uppercase; color: #ffffff; width: auto; margin: 0; padding: 10px 20px; } </style> <!--<link href="style.css" rel="stylesheet" type="text/css">--> <script src="jquery-3.2.1.min.js" type="text/javascript"></script> <script type="text/javascript"> $(document).ready(function(){ $("#but_submit").click(function(){ var username = $("#meu_nome").val().trim(); var password = $("#minha_senha").val().trim(); if( username != "" && password != "" ){ $.ajax({ url:'pesquisar.php', type:'post', data:{username:username,password:password}, success:function(response){ var msg = ""; if(response == 1){ window.location = "home.php"; }else{ msg = "email e senhas invalidos!"; } $("#message").html(msg); } }); } }); }); </script> </head> <body> <div class="container"> <div id="div_login"> <h1>Login</h1> <div id="message"></div> <div> <input type="text" class="textbox" id="meu_nome" name="meu_nome" placeholder="email" /> </div> <div> <input type="password" class="textbox" id="minha_senha" name="minha_senha" placeholder="senhas"/> </div> <div> <input type="button" value="logar" name="but_submit" id="but_submit" /> <a href="inicio.php"><strong>Cadastrar</strong></a> </div> </div> </div> </body> </html> agora vem oque busca os dados no banco e é justamente essa parte que eu não entendo oque acontece.
      <?php require_once "config.php"; // AQUI É O PESQUISAR PHP $uname = mysqli_real_escape_string($con,$_POST['username']); $password = mysqli_real_escape_string($con,$_POST['password']); if ($uname != "" && $password != ""){ $sql_query = "SELECT count(*) as cntUser FROM usuarios WHERE email='".$uname."' and password='".$password."'"; $result = mysqli_query($con,$sql_query); $row = mysqli_fetch_array($result); $count = $row['cntUser']; if($count > 0){ $_SESSION['uname'] = $uname; echo 1; }else{ echo 0; } } desde já fico agradeço 
    • By Lincoln Ferreira
      Eu estou tentando fazer um Jquery steps wizard mas não consigo colocar pra ele parar caso não tenha sido preenchido o formulario no segundo passo.
      http://www.jquery-steps.com/Examples
       
      if (newIndex === 2 && $("#Rua").val() == "") { return false; } $(document).ready(function() { $("#wizard").steps({ headerTag: "h2", bodyTag: "section", transitionEffect: "slideLeft", stepsOrientation: "vertical", labels: { current: "current step:", pagination: "Pagination", finish: "Finalizar", next: "Confirmar", previous: "Voltar", loading: "Carregando ..." }, onStepChanging: function(event, currentIndex, newIndex, cepError) { if (currentIndex > newIndex) { return true; } if (newIndex === 1) { return true; } if (newIndex === 2 && $("#Rua").val() == "") { return false; } } } ) }); <div id="wizard"> <h2>Verificação pedido</h2> <section> <h2><strong>Pedido:</strong></h2> <div class="lista-carrinho"></div> </section> <h2>Local de entrega</h2> <section> <div class="informações-usuario"> <form method="get" action="." id="#form-cep"> <div class="form-row"> <div class="form-group col-md-6"> <label for="cep">Cep:</label> <input name="cep" type="text" class="form-control" id="cep" placeholder="09572-660" value="" size="10" maxlength="9" required> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="rua">Rua:</label> <input name="rua" class="form-control" type="text" id="rua" placeholder="Sete de Dezembro" size="60" maxlength="" /> </div> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="bairro">Bairro:</label> <input name="bairro" class="form-control" type="text" placeholder="Nova Gerty" id="bairro" size="40" maxlength="40" /> </div> </div> <div class="form-row"> <div class="form-group col-md-6"> <label for="n">N°:</label> <input name="n" class="form-control" type="text" placeholder="2" id="n" size="6" maxlength="10" /> </div> </div> <div class="form-group col-md-6"> <label for="complemento">Complemento:</label> <input name="complemento" type="text" class="form-control" id="complemento" placeholder="Ao lado do extra" value="" size="10" maxlength="9" requerid> </div> <div class="form-row"> <div class="form-group col-md-11"> <label for="cidade">Cidade:</label> <input name="cidade" class="form-control" type="text" placeholder="São Bernardo do Carpo" id="cidade" size="40" maxlength="40" /> </div> </div> </div> </form> </div> </section> <h2>Forma de pagamento</h2> <section> <div class="row d-flex justify-content-center col-sm col-md col-lg m-5 "> <h2>Informe sua forma de pagamento :</h2> </div> <div class="row d-flex justify-content-center col-sm col-md col-lg m-5 "> <div class="col-2"> <li class="list-inline-item"> <div class="pure-radiobutton"> <input id="Dinheiro" name="dinheiro" type="radio" class="radio"> <label for="Dinheiro">Dinheiro</label> </div> </li> </div> <div class="row"> </div> <div class="col-2"> <li class="list-inline-item"> <div class="pure-radiobutton"> <input id="Cartao" name="cartao" type="radio" class="radio"> <label for="Cartao">Cartão</label> </div> </li> </div> </div> </section> </div>
    • By D2th3
      Pessoal,

      Sou intermediário em PHP e estou estudando OO. Vi exemplos de do MVC Pattern usando template view contudo de simples substituição do marcador pelos dados. Eu gostaria que você me pudessem indicar um material de estudo, exemplos de código de um Model, Controller e View que carregasse a template e exibisse, contudo dentro dessa template existisse condicionais e loops como marcadores a serem processados pelo PHP.
       
      Agradeço a ajuda aos meus estudos.
    • By marcelocardoso
      Fala galera...
      Depois de tanto sofrer tentando e pesquisando na internet, não consegui resolver...
      A nível de conhecimento, segue código para:::

      1) Ao clicar, pegar o id do botão, em seguida abrir com slidetoggle e jogar no TOP tipo ancora.
      2) ou seja, expandir a slidetoggle, mas POSICIONAR no id da DIV, SECTION ou etc...

      CODE:
       
      $(function () { // $("#btn-maps").on("click", function () { // $('html, body').animate({ // scrollTop: $("#maps").slideToggle('slow').offset().top - 135 // }, 1200, 'linear'); // }); $("#btn-maps").click( function (event) { event.preventDefault(); if ($("#maps").is(":visible")) { $("#maps").slideUp(600).offset().top; } else { $("#maps").slideDown(600).offset().bottom; } } ); }); Este código, funciona perfeitamente, adaptado de vários códigos buscados na internet, porém, não consigo com nenhum dos dois, posicionar ao CLICK o SLIDETOGGLE ao expandir deixar examente no inicio do ID;

      Dicas, Sugestões como fazer, realizar, agradeço.
      Obrigado.

       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.