Márcio Lima 0 Posted January 13, 2019 Report Share Posted January 13, 2019 Viva! Nos últimos tempos tenho me aventurado em criar algumas análises e formulários a uma base de dados em MS SQL recorrendo a PHP. Salvaguardo que os meus conhecimentos em HTML e/ou PHC são menos que básicos, contudo, recorrendo alguma pesquisa e tentativa erro, tenho conseguido solucionar alguns problemas. No entanto, cheguei a um problema ainda não consegui resolver: Tenho uma página em HTML e PHP que apresenta uma tabela, resultante de um select à minha BD. O meu objectivo agora é, por cada linha da tabela, disponibilizar uma caixa de texto e um botão de forma a actualizar um campo dessa mesma tabela. <!DOCTYPE html> <html lang="pt"> <head> <link rel='icon' href='img/favicon.ico' type='image/x-icon'/ > <title>Listagem</title> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> </head> <body> <?php $sql = "select bistamp, nome, obrano, ref, design, qtt, familia from bi (nolock) where qtt<>0 and bostamp='".$_GET['pkno']."'"; include 'dbcon.php'; //Executa QUERY $stmt = sqlsrv_query( $conn, $sql ); if( $stmt === false) { die( print_r( sqlsrv_errors(), true) ); } if( $head = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { echo " <div class='container'> <h2>PackingList - ".$head['obrano']."</h2> </div>"; echo " <div class='container'> <p><h5><b>Cliente: </b>".$head['nome']."</h5></p><br> <table class='table table-striped'>"; } echo " <thead> <tr> <th>Ref</th> <th>Design</th> <th>Qtt</th> <th>Qtd Stf</th> </tr> </thead>"; //PRENCHIMENTO DE LINHA while( $row = sqlsrv_fetch_array( $stmt, SQLSRV_FETCH_ASSOC) ) { echo " <tbody> <tr> <td>".$row['ref']."</td> <td>".$row['design']."<br><br><b>Familia: </b>".$row['familia']."</td> <td>".$row['qtt']."</td> <td> <form name='updphc' method='post' action=''> <input class='form-control input-md' type='number' id='myqtt2' min='0' max='".$row['qtt']."'><br> <button class='btn btn-primary btn-lg' name='btn-".$row['bistamp']."' type='submit' value='".$row['bistamp']."' >Atualiza</button><br><br> </form> </td> </tr> </tbody> "; } sqlsrv_free_stmt( $stmt); // Close the connection. sqlsrv_close( $conn ); ?> </form> </table> </div> <script> $(document).ready(function() { var delay = 2000; $('.btn-primary').click(function(e){ e.preventDefault(); var myqtt2 = $('#myqtt2').val(); if(myqtt2 == ''){ alert("Quandidade Vazia"); $('#myqtt2').focus(); return false; } $.ajax ({ type: "POST", url: "query.php", data: { myqtt2: myqtt2 }, success: function(data) { setTimeout(function() { $('.message_box').html(data); }, delay); } }); }); }); </script> </body> </html> O problema é que com este código actual apenas me é considerado a caixa de texto da primeira linha. Sinto me perdido neste momento. Alguem me pode ajudar sobre isto? Um abraço, Márcio LIma Link to post Share on other sites
Cerzedelo 41 Posted January 14, 2019 Report Share Posted January 14, 2019 A primeira questão é, está a fazer a leitura do campo das qtt, quando está a carregar a página, através do documento ready. Isto é, a leitura das qtt é feita quando a página é carregada pelo browser e não quando clica no botão. Deve só despoletar a acção de actualização, quando depois de actualizar o campo, clicar no botão actualizar, para isso, deve dar ao referido botão o evento click. $( "#actualizar" ).click(function() { alert( "O botão actualizar foi premido." ); }); A tag actualizar seria o id do botão actualizar. Depois existe a segunda fase da questão, é a de saber qual é a linha que está a actualizar, isto se quiser fazer o update na base de dados. E para isso, convinha ter um elemento identificativo, um id, por cada uma das linhas, coisa que aparentemente a sua tabela não mostra. Neste caso, nem precisa de um botão, basta clicar na linha da tabela para obter o resultado. ${'#tabela tr td').click(function(){ var qt = $(this).attr('qtt'); alert(qt); }); Por último, se não quiser estar a redescobrir a roda, e facilitar o trabalho, pode utilizar DataTables, que lhe permite manipular as tabelas em html. Ver exemplo em : https://editor.datatables.net/examples/inline-editing/simple 1 Report Link to post Share on other sites
Márcio Lima 0 Posted January 14, 2019 Author Report Share Posted January 14, 2019 Viva Obrigado pela ajuda. Parece-me lógico. O problema aqui é precisar de resolver esta situação da actualização e não ter as noções básicas de como isto funciona. Relativamente à identificação do actualizar, a minha ideia seria introduzir a primarykey da linha no id do botão e/ou caixa actualizar e utilizar esse código para a query. Contudo a dificuldades também passa de: como passar uma variavel do PHP para o script ajax naquele preciso momento. Obrigado pela ajuda. Link to post Share on other sites
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now