last day (15 days later) » 

4:53 PM
0
Q: Ajax não funciona com Bootstrap Modal

ThiagoKollerOlá, tenho o seguinte código, onde o Modal Bootstrap abre a partir de uma pesquisa no BD quando eu clico em um item da lista retornada: <input type="text" name="pesquisa" id="pesquisa"> <table class="resultado"> </table> Até ai tudo bem, ele retorna os valores corretamente, abre o M...

 
dvd
Que botão "Executar" seria esse?
 
o botao que executa a função -> <button type="button" onClick="reg_prod()" class="btn btn-success">Registrar</button>
 
dvd
Nessa parte aqui value="<?php echo $qry['id']?>" o id não muda...
O ajax está pegando esse id que nunca muda...
 
é que se vc for ver, esse trecho está dentro do modal, que vai abrir de acordo com o ID, então, cada id que eu abro com o modal, ele aparece no input, o id relacionado ao modal. só que ao executar a função, ele só funciona quando eu abro o modal referente ao ID 1..
 
dvd
Sim. MAs esse id está vindo do PHP, e vc só está alterando a div conteúdo... o id do input name="nome" vai ser sempre o mesmo.
 
4:53 PM
quando eu abro o modal do ID 2, ele aparece la no input, ID 2, porem parece que o ajax não executa, como eu poderia fazer o ajax pegar o valor do input ID referente ao modal aberto? é possível?
 
dvd
então são várias modais?
 
olá
vou tentar ser mais detalhado
 
dvd
acho que já entendi
 
é possível mandar video aqui? kkk
 
dvd
faz assim: onClick="reg_prod(<?php echo $qry['id']?>)"
 
4:55 PM
vou tentar
 
dvd
ou melhor:
onClick="reg_prod('<?php echo $qry['id']?>')"
 
dvd
tem que alterar o ajax tb, peraí
function reg_prod(i) {
$.ajax({
type: "POST",
url: "../_php/nova_entrega_reg_prod.php",
data: {
produto: i,
},
success: function(data) {
$('#conteudo').html(data);
}
});
}
 
agora quando eu executo a função no modal 2, continua sem acontecer nada, porem ao abrir o modal 1, ele retorna o valor
tem como mandar um video pra vc?
por whatsapp ou por algum outro modo
 
dvd
só se for por email
 
4:59 PM
pode ser
vou gravar
 
dvd
davidsammuel@gmail.com
jah sei
tem outro problema tb
<div id="conteudo<?php echo $qry['id']?>">Teste</div>
e o Ajax altera para:
function reg_prod(i) {
$.ajax({
type: "POST",
url: "../_php/nova_entrega_reg_prod.php",
data: {
produto: i,
},
success: function(data) {
$('#conteudo'+i).html(data);
}
});
}
isso vai funcionar
não pode repetir ids senão dá conflito
 
vou tentar
 
dvd
perai, ainda tem um problema
produto: $('#id'+i).val(),
em vez de produto: i,
 
vc compila os códigos em algum lugar pra ver se tem erro?
ou só experiencia mesmo?
 
dvd
só olhando mesmo
 
5:08 PM
só um momento por favor
vou testar
 
dvd
Notei outra coisa, se o valor do campo é o proprio id, pode fazer assim mesmo como havia falando antes:
produto: i,
 
eu coloquei o código resumido para facilitar a leitura de quem fosse responder
mas no caso, eu tenho mais variáveis alem do produto
tenho preço tambem
entao escrevo preco+i
certi?
 
dvd
isso
 
e no html como q eu coloco para ele identificar?
no id fica como?
 
dvd
perai, não entendi o lance do "preco"
vc colocou resumido o Ajax?
 
5:17 PM
posso mandar o video?
ai vc vai entender bem
 
dvd
mandai
 
enviei
 
dvd
blz.. vou olhar
 
deu 7 mb, nao foi ainda kk
mas valeu!!
 
dvd
é, ainda nao chegou
mandou pro email certo mesmo? davidsammuel@gmail.com
 
5:27 PM
agora foi
 
dvd
agora chegou
 
o erro do for each nao é tao importante
o problema é o erro para armazenar as variáveis no BD
 
dvd
ah sim, mas eu tinha que ver era o código
 
o id do lanche ja foi
a ta kkkkk
vou mandar
 
dvd
vc disse que colocou o Ajax resumido na pergunta, coloca ele todo aqui
 
5:30 PM
esse é o código do HTML que faz a pesquisa dos lanches no BD
<input class="form-control" type="text" name="pesquisa" id="pesquisa" placeholder="Buscar produto" autofocus autocomplete="off">
<table class="table table-condensed table-striped table-hover resultado" style="font-size: 11pt">
</table>

<?php
$query = mysqli_query($con, 'select * from produtos');
while($qry = mysqli_fetch_assoc($query)){?>
<div class="modal fade" id="myModal<?php echo $qry['pro_id']?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
o AJAX ficou assim depois que modificamos
function reg_prod(i) {
$.ajax({
type: "POST",
url: "../_php/nova_entrega_reg_prod.php",
data: {
produto: i,
quantidade: $('#qtdd').val(),
preco: $('#pro_precov').val(),
comanda: $('#pro_comanda').val(),
adicional: $('#add').val(),
obs: $('#obs').val()
},
success: function(data) {
$('#conteudo'+i).html(data);
}
});
}
e o php para armazenar os dados no BD ficou assim
<?php
include "../_php/conexao.php";

$produto = $_POST['produto'];
$quantidade = $_POST['quantidade'];
$preco = $_POST['preco'];
$obs = $_POST['obs'];
$comanda = $_POST['comanda'];
if(empty($_POST['adicional'])){$adicional='';}else{$adicional=implode(', ',$_POST['adicional']);};
$calculo = '';

# VERIFICA SE JA TEM O MESMO PRODUTO CADASTRADO.
$sql = mysqli_query($con, "SELECT * FROM en_prod WHERE ep_comanda = '$comanda' AND ep_produto = '$produto' AND ep_adicional = '$adicional'");
$linhas = mysqli_num_rows($sql);
 
dvd
Aqui vc pode tirar o atributo id:
<input type="text" name="nome" id="pro_id" value="<?php echo $qry['pro_id']?>">
id="pro_id"
não serve pra nada, a não ser que vc use em outro lugar
 
eu usava antes quando postava tudo no BD sem o ajax
 
dvd
se era só pra pegar no Ajax, pode apagar pq já está sendo enviado no onclick
 
dvd
Nos outros campos vc coloca a id do PHP:
<input type="text" name="valor" id="pro_precov<?php echo $qry['pro_id']?>" value="<?php echo $qry['pro_precov']?>" hidden="true">
<input type="text" name="comanda" id="pro_comanda<?php echo $qry['pro_id']?>" value="<?php echo $comanda ?>" hidden="true">
 
5:37 PM
nos outros input tambem ne?
como no adicionais e quantidade
 
dvd
preco: $('#pro_precov'+i).val(),
comanda: $('#pro_comanda'+i).val(),
no Ajax
isso
tudo que for relacionado a uma modal, tem que ter o id do PHP
 
beleza, esse '+' no ajax so junta os valores entao
 
dvd
data: {
produto: i,
quantidade: $('#qtdd'+i).val(),
preco: $('#pro_precov'+i).val(),
comanda: $('#pro_comanda'+i).val(),
adicional: $('#add'+i).val(),
obs: $('#obs'+i).val()
},
 
a + b >> ab
1 + 2 >> 12
isso?
 
dvd
isso, se o ID for 2, por exemplo, vai ficar quantidade: $('#qtdd'+i).val(), -> quantidade: $('#qtdd2').val(),
 
5:40 PM
entendi!!
estou testando aqui, parece que agora o negocio está funcionando
 
dvd
tem erro não... é só colocar os IDs em cada coisa pra diferenciar o conteudo de uma modal da outra, senão fica tudo igual
 
entendi!!
muito obrigado pela sua ajuda
vou resolver agora o for each, acho que com um isset no php ja resolve
 
dvd
vou colocar a resposta lá para o exemplo que vc colocou
 
beleza!!
 
dvd
Até mais.. qq coisa tamos aí. :)
 
5:47 PM
ok, até!! muito obrigado!
 
5:57 PM
está ai ainda? uma duvida sobre o modal, posso perguntar aqui ou prefere q eu abra uma nova pergunta?
 

last day (15 days later) »