Ir para conteúdo
Fórum Script Brasil
  • 0

ARRAY PHP


Visitante

Pergunta

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.valuetxtdescricao.valuetxtqtdentrada.valuetxtcustouni.valuetxtprecovenda.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(produtodescricaoqtdentradacustouniprecovenda) {
 
                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>
            
Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

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>

 

Screenshot_1.png

Editado por Frank K Hosaka
Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...