Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Pegar o conteúdo de uma td e separar

Boa noite, estou tentando fazer algo que não sei se é possível quero usar o js para excluir uma linha da minha tabela, e quando eu excluir por js abrir uma supertag em php que faz um delete no banco de dados, pra isso to usando o seguinte cdg

<script>
    var informacoes = document.querySelectorAll(".table");

informacoes.forEach(function(informacao){
    informacao.addEventListener("dblclick", function(event){
        event.target.parentNode.classList.add("fadeOut");

        setTimeout(function(){
            let teste = event.target.parentNode;
            console.log(teste.textContent);
            event.target.parentNode.remove();
        },500);
    });
});

a ultima função remove a linha, e dou um console.log e ele me mostra todo o conteúdo da TR mas em uma string unica, como posso fazer para separar cada td em uma posição dentro de um array?

Essa é uma duvida, agora a outra, tem como eu pegar esse resultado e jogar ele pra dentro da supertag do php deste modo:

<script>
    var informacoes = document.querySelectorAll(".table");

informacoes.forEach(function(informacao){
    informacao.addEventListener("dblclick", function(event){
        event.target.parentNode.classList.add("fadeOut");

        setTimeout(function(){
            let teste = event.target.parentNode.textContent;
        teste.forEach(teste =>
            <?php
            $busca = $banco->query("delete from registros where descricao like 'teste'");
        ?>);
            event.target.parentNode.remove();
        },500);
    });
});

meu objetivo é apenas gravar as alterações feitas por js de forma permanente, sou iniciante ainda não sei nem o que estudar pra fazer isso, ai to pensando nessa ideia mirabolante mas não sei como executar nem se é possível...

Aqui esta minha tabela :

<table class="table">
            <tr class="linha">
                <td class="descricao">Descrição</td>
                <td class="prazo">Prazo</td>
                <td class="andamento">Andamento</td>
            </tr>
            <?php 

                include_once "php/conexao.php";
                $busca=$banco->query("select * from registros");

                while($reg=$busca->fetch_object()){
                    echo"<tr><td>$reg->descricao<td>$reg->prazo<td>$reg->andamento";
                }


            ?>

        </table>
6 respostas

Fala ai Felix, tudo bem? Vamos lá:

a ultima função remove a linha, e dou um console.log e ele me mostra todo o conteúdo da TR mas em uma string unica, como posso fazer para separar cada td em uma posição dentro de um array?

Não entendi muito o treco do seu código, no caso:

var informacoes = document.querySelectorAll(".table");

Nesse pedaço, os elementos que possuem a classe table são uma <table>, <tr> ou <td>?

Nesse outro pedaço:

let teste = event.target.parentNode;

O teste vai ser uma <tr> ou <td>?

Precisaria dessas informações para te ajudar a logar cada td de maneira separada.

Obs: Caso o teste seja o tr, você pode buscar todos os td's desse tr, percorrer a lista deles e ir logando cada um separadamente, algo assim:

let teste = event.target.parentNode;
let filhos = teste.querySelectorAll('td')
filhos.forEach(filho => console.log(filho.textContent))

Essa é uma duvida, agora a outra, tem como eu pegar esse resultado e jogar ele pra dentro da supertag do php deste modo:

Acho que nesse caso, o ideal seria realizar uma requisição para o servidor enviando os dados para serem removidos.

Essa requisição pode ser feita nativamente utilizando a Fetch API do JavaScript ou alguma biblioteca como a Axios.

Seu servidor PHP precisa estar preparada para em algum endpoint (endereço) receber essa requisição e deletar o registro de maneira permanente.

Espero ter ajudado.

Boa noite, Felix! Como vai?

como posso fazer para separar cada td em uma posição dentro de um array?

Vc pode utlizar o atributo children da tr em questão.

Para saber mais: https://www.w3schools.com/jsref/prop_element_children.asp

agora a outra, tem como eu pegar esse resultado e jogar ele pra dentro da supertag do php deste modo:

Não será possível fazer dessa forma. O PHP é uma linguagem back-end, portanto vai ser executado no servidor. Já o JS é nativamente front-end, sendo executado no navegador. Dessa forma, no momento que o JS for executado no navegador, todo código PHP já terá sido processado no servidor. O fluxo não funciona da forma como vc estava imaginando.

Provavelmente o que vc terá que fazer é enviar uma requisição com o JS para o servidor que por sua vez, usando o PHP fará o processamento dessa requisição da forma como vc precisar. Posteriormente, o mesmo PHP enviará uma resposta para o front-end que será avaliada pelo JS.

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Resumindo tenho que estudar mais kkk

Ok, mas entao qual o caminho que vcs me orientam a seguir, ja entendo bem html, css, Java script ja to mais ou menos, php nunca estudei de vdd as unicas coisas que sei com ele são as conexoes com o banco de dados, e com o pouco que eu sei as minhas aplicaçoes ficam bunitinhas mas só funciona enqnt nao der F5, quero fazer algo mais util que os dados inseridos permaneçam em um arquivo ou banco de dados, de preferencia banco de dados.

solução!

Fala Felix, todos nós temos estudar, não é só você não kkk

Eu gostaria de entender porque você está querendo partir para o PHP, ja trabalha em alguma empresa? Precisa dar manutenção em algum projeto?

Pergunto isso porque nesse momento eu recomendaria você partir para Node ao invés de PHP.

Temos vários cursos de Node aqui na plataforma:

Esses dois você vai fazer aplicações que renderizam no servidor, mas:

Com esses outros dá para construir e pegar alguns conceitos de API.

Sobre realizar requisição no front e mandá-la para o back, temos um curso sobre Fetch API:

No meu blog também tenho post's explicando sobre requisições AJAX em JavaScript:

Espero ter ajudado.

Matheus quando eu seleciono a (".table") seleciono a tabela inteira as tr e td, e a variavel teste ta recebendo o conteudo das TDs porem ele coloca uma string enorme como retorno sem espaço algum

testetesteteste Retorno: testetesteteste

E eu acho que nao posso acessar a tr pq eu preciso executar o delete no banco ao mesmo tempo que removo a linha com js

Mas como falei acima acho que ainda preciso estudar mais um pouco.

Se me derem essa dica fico muito agradecido, estou mesmo perdido em como seguir com isso ja comecei jquery mas nao sei se isso vai resolver meu problema

Estava usando o php pois foi a maneira mais rapida e facil que achei pra resolver um problema, mas apenas entendi como funcionava as conexoes e continuei usando, muito obrigado pelas dicas vao ajudar muito