Jump to content
Matheus B. Siqueira

Forma de inserção no accordion em múltiplos itens com AJAX [Problema atualizado]

Recommended Posts

 

Olá, tento fazer uma requisição para atualização de item do accordion no mysql, porém apenas um item é atualizado.

O código funciona da seguinte forma: É buscado perguntas referente ao vídeo selecionado no carousel, logo após, o código da Amostra de Código 1, cria os cards dentro do modal. Cada card é referente a uma pergunta diferente registrada no Banco de Dados.

Porém, ao tentar atualizar um item do MYSQL, dentro do card, no textarea, o primeiro item (1º pergunta) desse accordion é atualizado, o segundo item (2º pergunta) não é atualizado.

Cada pergunta possui um id no MYSQL, bem como, um assunto, uma resposta, uma pergunta... de acordo com a Figura 01.

Vale ressaltar que, de acordo com a Amostra de Código 2, é buscado juntamente com o AJAX, todas as perguntas referente ao vídeo selecionado no carousel.

Amostra de Código 1:

 $(document).ready(function() {
    
      $(function()
            {
                $('#responder_duvidas').click(function() {
                        var codigoVideo2 = $('.carousel-item.active').attr('data-link_video');
                    var accordion2 = "";
     
                    $.post("buscar_duvida_monitor_resp.php", {
                        codigo_video_monitor: codigoVideo2,
                    },
    
                    function(data2, status) {
                        if (data2 !== "Fail") {
    
                            $("#dynamic_accordion #accordion").html(accordion2); // Adiciona essa linha
     
                            $.each(JSON.parse(data2), function (index2, duvida3)
                            {
                                accordion2 += '<div class="card" style="margin: 5px">';
                                accordion2 += '<div class="card-header" id="heading'+index2+'">';
                                accordion2 += '<h5 class="mb-0">';
                                accordion2 += '<button class="btn btn-link" data-toggle="collapse" data-target="#collapse'+index2+'" aria-expanded="true" aria-controls="collapse'+index2+'">';
                                accordion2 += duvida3.assunto;
                                accordion2 += '</button>';
                                accordion2 += '</h5>';
                                accordion2 += '</div>';
             
                                accordion2 += '<div id="collapse'+index2+'" class="collapse" aria-labelledby="heading'+index2+'" data-parent="#accordion">';
                                accordion2 += '<div class="card-body">';
                                accordion2 += '<div style="background: #ddd; color #fff; padding: 10px 20px; border-radius: 5px">';
                                accordion2 += duvida3.pergunta;
                                accordion2 += '</div>';
             
                                accordion2 += '<hr>';
             
                                accordion2 += '<div style="background: #fff; color #fff; padding: 10px 20px; border-radius: 5px">';
                                accordion2 += '<form method="post" enctype="multipart/form-data">';
                                accordion2 += '<textarea class="form-control" name="resposta" id="resposta" required>'+duvida3.resposta+'</textarea>';
                                accordion2 += '<input type="hidden" id="id_duvidas" value="'+duvida3.idduvidas+'" />';
                                accordion2 += '<br><button type="button" id="enviar_resposta" class="btn btn-success btn-sm">Enviar resposta</button>';
                                accordion2 += '</form>';
                                accordion2 += '</div>';
                                accordion2 += '</div>';
                                accordion2 += '</div>';
                                accordion2 += '</div>';
             
                                $("#dynamic_accordion #accordion").html(accordion2);
                            });
                        }
                    });
                });
    
                $(document).on("click", "#enviar_resposta",function(){
                    $.ajax({
                        url: "atualizar_resposta.php",
                        method: "POST",
                        data: {
                            resposta: $('#resposta').val(),
                            idduvidas: $('#id_duvidas').val()
                        },
                        success: function(res) {
                            var data = JSON.parse(res);
                            alert((data.success == true) ? "Pergunta atualizada" : "Pergunta não atualizada");
                  $('.modal-backdrop').remove();
                            return;
                        }
                    });
    
                    // fecha modal
                    $("#modalDuvidas").modal("hide");
                });
            });
});
       

Figura 1:

inserir a descrição da imagem aqui

 

 

Amostra de Código 2:

  <?php

if (isset($_POST['idduvidas']) && isset($_POST['resposta'])) {
    $id_resposta = $_POST['idduvidas'];
    $resposta = $_POST['resposta'];
 
    $servidor = 'localhost';
    $usuario = 'root';
    $senha = 'root';
    $banco = 'onteach';
 
    $conexao = mysqli_connect($servidor,$usuario,$senha,$banco);
    $consulta2 = "UPDATE duvidas SET duvidas.resposta = '$resposta' WHERE duvidas.idduvidas = '$id_resposta'";
 
    die(json_encode(['success'=>(mysqli_query($conexao, $consulta2))]));
}
 

Figura 2 (FIGURA COMPLEMENTAR APRESENTANDO O ACCORDION NO WEBSITE)

inserir a descrição da imagem aqui

 

Por fim, este tópico auxilia em um tema que é específico, porém, pode ser utilizado para outros fins de programação, bem como, a utilização de definição de váriantes em accordion com maiores itens.

Desde já, agradeço.

 

Share this post


Link to post
Share on other sites

DESCOBRI O PROBLEMA, PORÉM NÃO SEI COMO RESOLVER!

 

Cada card do accordion, possui um index, o primeiro é 0, o segundo é 1, assim sucessivamente.

No botão que criei para alterar o comentário está assim:

 

'<br><button type="button" id="enviar_resposta" class="btn btn-success btn-sm">Enviar resposta</button>';

 

Porém deve estar assim:

 

'<br><button type="button" id="enviar_resposta'+index2+'" class="btn btn-success btn-sm">Enviar resposta</button>';

 

O único problema é no JQUERY.

 

Não faço ideia de como fazer com que o: 

$(document).on("click", "#enviar_resposta",function(){

Consiga identificar qual botão do card que estou selecionando..

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 OSVALDO ARANTES JÚNIOR
      Boa tarde,  estou desenvolvendo uma consulta no php/mysql em diversas colunas. E gostaria de saber
      se existe um caracter especial para listar todos os dados, minha quere esta organizada da seguinte forma
       
      $query = sprintf("SELECT * FROM operacao  WHERE data_operacao BETWEEN '$data_inicial_rel' AND '$data_final_rel' AND estado_operacao = ' ' ORDER BY id_operacao ASC ;");
       
      quando declaro o valor do estado_operacao ele lista perfeitamente o valor, agora minha dúvida é se existe um 
      carater para listar todos os valores... para que eu use como value no opition do select, passar o valor TODOS pra a query
       
      desde já agradeço a atenção.
    • By joeythai
      Bom dia pessoal, minha dúvida é simples, vi que alguns arquivos xml tem a saída de data desta forma  "2020-01-22T09:18:50", como faço pra imprimir a data desta forma ? E o que significa esse T?]
      Eu estou usando o Carbon, to tentando encontrar esse padrão na documentação.
      2018-05-29T17:47:57 2018-05-29T17:47:57
    • By Sapinn
      Resolvi atualizar meu xampp para a versão 7.4.14 e estou com um erro de Internal Server Error que fica em um projeto que estou usando htacess para fazer urls amigáveis o arquivo usados são:
      Arquivo externo:
       
      <IfModule mod_rewrite.c>
          RewriteEngine on
          RewriteRule ^$ public/ [L]
          RewriteRule (.*)public/$1 [L]
      </IfModule>
       
      Dentro da pasta public:
       
      <IfModule mod_rewrite.c>
          Options -Multiviews
          RewriteEngine On
          RewriteBase /unset_mvc/public
          RewriteCond %{REQUEST_FILENAME} !-d
          RewriteCond %{REQUEST_FILENAME} !-f
          RewriteRule ^(.+)$ index.php?url=$1 [QSA,L]
      </IfModule>
       
      Dentro da pasta app:
      Options -Indexes
       
      Preciso de ajuda porquê não sei o que fazer, já tentei apagar algumas coisas no httpd.conf dentro do xampp mas não funcionou.
    • By violin101
      Caros amigo, saudações...

      por favor, me perdoa se postei na opção errada.
       
      estou com a seguinte dúvida.
       
      tenho o seguinte código no cadastro: 1234 0000 4320 9785
       
      como consigo mostrar /inibir os números no meio, para o usuário desta forma: 1234********9785
       
      Grato,
       
      Cesar
    • By Rodrigo5468
      Olá, boa tarde!
       
      Eu estava procurando na internet, mas não obtive nenhum resultado significativo.
      Eu preciso de um script em php que converte os links do youtube para o formato .mp4. Como que eu posso fazer isso? Alguma dica?
      Quero que quando o usuário informa o link do youtube no input e clica no botão de converter baixe o vídeo e faz a conversão para .mp4 e fornece para o usuário o link convertido para .mp4.
       
       
      Obrigado desde já.
×

Important Information

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