Visitante Postado Janeiro 18, 2021 Denunciar Share Postado Janeiro 18, 2021 Como faço pra criar um array, pegando os valor de uma lista conforme mostrado no código abaixo: <div class="row mt-5"> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6"> <div class="form-group "> <label for="produto">Nome do Produto</label> <select class="form-control " id="txtproduto" > <?php $query = "SELECT * FROM produto ORDER BY produto asc"; $result = mysqli_query($conexao, $query); if(count($result)){ while($res = mysqli_fetch_array($result)){ ?> <option value="<?php echo $res['produto']; ?>"><?php echo $res['produto']; ?></option> <?php } } ?> </select> </div> </div> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6"> <div class="form-group "> <label for="descricao"> Descrição </label> <input type="text" class="form-control mr-2" id="txtdescricao" name="descricao" placeholder="Descrição" required > </div> </div> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6 ml-2"> <div class="form-group "> <label for="qtdentrada"> Quantidade </label> <input type="number" class="form-control mr-2" id="txtqtdentrada" placeholder="Quantidade" required > </div> </div> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6"> <div class="form-group" style="margin-left: 9px;"> <label for="custouni"> Custo Unitário </label> <input type="text" class="form-control mr-2 money" id="txtcustouni" placeholder="Custo Unitário" required > </div> </div> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6 ml-2"> <div class="form-group "> <label for="precovenda"> Preço de Venda </label> <input type="text" class="form-control mr-2 money" id="txtprecovenda" placeholder="Preço de Venda" required > </div> </div> <div class="col-xl-1 col-lg-2 col-md-2 col-sm-6"> <div class="form-group "> <a type= "button" class="editar btn btn-success mt-4 ml-3" onclick= "cadEstoque(txtproduto.value, txtdescricao.value, txtqtdentrada.value, txtcustouni.value, txtprecovenda.value)"><i class="fas fa-plus-circle"></i></a> </div> </div> </div> Esse é código da minha tabela <div class="table-responsive-sm"> <table class="table" id="registroTabela"> <thead> <tr> <th scope="col">Nome do Produto</th> <th scope="col">ID Estoque</th> <th scope="col">Quantidade</th> <th scope="col">Custo Unitário</th> <th scope="col">Preço de Venda</th> </tr> <tbody id="listaRegistro"> </tbody> </thead> </table> </div> Tenho um script como mostra no código abaixo, que quando clico cadEstoque vai criando uma lista do produto com base as informações inserida no formulário <script> let fields = [ 'produto', 'descricao', 'qtdentrada', 'custouni', 'precovenda', ] tabela = document.getElementById('registroTabela'); function cadEstoque(produto, descricao, qtdentrada, custouni, precovenda) { var qtdLinha = tabela.rows.length; var linha = tabela.insertRow(qtdLinha), cells = []; // para cada field da variável fields for (let field of fields) { // adiciona uma célula à linha cells[field] = linha.insertCell(); // cria um elemento de texto let textElement = document.createTextNode(eval(field)); // adiciona o texto à célula cells[field].appendChild(textElement); } } </script> Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 lowys Postado Janeiro 19, 2021 Denunciar Share Postado Janeiro 19, 2021 Veja se isso te ajuda: Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Frank K Hosaka Postado Janeiro 29, 2023 Denunciar Share Postado Janeiro 29, 2023 (editado) Gostei desse código, ele é muito bom. Testei o código, mas fiz um monte de gambiarra para funcionar. O primeiro problema é a caixa de combinação que você chama de txtproduto. Eu tive que mexer justamente nele! O PHP não é capaz de saber qual o produto que o usuário selecionou. Por causa dessa limitação, eu pedi para o PHP jogar tudo o que tinha para dentro do txtproduto. Usei o meu banco de dados, onde a minha tabela de produtos não tem quantidade e nem preço de venda. Ele tem id, mas deixei de lado para diminuir o tamanho do código. O problema é que isso acabou comprometendo a função Java CadEstoque, ele pegava o valor do txtproduto para colocar na sua tabela de orçamento. Então, eu fui forçado a criar a função Java Teste( ), e pedi para essa função esconder o nome do produto na propriedade placeholder do txtproduto. Assim, quando o usuário apertar aquele botão verde, o botão verde não vai passar o valor do txtproduto, mas sim o placeholder. É uma das telas mais bonitas que eu já vi. Essa é a primeira vez que uso a minha habilidade de fazer gambiarra dentro da floresta do Bootstrap. Mais importante: eu tive um problemão com o cadEstoque, não consegui achar a solução no Google. Usei o velho método da tentativa e erro, e tirei a tabela que estava fora da função para dentro da função. Agora ele funciona, só não sei explicar porque. A minha intuição me diz que o código Java não conseguia enxergar a tabela porque eu joguei o código no topo (ele estava na base), mas quando coloquei ele dentro da função (que foi chamado dentro do documento, ele conseguiu ver a famosa tabela). <script> fields = ['produto','custouni'] function cadEstoque(produto, custouni) { tabela = document.getElementById('registroTabela'); qtdLinha = tabela.rows.length; linha = tabela.insertRow(qtdLinha), cells = []; // para cada field da variável fields for (let field of fields) { // adiciona uma célula à linha cells[field] = linha.insertCell(); // cria um elemento de texto let textElement = document.createTextNode(eval(field)); // adiciona o texto à célula cells[field].appendChild(textElement);}} function teste(){ select = document.getElementById("txtproduto"); opcaoTexto = select.options[select.selectedIndex].text opcaoValor = select.options[select.selectedIndex].value opcaoJvalor=JSON.parse(opcaoValor) txtproduto.placeholder=opcaoTexto txtcustouni.value=opcaoJvalor['custo'] } </script> <body style="width:70%;margin:0 auto"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.0/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-gH2yIJqKdNHPEq0n4Mqa/HGKIhSkIHeL5AyhkYV8i59U5AR6csBvApHHNl/vI1Bx" crossorigin="anonymous"> <div class="row mt-5"> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6"> <div class="form-group "> <label for="produto">Nome do Produto</label> <select class="form-control " id="txtproduto" onchange=teste()> <?php $conexao=new mysqli("localhost","root","","astudy"); $query = "select * from tbprod order by prod limit 10"; $result = mysqli_query($conexao, $query); if($result->num_rows){ while($res = mysqli_fetch_array($result)){ $id=$res['codprod']; $custo=$res['custo']; $prod=$res['prod']; echo '<option value={"id":'.$id.',"custo":'.$custo.'}>'.$prod; }} ?> </select> </div></div> <div class="col-xl-2 col-lg-2 col-md-2 col-sm-6"> <div class="form-group" style="margin-left: 9px;"> <label for="custouni"> Custo Unitário </label> <input type="text" class="form-control mr-2 money" id="txtcustouni" placeholder="Custo Unitário" required > </div></div> <div class="col-xl-1 col-lg-2 col-md-2 col-sm-6"> <div class="form-group "> <a type= "button" class="editar btn btn-success mt-4 ml-3" onclick= "cadEstoque(txtproduto.placeholder, txtcustouni.value)"><i class="fas fa-plus-circle"></i></a> </div></div> </div> <div class="table-responsive-sm"> <table class="table" id="registroTabela"> <thead><tr> <th scope="col">Nome do Produto</th> <th scope="col">Custo Unitário</th> </tr> <tbody id="listaRegistro"></tbody></thead></table></div> Editado Janeiro 29, 2023 por Frank K Hosaka Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Visitante
Como faço pra criar um array, pegando os valor de uma lista conforme mostrado no código abaixo:
Esse é código da minha tabela
Tenho um script como mostra no código abaixo, que quando clico cadEstoque vai criando uma lista do produto com base as informações inserida no formulário
Link para o comentário
Compartilhar em outros sites
2 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.