我正在使用PHP / MySQL数据库学习AJAX和JSON。我有这种情况:
我有4个下拉输入。它们都是从数据库中检索结果的依赖项(如过滤器)。在最后一个下拉列表中,我选择了汽车发动机(电机)。当我选择引擎时,我想通过AJAX beforeSend填充带有id的隐藏文本输入。这样我就可以将ID和POST一起发送给PHP。
我错过了什么?
这是我的PHP代码:
//$_POST = array_map('utf8_decode', $_POST);
if(isset($_POST)){
include_once "config.php";
$retorno = array();
$retorno['status'] = 0;
$retorno['conteudo'] = '';
$_SESSION['tabela'] = ($_POST['opcao'] == "seguimento") ? $_POST['seguimento'] : $_SESSION['tabela'];
if($_SESSION['tabela'] == '4 rodas'){
$tabela = '4rodas';
}elseif($_SESSION['tabela'] == '2 rodas'){
$tabela = '2rodas';
}elseif($_SESSION['tabela'] == 'Diesel'){
$tabela = 'diesel';
}elseif($_SESSION['tabela'] == 'Sonda'){
$tabela = 'sonda';
}
switch($_POST['opcao']){
case 'seguimento':
//pego o fabricante
$seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
$pegaFabricante = $pdo->prepare("SELECT * FROM `".$tabela."` GROUP BY `fabricante`");
$pegaFabricante->execute();
if($pegaFabricante->rowCount() == 0){
$retorno['status'] = 0;
}else{
$retorno['status'] = 1;
$retorno['conteudo'] .= '<option value="" selected>Selecione o fabricante</option>';
while($fabricante = $pegaFabricante->fetchObject()){
$retorno['conteudo'] .= '<option value="'.$fabricante->fabricante.'">'.$fabricante->fabricante.'</option>';
}
}
break;
case 'fabricante':
//pego o veiculo
$seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
$fabricante = strip_tags(trim(filter_input(INPUT_POST, 'fabricante', FILTER_SANITIZE_STRING)));
$pegaVeiculo = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `fabricante` = ? GROUP BY `modelo`");
$pegaVeiculo->execute(array($fabricante));
if($pegaVeiculo->rowCount() == 0){
$retorno['status'] = 0;
}else{
$retorno['status'] = 1;
$retorno['conteudo'] .= '<option value="" selected>Selecione o veículo</option>';
while($veiculo = $pegaVeiculo->fetchObject()){
$retorno['conteudo'] .= '<option value="'.$veiculo->modelo.'">'.$veiculo->modelo.'</option>';
}
}
break;
case 'veiculo':
//pego o motor
$seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
$fabricante = strip_tags(trim(filter_input(INPUT_POST, 'fabricante', FILTER_SANITIZE_STRING)));
$veiculo = strip_tags(trim(filter_input(INPUT_POST, 'veiculo', FILTER_SANITIZE_STRING)));
$pegaMotor = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `fabricante` = ? AND `modelo` = ? GROUP BY `motor`");
$pegaMotor->execute(array($fabricante, $veiculo));
if($pegaMotor->rowCount() == 0){
$retorno['status'] = 0;
}else{
$retorno['status'] = 1;
$retorno['conteudo'] .= '<option value="" selected>Selecione o motor</option>';
while($motor = $pegaMotor->fetchObject()){
$retorno['conteudo'] .= '<option value="'.$motor->motor.'">'.$motor->motor.'</option>';
}
}
break;
case 'motor':
//retorna o que selecinou
$seguimento = strip_tags(trim(filter_input(INPUT_POST, 'seguimento', FILTER_SANITIZE_STRING)));
$fabricante = strip_tags(trim(filter_input(INPUT_POST, 'fabricante', FILTER_SANITIZE_STRING)));
$veiculo = strip_tags(trim(filter_input(INPUT_POST, 'veiculo', FILTER_SANITIZE_STRING)));
$motor = strip_tags(trim(filter_input(INPUT_POST, 'motor', FILTER_SANITIZE_STRING)));
$processo = strip_tags(trim(filter_input(INPUT_POST, 'n_processo', FILTER_SANITIZE_STRING)));
$pegaAutomovel = $pdo->prepare("SELECT * FROM `".$tabela."` WHERE `fabricante` = ? AND `modelo` = ? AND `motor` = ?");
$pegaAutomovel->execute(array($fabricante, $veiculo, $motor));
if($pegaAutomovel->rowCount() == 0){
$retorno['status'] = 0;
}else{
$retorno['status'] = 1;
if($seguimento == "4 rodas"):
$retorno['conteudo'] .= '<thead>';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img src="images/veiculo.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/motor.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
$retorno['conteudo'] .= '<td colspan="3" align="center" class="cinza" style="background: #ffcb05;"><img src="images/velas.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/gap.jpg"></td>';
$retorno['conteudo'] .= '<td colspan="2" align="center" style="background: black;"><img src="images/cabos.jpg"></td>';
$retorno['conteudo'] .= '<td colspan="2" align="center" style="background: #ffcb05;"><img src="images/bobina-igni.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #ec1d25;"><img src="images/ngk.jpg"></td>';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #00a650;"><img src="images/ngk_green.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #ec1d25;"><img src="images/cabo.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #ec1d25;"><img src="images/bobina.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '</thead>';
while($automovel = $pegaAutomovel->fetchObject()){
$retorno['conteudo'] .= '<tr><td>'.$automovel->modelo.'</td><td>'.$automovel->motor.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->combustivel.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ano_vela.'</td><td>'.$automovel->ngk.'</td><td>'.$automovel->ngk_green.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->gap.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ano_cabo.'</td><td>'.$automovel->cabos_ngk.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ano_bobina.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->bobina_ngk.'</td></tr>';
}
$retorno['conteudo'] .= '<thead>';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img src="images/veiculo.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/motor.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center"><img style="max-width:50px;"src="images/p_sensor.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="5" align="center" style="background: #73F822;"><img style="max-width:150px;" src="images/o_sensor.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '</thead>';
$pegaSonda = $pdo->prepare("SELECT * FROM sonda WHERE n_processo = '$processo'");
$pegaSonda->execute();
while($lnC = $pegaSonda->fetchObject()){
$retorno['conteudo'] .= '<tr>';
$retorno['conteudo'] .= '<td>'.$lnC->modelo.'</td>';
$retorno['conteudo'] .= '<td>'.$lnC->motor_versao.'</td>';
$retorno['conteudo'] .= '<td>'.$lnC->combustivel.'</td>';
$retorno['conteudo'] .= '<td>'.$lnC->ano_seox.'</td>';
$retorno['conteudo'] .= '<td>'.$lnC->posicao_sensor.'</td>';
$retorno['conteudo'] .= '<td>'.$lnC->codigo_sensor.'</td>';
$retorno['conteudo'] .= '</tr>';
}
elseif($seguimento == '2 rodas'):
$retorno['conteudo'] .= '<thead>';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img style="width: 120px;" src="images/cabem.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center"><img style="width: 120px;" src="images/modelo.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td colspan="3" align="center" class="cinza" style="background: #ffcb05;"><img src="images/velas.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" style="background: #e7e7e9;"><img style="width: 100px;" src="images/terminais.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #ec1d25;"><img src="images/ngk.jpg"></td>';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #e7e7e9;"><img style="width: 60px;" src="images/iridum.jpg"></td>';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: white;"><img style="width: 80px;" src="images/luz.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '</thead>';
while($automovel = $pegaAutomovel->fetchObject()){
$retorno['conteudo'] .= '<tr>';
$retorno['conteudo'] .= '<td>'.$automovel->motor.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->modelo.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->combustivel.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ano_vela.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ngk.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ngk_iridium.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->gap.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->cabos_ngk.'</td>';
$retorno['conteudo'] .= '/<tr>';
}
elseif($seguimento == "Diesel"):
$retorno['conteudo'] .= '<thead>';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza" valign="middle"><img src="images/veiculo.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center"><img src="images/motor.jpg"></td>';
$retorno['conteudo'] .= '<td rowspan="2" align="center" class="cinza combustivel" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td colspan="3" align="center" class="cinza" style="background: red;"><img style="width: 200px;" src="images/vela_aquecer.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '</thead>';
while($automovel = $pegaAutomovel->fetchObject()){
$retorno['conteudo'] .= '<tr><td>'.$automovel->modelo.'</td><td>'.$automovel->motor.'</td>';
$retorno['conteudo'] .= '<td>'.$automovel->ano_vela.'</td><td>'.$automovel->codigo_g.'</td><td></tr>';
}
endif;
}
break;
}
echo json_encode($retorno);
}
这是我的AJAX代码:
$(function(){
$('select[name=seguimento]').change(function(){
var seguimento = $(this).val();
$('select[name=fabricante]').html('<option value="" selected>Selecione o fabricante</option>');
$('select[name=veiculo]').html('<option value="" selected>Selecione o veículo</option>');
$('select[name=motor]').html('<option value="" selected>Selecione o Motor</option>');
$.ajax({
method: 'post',
url: 'combo.php',
data:{opcao: 'seguimento', seguimento: seguimento},
dataType: 'json',
beforeSend: function(){
$('#status').html('Aguarde, buscando...');
$('table#conteudo').html('');
},
success: function(retorno){
if(retorno.status == 0){
$('#status').html('Não encontramos fabricantes!');
$('table#conteudo').html();
}else{
$('#status').html('');
$('select[name=fabricante]').html(retorno.conteudo);
}
}
});
});
$('select[name=fabricante]').change(function(){
var fabricante = $(this).val();
var seguimento = $('select[name=seguimento]').val();
var motor = $('select[name=motor]').val();
$.ajax({
method: 'post',
url: 'combo.php',
data:{opcao: 'fabricante', fabricante: fabricante, seguimento: seguimento},
dataType: 'json',
beforeSend: function(){
$('#status').html('Aguarde, buscando...');
$('table#conteudo').html('');
},
success: function(retorno){
if(retorno.status == 0){
$('#status').html('Não encontramos os veículos!');
}else{
$('#status').html('');
$('select[name=veiculo]').html(retorno.conteudo);
}
}
});
});
$('select[name=veiculo]').change(function(){
var fabricante = $('select[name=fabricante]').val();
var seguimento = $('select[name=seguimento]').val();
var motor = $('select[name=motor]').val();
var veiculo = $(this).val();
$.ajax({
method: 'post',
url: 'combo.php',
data:{opcao: 'veiculo', fabricante: fabricante, seguimento: seguimento, veiculo: veiculo},
dataType: 'json',
beforeSend: function(){
$('#status').html('Aguarde, buscando...');
$('table#conteudo').html('');
},
success: function(retorno){
if(retorno.status == 0){
$('#status').html('Não encontramos os Motores!');
}else{
$('#status').html('');
$('select[name=motor]').html(retorno.conteudo);
}
}
});
});
$('select[name=motor]').change(function(){
var fabricante = $('select[name=fabricante]').val();
var seguimento = $('select[name=seguimento]').val();
var veiculo = $('select[name=veiculo]').val();
var motor = $(this).val();
$.ajax({
method: 'post',
url: 'combo.php',
data:{opcao: 'motor', fabricante: fabricante, seguimento: seguimento, veiculo: veiculo, motor: motor, n_processo: n_processo},
dataType: 'json',
beforeSend: function(){
$('#status').html('Aguarde, buscando...');
},
success: function(retorno){
$('#status').html('');
$('table#conteudo').html(retorno.conteudo);
$('input[name=n_processo]').val(n_processo.n_processo);
console.log(n_processo)
}
});
});
});