Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Salve pessoal, estou montando um filtro com ajax combobox no qual cada select html é preenchido com o resultado de uma consulta mysql, porém não entendo muito da parte que deve ser salva, qual tipo de campo deve ser salvo, numérico, decimal, varchar e etc..
Aquelas famosas buscas de veiculos
Tipo
Marca
Modelo
Ano de / Ano Até
Preço De / Preço Até
Minha dúvida é sóbre Preço e Data, pois preço teria que ser salvo e selecionado com o ponto e a virgula, ex: 1.000,00
E ano por ser número também "2013"
Outra dúvida é, como recuperar o que foi selecionado lá no campo "<select name="modelo">", dentro do dentro do MySQl SELECT "Preço De" ou "Ano De" para poder fazer a referência e puxar só os valores ou ano daquele modelo selecionado e não todos os Anos e Preços que tem cadastrado no banco de dados. Tentei recuperar de forma normal como abaixo
$modelo = $_POST['modelo']; // esse creio que iria recuperar o <select name="modelo><option value="palio">Palio</option</select> certo?
$precode = $_POST['precode']; // mesmo sendo preço de, ele recupera o modelo, que é o <select> que vem antes do preço de por causa do combobox js então se eu colocar ele no SELECT ficaria WHERE veiculoAno >= '$precode' Então para que funcionace teria que ser como abaixo..
$pegaPrecoDe = mysql_query("SELECT * FROM anuncios WHERE veiculoModelo = '$modelo' ORDER BY veiculoPreco ASC");
//O que nao funciona dentro do precode.php que é incluso dentro do <select name="anode">precode.php</select> pelo js
$modelo = $_POST['modelo'];
$pegaPrecoDe = mysql_query("SELECT * FROM anuncios WHERE veiculoModelo = '$modelo' ORDER BY veiculoPreco ASC");
// O que funciona
$precode = $_POST['precode'];
$pegaPrecoDe = mysql_query("SELECT * FROM anuncios WHERE veiculoAno = '$precode ' ORDER BY veiculoAno ASC");
Ai abaixo eu iria recuperar os valores no while, mas o veiculoModelo = '$modelo' não é recuperado, parece um bloqueio, ele só recupera o ultimo <select> armazenado, no caso de Preço De, ele recupera só o Ano Até.. se eu colocar para recuperar o veiculoTipo que é o primeiro select, ele não recupera.. É meio complicado tomara que alguém me entenda.Ta beleza, armazenar data como INT e valor como NUMERIC, bele
Agora sobre a outra parte de recuperar a variavel para o select, esse é meu select
arquivo anoate.php
O JS combobox insere esse arquivo dentro do <option> html de acordo com o que for escolhido no select anterior, no caso anode.php bele?
<?php
include('../connect.php');
$conecta = mysql_connect("$hostname","$username","$password");
$db = mysql_select_db("$database");
$ateano = $_POST['ateano'];
$veicModelo = $_POST['modelo'];
$pegaAnoAte = mysql_query("SELECT * FROM anuncios WHERE veiculoModelo = '$veicModelo' ORDER BY veiculoAno DESC");
if($pegaAnoAte <= '0'){
echo '<option value="">Erro</option>';
}else{
echo '<option value="">Até</option>';
while($res = mysql_fetch_array($pegaAnoAte)){
$anoAte = $res['veiculoAno'];
echo '<option value="'.$anoAte.'">'.$anoAte.'</option>';
}
}
?>
Na forma que está o **SELECT** com o **WHERE veiculoModelo = '$veicModelo'** não funciona, porque ele não recupera o valor de um campo anterior ao ultimo selecionado, pois antes do campo "Ano De", tem outros campos como "tipo, modelo e marca" entende? Mas não sei porque ele nao recupera **$veicModelo = $_POST['modelo'];** ele só recupera **$ateano = $_POST['ateano'];** que é o ultimo item selecionado, que no caso vai recuperar ['modelo'] pois os campos em sequencia são **"Tipo, Marca, Modelo, Ano De, Ano Ate, Preço De, Preço Ate"**
Se eu fizer o select assim:
<?php
include('../connect.php');
$conecta = mysql_connect("$hostname","$username","$password");
$db = mysql_select_db("$database");
$ateano = $_POST['ateano']; // viagem mas esse recupera o modelo..
$veicModelo = $_POST['modelo'];
// Modelo //
$pegaAnoAte = mysql_query("SELECT * FROM anuncios WHERE veiculoAno >= '$ateano ' ORDER BY veiculoAno DESC");
if($pegaAnoAte <= '0'){
echo '<option value="">Erro</option>';
}else{
echo '<option value="">Até</option>';
while($res = mysql_fetch_array($pegaAnoAte)){
$anoAte = $res['veiculoAno'];
echo '<option value="'.$anoAte.'">'.$anoAte.'</option>';
}
}
?>
Ele passa porque o ultimo campo selecionado antes dele foi o Ano De se eu colocar o Modelo que é um campo ANTES AINDA do Ano De ele já não recupera o valor para fazer a comparação... Entende? O porque dessa comparação é não pegar TODOS os ANOS cadastrados na tabela e sim só os anos que tem naquele MODELO
Entendeu?
Ta resolvido, problema nem era no select e sim no JS que estava completamente mau programado.
Seu texto esta muito confuso, assim como seu código.
Quando você diz DATA esta se referindo apenas ao ANO? Armazene como INT.
Para valores pode usar NUMERIC, lembrando que não há separador de milhar e no lugar de vírgula você deve usar ponto.