Ir para conteúdo

POWERED BY:

Arquivado

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

João Teixeira

inserir múltiplos dados a partir de javascript e php no banco de dados

Recommended Posts

Olá pessoal, boa noite!

Desculpem se estou direcionando minha dúvida para tópico errado, pois sou novo no mundo da programação e no forum tbm, porem acho que vou precisar do php para resolver o problema, por isso postei aqui!

Bom vamos lá!

tenho o seguinte documento com uma estrutura html e um script para selecionar múltiplos campos provenientes de uma <li>

esse script renderiza os resultados selecionados em uma div!

a partir daí que começa o enrosco, eu gostaria de inserir esses dados selecionados no meu banco de dados todos de uma vez, porem uma linha para cada item selecionado!

logo a baixo deixo o código em questão para você darem uma olhada, caso seja possível alguém me dar uma força eu fico grato pela ajuda!

 

desculpem se me referi errado na explicação pois ainda sou inexperiente em mesclar javascript e php!

obrigado pela atenção!

 

Vide Código:

 

***

<!DOCTYPE html>
<head runat="server">
<title></title>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('#selectable').selectable({
stop: function () {

var result = '';

$('.ui-selected').each(function (){
result += $(this).text() + ', ';
});
//coloca o resultado na div
$('#result').html(result);
}
});
});
</script>
<style>
li{
display:inline-block;
padding:7px;
border:1px solid black;
cursor:pointer;
margin-bottom:3px;
}
.ui-selected{
background-color:green;
color:white
}
.ui-selecting{
background-color:grey;
color:white
}
</style>
</head>
<body style="font-family: Arial">
<form id="form1" runat="server">

<ul id="selectable">
<li>01</li>
<li>02</li>
<li>03</li>
<li>04</li>
<li>05</li>
<li>06</li>
<li>07</li><br>
<li>08</li>
<li>09</li>
<li>10</li>
<li>11</li>
<li>12</li>
<li>13</li>
<li>14</li><br>
<li>15</li>
<li>16</li>
<li>17</li>
<li>18</li>
<li>19</li>
<li>20</li>
<li>21</li><br>
<li>22</li>
<li>23</li>
<li>24</li>
<li>25</li>
<li>26</li>
<li>27</li>
<li>28</li><br>
<li>29</li>
<li>30</li>
</ul>
Consultar Data:
<div id="result"></div>
</form>
</body>

</html>



Compartilhar este post


Link para o post
Compartilhar em outros sites
var arr_result;

$(document).ready(function () {
  $('#selectable').selectable({
    stop: function () {
      arr_result = [];

      $('.ui-selected').each(function (){
        var $this = $(this),
            arr_result.push($this.text());
      });

      //coloca o resultado na div
      $('#result').html(arr_result.join(', '));
      
      console.log(arr_result);
    }
  });
});

Você pode jogar o resultado da arr_result numa requisição ajax para uma página PHP em que grave os dados no banco.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá Mokololo, obrigado por me ajudar!

Substitui o meu código pelo seu e ele continua selecionando normalmente!

porem, nessa parte de ajax, array, php... eu sou bem pé frio ainda!

por acaso seria algo mais ou menos assim!?

$.ajax({
type: "POST",
url: 'enviaData.php',
data: {arr_result: arr_result},
success: function (result) {
// Como requisitar $resposta e mostrar ela aqui
}
error: function (result) {
// Como requisitar $resposta e mostrar ela aqui
}
});

e o a pagina php, como iria entender que o arr_result é um array e inserir os dados separados no BD?
dês de já agradeço pela atenção?
Boa noite!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exatamente assim, mas você precisa enviar arr_result como JSON:

data: { arr_result : JSON.stringify(arr_result) }

Procura usar .done() e .fail() do $.ajax()

 

No caso da página PHP em que irá fazer o POST:

$arr_result = json_decode($_POST["arr_result"]); //transforma JSON em array
$params = implode(", ", array_fill(0, count($arr_result), "(?)"));
$sql = "INSERT INTO tabela (coluna) VALUES " . $params;

$stmt = $pdo->prepare($sql); 
$i = 1;
foreach($arr_result as $val) {
  $stmt->bindValue($i++, $val);
}
$stmt->execute();

Se por acaso estiver utilizando PDO.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Obrigado pelas dicas Gabriel!

Vou tentar fazer dessa forma para ver se vai dar certo!

Porem ainda vou ter que me adequar ao PDO também!

só fiquei sem entender uma coisa!

 

$params = implode(", ", array_fill(0, count($arr_result), "(?)"));

 

esse interrogação entre parenteses!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A interrogação é o valor que você vai passar na query utilizando prepared statements: http://php.net/manual/pt_BR/pdo.prepared-statements.php

 

array_fill monta a query pra você, por exemplo, se a array tiver 5 valores:

$sql   = "INSERT INTO tabela (coluna) VALUES (?), (?), (?), (?), (?)";

ou 10 e 2 colunas "(?, ?)":

$sql_2 = "INSERT INTO tabela (coluna_1, coluna_2) VALUES (?, ?), (?, ?), (?, ?), (?, ?), (?, ?)";

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.

      Estou com uma dúvida, referente cálculo de valores em tempo real.

      Tenho uma rotina, que faz o cálculo, o problema é mostrar o resultado.

      Quero mostrar o RESULTADO assim: 0,00  ou  0.00

      Abaixo posto o código.
      jQuery('input').on('keyup',function(){ //Remover ponto e trocar a virgula por ponto var m = document.getElementById("pgRest").value; while (m.indexOf(".") >= 0) { m = m.replace(".", ""); } m = m.replace(",","."); //Remover ponto e trocar a virgula por ponto var j = document.getElementById("pgDsct").value; while (j.indexOf(".") >= 0) { j = j.replace(".", ""); } j = j.replace(",","."); m = parseFloat(jQuery('#pgRest').val() != '' ? jQuery('#pgRest').val() : 0); j = parseFloat(jQuery('#pgDsct').val() != '' ? jQuery('#pgDsct').val() : 0); //Mostra o Resultado em Tempo Real jQuery('#pgTroco').val(m - j); <<=== aqui estou errando })  
       
      Grato,
       
      Cesar
       
       
    • Por violin101
      Caro amigos, saudações.

      Tenho uma tabela escrita em JS que funciona corretamente.
       
      Minha dúvida:
      - como devo fazer para quando a Tabela HTML estiver vazia, exibir o LOGO da Empresa ?

      Abaixo posto o script:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'i' ) return;// Não é Ctrl+A, portanto interrompemos o script evt.preventDefault(); //Chama a Função Calcular Qtde X Valor Venda calcvda(); var idProdutos = document.getElementById("idProdutos").value; var descricao = document.getElementById("descricao").value; var prd_unid = document.getElementById("prd_unid").value; var estoque_atual = document.getElementById("estoque_atual").value; var qtde = document.getElementById("qtde").value; var vlrunit = document.getElementById("vlrunit").value; var vlrtotals = document.getElementById("vlrtotal").value; var vlrtotal = vlrtotals.toLocaleString('pt-br', {minimumFractionDigits: 2}); if(validarConsumo(estoque_atual)){ //Chama a Modal com Alerta. $("#modal_qtdemaior").modal(); } else { if(qtde == "" || vlrunit == "" || vlrtotal == ""){ //Chama a Modal com Alerta. $("#modal_quantidade").modal(); } else { //Monta a Tabela com os Itens html = "<tr style='font-size:13px;'>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='id_prds[]' value='"+idProdutos+"'>"+idProdutos+"</td>"; html += "<td width='47%' height='10'>"+ "<input type='hidden' name='descricao[]' value='"+descricao+"'>"+descricao+ "<input type='hidden' name='esp[]' value='"+prd_unid+"'> - ESP:"+prd_unid+ "<input type='hidden' name='estoq[]' value='"+estoque_atual+"'></td>"; html += "<td width='10%' height='10' style='text-align:center;'>"+ "<input type='hidden' name='qtde[]' value='"+qtde+"'>"+qtde+"</td>"; html += "<td width='12%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrunit[]' value='"+vlrunit+"'>"+vlrunit+"</td>"; html += "<td width='14%' height='10' style='text-align:right;'>"+ "<input type='hidden' name='vlrtotal[]' value='"+vlrtotal+"'>"+vlrtotal+"</td>"; html += "<td width='12%' height='10' style='text-align:center;'>"+ "<button type='button' class='btn btn-uvas btn-remove-produto' style='margin-right:1%; padding:1px 3px; font-size:12px;' title='Remover Item da Lista'>"+ "<span class='fa fa-minus' style='font-size:12px;'></span></button></td>"; html += "</tr>"; $("#tbventas tbody").append(html); //Função para Somar os Itens do Lançamento somar(); $("#idProdutos").val(null); $("#descricao").val(null); $("#prd_unid").val(null); $("#qtde").val(null); $("#vlrunit").val(null); $("#vlrtotal").val(null); $("#idProdutos").focus(); //Se INCLUIR NOVO produto - Limpa a Forma de Pagamento $("#pgSoma").val(null); $("#pgRest").val(null); $("#pgDsct").val(null); $("#pgTroco").val(null); $("#tbpagar tbody").empty(); }//Fim do IF-qtde }//Fim do Validar Consumo });//Fim da Função btn-agregar  
      Grato,

      Cesar
       
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, poderiam me ajudar.

      Estou com a seguinte dúvida:
      --> como faço para para implementar o input código do produto, para quando o usuário digitar o ID o sistema espera de 1s a 2s, sem ter que pressionar a tecla ENTER.

      exemplo:
      código   ----   descrição
           1       -----   produto_A
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Humildemente peço desculpa por postar uma dúvida que tenho.

      Preciso salvar no MySql, os seguinte Registro:

      1 - Principal
      ====> minha dúvida começa aqui
      ==========> como faço para o Sistema Contar Automaticamente o que estiver despois do 1.____?
      1.01 - Matriz
      1.01.0001 - Estoque
      1.01.0002 - Oficina
      etc

      2 - Secundário
      2.01 - Loja_1
      2.01.0001 - Caixa
      2.01.0002 - Recepção
      etc
       
      Resumindo seria como se fosse um Cadastro de PLANO de CONTAS CONTÁBEIL.

      Grato,


      Cesar









       
    • Por violin101
      Caros amigos, saudações.

      Por favor, me perdoa em recorrer a orientação dos amigos.

      Preciso fazer um Relatório onde o usuário pode Gerar uma Lista com prazo para vencimento de: 15 / 20/ 30 dias da data atual.

      Tem como montar uma SQL para o sistema fazer uma busca no MySql por período ou dias próximo ao vencimento ?

      Tentei fazer assim, mas o SQL me traz tudo:
      $query = "SELECT faturamento.*, DATE_ADD(faturamento.dataVencimento, INTERVAL 30 DAY), fornecedor.* FROM faturamento INNER JOIN fornecedor ON fornecedor.idfornecedor = faturamento.id_fornecedor WHERE faturamento.statusFatur = 1 ORDER BY faturamento.idFaturamento $ordenar ";  
      Grato,
       
      Cesar
       
       
       
       
×

Informação importante

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