Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia pessoas. Aqui estou eu com mais uma dúvida. será que alguém pode tentar me ajudar?
eu estou criando campos dinâmicos e para isto estou jogando html dentro de uma variável no javascript. O código funciona normalmente, mas eu preciso de filtrar meu select pelo cod que é dado pelo valor do meu combo e quando coloco o WHERE o código passa a não funcionar mais. Penso que o jeito que estou passando o parâmetro. Veja só:
var html = '<select name="item" onchange="<? $wp_valores = $wpdb->get_results("SELECT * FROM materiais WHERE id=" ?> this.value <? "" ); ?>)';
se eu coloco WHERE id=2 por exemplo, ele funciona normal, mas o problema é que eu preciso pegar o this.value . Alguém sabe o que eu estou fazendo de errado?
Ficarei muito feliz se alguém puder me ajudar. Estou ficando louca já rs
Vc precisa utilizar AJAX para isso.
Dessa forma ai não faz nenhum sentido. Misturar html com js com php.
Tania, bom dia
Como o colega William disse, você precisará usar Ajax para realizar isso.
É algo extremamente simples, e ficarei feliz em ajudar.
Primeiramente, você precisa estar usando alguma versão da biblioteca jQuery.
Você pode usar alguma do Google:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
Ou pode fazer o download aqui:
Depois de importar a biblioteca para seu html, você já pode criar a sua função ajax:
<script src="js/jquery.js" type="text/javascript" charset="utf-8" async defer></script>
<script>
function campoDinamico(){
var url, clone;
clone = $('#div').html();
url = 'ajax.php';
$.get(url, function(retorno){
clone += retorno;
$('#div').html(clone);
})
}
</script>
A variável "url" chamará o seu arquivo php responsável por gerar o seu campo com todas as solicitações SQL;
A Variável "clone" fará uma cópia de todo conteúdo html que estiver na sua div.
A sua div é identificada no parâmetro $('#div').
No comando $('#div').html(clone); já será adicionado o conteúdo do parâmetro retorno.
Crie um arquivo chamado "ajax.php" no mesmo diretório da sua página, e o seu código:
<?php
include 'conectasql.php';
?>
<select name="item" onchange="<? $wp_valores = $wpdb->get_results("SELECT * FROM materiais WHERE id=" ?> this.value <? "" ); ?>)
Bem, basicamente é isso. Claro que existem "n" formas de se fazer um ajax
Esperto ter ajudado.
Outro detalhe...
Aparentemente você envia uma ID, e espera o retorno de informações daquela ID, não é isto?
Bem, se assim for,a coisa muda um pouco de figura.
Você pode deixar um campo para inserir o ID, e um botão para chamar a mesma função ajax, só que agora ela carregará um parâmetro get.
Digamos que este é o html:
<input type="text" id="id-busca"> <input type="buttom" onclick ="campoDinamico();">
E este o script:
function campoDinamico(){
var clone, id, url;
clone = $('#div').html();
id = $('#id-busca').val() /*Captura o valor do campo id-busca*/
url = 'ajax.php?id='+id; /*a url vai conter um parâmetro get "id", com o valor do campo*/
$.get(url, function(retorno){
clone += retorno;
$('#div').html(clone);
})
}
e este o arquivo php:
<?php
include 'conectasql.php';
$id = $_GET["id"] /*Capturo o valor passado via GET na url*/
?>
<select name="item" onchange="<? $wp_valores = $wpdb->get_results("SELECT * FROM materiais WHERE id="$id" ); ?>)
Primeira entenda dois conceitos básicos: server side e cliente side, você está misturando PHP (server side) com JS (client side), quando o JS (this.value) for executado o PHP ($wp_...) ja vai ter sido executado a horas, logo isto nunca vai funcionar...
Quer alterar algo neste sentido? A resposta é: ajax.