Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

greg_kaippert

Criando datatable com array e ajax

Recommended Posts

Boa tarde.

Estou criando uma datatable, com array e ajax, e quero poder quando clicar em link na tabela, chama uma requisição ajax, porem não estou conseguindo fazer a mesma.

Código PHP:

<?php
include('functions.php');
$res = $pdo->prepare("SELECT * FROM vagas");
$res->execute();
 
// Aqui está o link para clicar e fazer uma requisição, o link é TESTAR
 
$data = array();
while($resu = $res->fetch(PDO::FETCH_ASSOC)) {
$data[] =  array('Testar'=>'<a href="#" id="teste">Testar</a>','Cidade'=>$resu['cidade'], 'Bairro'=>$resu['bairro'], 'Rua'=>$resu['rua'], 'Numero'=>$resu['numero'], 'Email'=>$resu['email'], 'Titulo'=>$resu['titulo'], 'Obs'=>$resu['obs']);
}
 
$results = array(
"sEcho" => 1,
"iTotalRecords" => count($data),
"iTotalDisplayRecords" => count($data),
"aaData"=>$data);
while($row = $res->fetch(PDO::FETCH_ASSOC)){
  $results["data"][] = $row ;
}
 
echo json_encode($results);
?>

Código HTML:

<link rel="stylesheet" type="text/css" href="datatable-ajax/css/jquery.dataTables.css">
<script type="text/javascript" language="javascript" src="datatable-ajax/js/jquery.js"></script>
        <script type="text/javascript" language="javascript" src="datatable-ajax/js/jquery.dataTables.js"></script>
        <script type="text/javascript" language="javascript" >
$( document ).ready(function() {
$('#vagas').dataTable({
"oLanguage": {
                        "sLengthMenu": "Mostrar _MENU_ registros",
                        "sZeroRecords": "Nenhuma vaga encontrada em nosso banco de dados.",
                        "sInfo": "Mostrando de _START_ ate _END_ de _TOTAL_ registros",
                        "sInfoEmpty": "Nenhuma vaga para ser exibido",
                        "sInfoFiltered": "(Filtrado de _MAX_ registros no total)",
                        "sSearch":"Pesquisar:",
                        "oPaginate": {
                         "sFirst": "Primeira",
                         "sLast": "Última",
                         "sNext": "Proxima",
                         "sPrevious": "Anterior"
                        }
                    },
                 "bProcessing": true,
                 "sAjaxSource": "datatable-ajax/vagas.php",
                 "aoColumns": [
                        { mData: 'Testar' } ,
{ mData: 'Cidade' } ,
{ mData: 'Bairro' } ,
                        { mData: 'Rua' },
{ mData: 'Numero' },
{ mData: 'Email' },
{ mData: 'Titulo' },
{ mData: 'Obs' }
                ]
});   
});
</script>
 
//estou testando esse pequeno script, pegando o ID da tabela e exibir um alert, porem sem sucesso
<script>
$(function(){
$('#teste').click(function(){
alert('ok'); 
});
});
</script>
 
</head>
<body>
 <table id="vagas" class="display" width="100%" cellspacing="0">
        <thead>
            <tr>
             <th align="left" width="120">Testar</th>
                <th align="left" width="120">Cidade</th>
                <th align="left" width="120">Bairro</th>
                <th align="left" width="150">Rua</th>                
                <th align="left" width="100">Numero</th>
                <th align="left" width="150">Email</th>
                <th align="left">Titulo</th>
                <th align="left" width="250">OBS</th>
            </tr>
        </thead>
 </table>
</body>
</html>

Se precisar, explico melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu sei fazer isso pelo link ou pelo ID, mas o jquery não está reconhecendo essa minha chamada pelo ARRAY.

Por exemplo:

$data = array();
while($resu = $res->fetch(PDO::FETCH_ASSOC)) {
$data[] =  array('Testar'=>'<a id="'.$resu['id_vagas'].'" class="teste">EDITAR</a>','Cidade'=>$resu['cidade'], 'Bairro'=>$resu['bairro'], 'Rua'=>$resu['rua'], 'Numero'=>$resu['numero'], 'Email'=>$resu['email'], 'Titulo'=>$resu['titulo'], 'Obs'=>$resu['obs']);
}

O que eu quero, é que quando clicar no link EDITAR, atraves da classe teste, chamar uma requisição ajax e pegar o ID desse link, e editar. Mas quando eu clico, não acontece nada. É como se essa classe teste não estivesse sendo reconhecida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por ment0r
      Boa noite pessoal, tudo bem?
       
      Estou desenvolvendo um sistema simples com exibição de formulário via modal. Uma vez cadastrado o serviço (tabela possui apenas dois campos, id e nome), eles são exibidos numa tabela com um ícone que permite a alteração do nome.

       
      Eu clico no ícone e é chamado um modal que é gerado via ajax (pois são vários registros).
       

       
      Nesse modal é mostrado o serviço e uma vez alterado, o botão Salvar chama uma função que atualiza a tabela servico, concluindo a tarefa. Fiz o mesmo processo pra cadastrar o serviço, com a diferença de que o modal está presente na mesma página, ou seja, não é chamado via ajax.
       
      Eis os códigos:
      <a href="#" onclick="modalUpdate(<?= trim($array['id']) ?>)"> <i class='bx bx-edit'></i> </a> // Trecho onde eu chamo a função modalUpdate. Função btAltServico click:
      $('#btAltServico').click(function() { var inpnome = $('#nome'); var inpid = $('#id'); if (inpnome.val() == '') { swal("Atenção", "Por favor, preencha os campos obrigatórios", "warning"); if (inpnome.val() == '') { inpnome.css("border","2px solid #f94545"); } else { inpnome.css("border",""); } alert(inpnome); alert(inpid); } else { $.ajax({ url: '../inc/ajax/altServico.php', type: 'post', dataType: 'json', // pode ser html data: { nome : inpnome.val(), id : inpid.val() }, success: function(resposta){ if (resposta == 1) { inpnome.val(""); inpnome.css("border",""); swal("Sucesso", "Serviço alterado", "success"); } else { if (resposta == 0) { swal("Erro", "Serviço não alterado. Log de erro gerado.", "error"); } else { swal("Atenção", "Serviço já cadastrado", "warning"); } } } }) } });  
      E modalUpdate.php :
       
      <?php /* * altServico.php * * Script responsável pelo update de serviços na tabela servico * * Função chamada pelo arquivo ajax.js */ //if ($_POST) { require'../conn.php'; require'../../class/class.geral.php'; $geral = new Geral(); $nome = $_POST['nome']; $id = $_POST['nome']; $ativo = 1; // Verifica se o servico já foi cadastrado $sqlVer = "select nome from algo68_db_cliente.servico where nome = '".$nome."' and id <> ".$id.""; $queryVer = mysqli_query($conn, $sqlVer); $resultVer = mysqli_num_rows($queryVer); if ($resultVer > 0) { echo json_encode(2); // servico já cadastrado } else { // Update do servico $sql = "update algo68_db_cliente.servico set nome = '".$nome."', ativo = ".$ativo." where id = ".$id; $query = mysqli_query($conn, $sql); $result = mysqli_affected_rows($conn); if ($result > 0) { echo json_encode(1); // alterou o servico } else { $geral->logErro(date('d/m/Y|H:i:s'), @$_SERVER[REQUEST_URI], 'AlterarServico', mysqli_error($conn)); echo json_encode(0); // não alterou o servico } } //} ?> O problema é que quando clico no botão Salvar, não acontece nada - se eu colocar um alert qualquer na função click, só pra saber se está chegando, também não da nada. E está da mesma forma que o cadastro de serviço, que funciona perfeitamente.

      Bom, é isso pessoal, tentei ser o mais breve e especifico possível. Qualquer ajuda é bem vinda, obrigado a todos, desde já.
    • Por Danilo - Jesus voltará!
      Olá pessoal, tenho uma div a qual através de um select categorias eu trago dados de empresas do banco, aí preciso clicar nas listagens das empresas e pegar o ID quando clica no checkbox e gravar pelo ajax novamente na session feita no arquivo php tipo um carrinho de compras, que essa parte já tenho... só não to conseguindo pegar os ids gerados dinamicamente no retorno feito do ajax, eles aparecem com F12 ao inspecionar, mas não aceita eu clicar para pegar o ID, acho que é algo de DOM, mas não to sabendo fazer... alguém aí saberia me ajudar como pegar esses ids ao clicar, já que eles vem dinamicamente?
       
      obrigado
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.