Ir para conteúdo

POWERED BY:

Arquivado

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

DiegoAngra07

Grid / Table com opção de organizar os itens arrastando

Recommended Posts

Boa tarde galera, tudo certo?

 

Não sou muito experiente no mundo da web, portanto venho aqui pedir sugestões de como implementar um determinado mecanismo.

 

- Primeiro vou explicar o processo:

 

Possuo um cadastro / tabela no banco bem simples: ID, nome e ORDENAÇÃO. Este campo ordenação é o que define critério para que os registros sejam buscados / exibidos. É uma tabela que serve para categorizar itens dentro do sistema, e tais itens devem ser buscados com ORDER BY por este campo. Por exemplo:

 

Tabela Categoria

ID | Nome | Ordenacao

 

1 | Computadores | 1

2 | Mouses | 2

3 | Monitores | 3

 

Tabela Item

ID | Nome | idCategoria (FK da outra tabela)

 

1 | Dell Inspiron | 1

2 | HP Mouse 3000 | 2

3 | Dell Optiplex | 1

1 | Smasung HDTV | 3

...

 

Desta forma eu busco os itens dando JOIN na categoria e ordenando pelo seu campo Ordenacao.

SELECT * FROM item i JOIN categoria c ON c.id = i.idCategoria ORDER BY c.ordenacao

Este processo no entanto não fica a encargo do programador ou administrador do sistema controlar, e sim de um determinado usuário, e num belo dia o usuário decide que os Monitores devem ser listados antes que os Mouses (sendo assim a ordenação deve ser invertida).

 

---------------

 

- Aqui vem minha busca por sugestão de como fazer isso na web. A minha ideia inicial foi de uma espécie de Grid ou Table, em que o usuário possa arrastar as categorias para cima ou para baixo, e quando clicar em Salvar eu atualize o campo no banco de acordo com a ordem que ele deixou. Tem como fazer isso usando HTML e JS? Talvez não precise nem arrastar e soltar (apesar de que ficaria super legal), mas só uma forma de tabela onde pudesse mover para cima / baixo através de uns Buttons ou menu de contexto.

 

Eu sei que o mais simples seria abrir o cadastro da categoria e alterar o campo Ordenação, mas ao meu ver parece um processo chato e não-moderno.

 

Se alguém tiver outras sugestões de como fazer, fique a vontade.

 

Grato desde já e obrigado pela atenção.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por diogorocha18
      Boa noite,
       
      Estou a fazer um bot para o discord para um jogo e estou aqui com algumas dificuldades porque a experiencia não é a melhor..
       
      É o seguinte, eu preciso que me mande na variavel "color" 3 coisas diferentes, ou melhor, me escreva na cor dependendo do innerHTML tiver "small", "medium" ou "large" escreva na variavel color "verde", "castanho" ou "vermelho".
       
      Como posso fazer para essa variavel procurar uma das tres variaveis?
       
      for (var i = 1, row; row = table.rows[i]; i++) { var color = row.cells[0].innerHTML.includes("small") var player = row.cells[0].innerText; var status = row.cells[1].innerText; if (status){ msg += " " + color + " ---> " + player + " ----> " + status + " \n" } }  
      Obrigado pela ajuda.
       
      Abraço
       
       
    • Por Sapinn
      Opa galera tudo beleza? Então criei um layout de um dashboard com css grid e eu gostaria de fixar o menu lateral na esquerda e a barra que está em cima e quando eu rolasse para baixo a unica coisa que mexesse fosse o conteúdo da direita. Já tentei usar o position fixed mas ele quebra a página, tentei usar o position: sticky mas ele não funciona. Alguém sabe como resolver isso ?
    • Por lezão
      Ola pessoal!
      Td bem com vcs?
       
      Estou tentando fazer esse item ficar em css e naun estou conseguindo alguem pode me ajudar?
      <table width="75%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="15%" height="35"><b>Moda da Casa</b></td> <td width="55%" style="border-bottom: dotted; border-width: 1px 3px 3px 1px; border-color: black black #000000 #000000"></td> <td width="7%"><b>R$ 25,00</b></td> <td width="3%" rowspan="2" align="left"><img src="https://clipartart.com/images/delete-button-clipart.jpg" width="75px" heigth="50px"/></td> </tr> <tr> <td colspan="3" height="35"> <div class="label-float"> <input type="text" value="Molho de tomate, mussarela, calabresa ralada, catupiry, alho tostado, cebola, azeitonas e oregano." size="100%" placeholder="" required=""> </div> </td> </tr> </table> obrigado!
       
       
       
    • Por marsolim
      galera tô tentando fazer uma classificação aqui junto com um sum e não to conseguindo. até o momento consigo gerar a tabela de desempenho assim
       
         $sql = "SELECT *,SUM(pontos_total) AS totais FROM desempenho INNER JOIN usuarios ON usuarios.id = desempenho.id_usuario GROUP BY id_usuario ORDER BY totais DESC";     if($res = mysqli_query($con, $sql)){         while($row = mysqli_fetch_assoc($res)){             echo $row["nome"] . " - " . $row["totais"] . "<br>";         }     }  
      ok isso me gera uma tabela como segue
       
      jean claude van damme - 152
      bruna marquezine - 149
      bruce willis - 131
      ...
       
      o que não to conseguindo é incluir um contagem pra saber em que posição a pessoa está por exemplo se a bruna marquezine logar no sistema deve aparecer pra ela
       
      Sua pontuação: 149
      Sua posição: 2
       
      to tentando incluir uma clausula pra contar os totais maiores ou iguais ao do usuário logado e assim a quantidade de registros que retornar é a posição da pessoa.
       
      detalhe pertinente: totais é uma soma de vários subtotais espalhados pela tabela em nome de cada usuario tipo
       
      nesse cenario temos como soma dos pontos totais
       
      1 - 8
      2 - 13
      3 - 3
      4 - 7
      5 - 2
       
      alguma ideia de como posso pegar a posição apenas alterando o sql?
    • Por ment0r
      Boa tarde a todos.
       
      Eu estou aproveitando a quarentena pra estudar e em aprofundar mais em JQuery. Comecei então um protótipo de PDV pra por em prática o aprendizado.
      Anexei uma imagem da tela. Basicamente é isso: o usuário digita um código e ao sair (blur), preenche o nome do produto e valor; quando o usuário clica em quantidade (keyup) faz o cálculo de valor unitário X qtde e exibe no campo total item. Quando o campo total item perde o foco (blur), os dados vão para o canto superior esquendo (conforme imagem) e ficam como linha daquela tabela.
       
      Só que quando eu faço uma nova consulta, ele apaga o registro anterior. O que eu queria é que quando eu pesquisasse um novo produto e fizesse o cálculo, armazenasse o segundo produto na linha de baixo e não apagasse o anterior.
      Esse trecho busca o valor e exibe nos campos - tudo ok aqui.
      // Pega o valor digitado no campo código // Passa como parametro para função buscaProduto codigo.blur(function(){ if (codigo.val() != '') { buscaProduto(codigo.val()); } else { alert('Por favor, digite algum valor no campo código'); codigo.focus(); } }); // Função responsável por buscar os dados do produto function buscaProduto(codigo){ $.ajax({ url : "busca_produto.php", type : 'post', cache: false, // não mantém os dados em cache dataType: 'json', // não é necessário passar quando é html data : { cod : codigo }, success: function(msg){ produto.val(msg.NOME); valor.val(msg.PRECO); quantidade.focus(); } }) } Esse trecho adiciona a linha dos dados na tabela do canto superior esquerdo.
      // Executa a função preencheDados quando o input #total_item perde o foco total_item.blur(function(){ preencheDados(codigo.val(), produto.val(), quantidade.val(), valor.val(), total_item.val()) }) // Preeche os dados calculados na tela function preencheDados(codigow, produtow, quantidadew, valorw, total_itemw){ th = '<th>1</th>'; th += '<th>'+codigow+'</th>'; th += '<th>'+produtow+'</th>'; th += '<th>'+quantidadew+'</th>'; th += '<th>'+valorw+'</th>'; th += '<th>'+total_itemw+'</th>'; destino.html(th); descricao.val(produtow); valor_down.val(valorw); quantidade_down.val(quantidadew); total_item_down.val(total_itemw); sub_total.val('Calcular...'); codigo.val('').focus(); produto.val(''); quantidade.val(''); valor.val(''); total_item.val(''); } Se alguém puder me dar uma dica de como adicionar essa segunda linha (th) eu agradeço muito.
       
      Um abraço a todos.

×

Informação importante

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