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 pessoal.
tenho uma busca, mas quando o combo tem caracteries especias como "CITROEN" ele nao continua a busca, alguem pode me ajudar a resolver?
<?php
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="'.utf8_encode($fabricante->fabricante).'">'.utf8_encode($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="'.utf8_encode($veiculo->modelo).'">'.utf8_encode($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="'.utf8_encode($motor->motor).'">'.utf8_encode($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)));
$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>'.utf8_encode($automovel->modelo).'</td><td>'.utf8_encode($automovel->motor).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->combustivel).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->ano_vela).'</td><td>'.utf8_encode($automovel->ngk).'</td><td>'.utf8_encode($automovel->ngk_green).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->gap).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->ano_cabo).'</td><td>'.utf8_encode($automovel->cabos_ngk).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->ano_bobina).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($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 motor = '$motor'");
$pegaSonda->execute();
while($lnC = $pegaSonda->fetchObject()){
$retorno['conteudo'] .= '<tr>';
$retorno['conteudo'] .= '<td>'.utf8_encode($lnC->modelo).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($lnC->motor_versao).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($lnC->combustivel).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($lnC->ano_seox).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($lnC->posicao_sensor).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($lnC->codigo_sensor).'</td>';
$retorno['conteudo'] .= '</tr>';
}
elseif($seguimento == '2 rodas'):
$retorno['conteudo'] .= '<thead>';
$retorno['conteudo'] .= '<tr class="table">';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #e7e7e9;"><img src="images/veiculo.jpg"></td>';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #FFF;"><img src="images/motor.jpg"></td>';
$retorno['conteudo'] .= '<td class="cinza" align="center" valign="middle" style="background: #e7e7e9;"><img src="images/combustivel.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #e7e7e9;"><img src="images/ano.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #FFF;"><img src="images/posicao_sensor.jpg"></td>';
$retorno['conteudo'] .= '<td align="center" style="background: #00a650;"><img src="images/sensor_oxigenio.jpg"></td>';
$retorno['conteudo'] .= '</tr">';
$retorno['conteudo'] .= '</thead>';
while($automovel = $pegaAutomovel->fetchObject()){
$retorno['conteudo'] .= '<tr><td>'.utf8_encode($automovel->modelo).'</td><td>'.utf8_encode($automovel->motor).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->combustivel).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->ano_vela).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->posicao_sensor).'</td>';
}
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>'.utf8_encode($automovel->modelo).'</td><td>'.utf8_encode($automovel->motor).'</td>';
$retorno['conteudo'] .= '<td>'.utf8_encode($automovel->ano_vela).'</td><td>'.utf8_encode($automovel->codigo_g).'</td><td></tr>';
}
endif;
}
break;
}
echo json_encode($retorno);
}
?>Eu ja utilizo utf8_general_ci
qual o comportamento da sua busca? Estou tentando interpretar a frase "não continua a busca".
Ele me retorna uma mensagem de retorno, no caso "Não encontramos veiculos" sendo que tem sim veiculos para a opção "Citroen", e isso acontece com todos que tem acentuações.
E qual é o comportamento da busca diretamente no SGBD?
Testei "SELECT * FROM 4rodas WHERE fabricante = "CITROËN"
E qual é o comportamento da busca diretamente no SGBD?
E qual é o comportamento da busca diretamente no SGBD?
E qual é o comportamento da busca diretamente no SGBD?
E qual é o comportamento da busca diretamente no SGBD?
E qual é o comportamento da busca diretamente no SGBD?
" e a busca foi realizada diretamente
Consegue imprimir o select retornado pelo PHP para o banco?
Sua pagina HTML esta em qual codificacao? ISO? UTF8? Seu script PHP esta em qual codificação?
Qual banco vc está utilizando?
Mysql, Oracle, SqlServer
Tô perguntando isso, pq to mexendo com Oracle e esse negocio é muito chato. heheheh
Só uma curiosidade, vc tem tem várias tabelas com estruturas iguais????
Se sim... pq vc não cria uma unica tabela com campos para essas características?
A busca é muito mais relacionada com o encode do SGBD do que entulhos de código em PHP.
Apenas pelo fato de utilizar a função utf8_encode percebe-se que há uma inconsistência entre SGBD, PHP e HTML (sim, HTML faz parte desse conjunto pois é o output).
É importante que o SGBD esteja em algum formato como utf8_general_ci ou até utf8_swedish_ci (esse era padrão do MySQL WorkBench até um tempo atrás).
No link abaixo há uma discussão, mais antiga, utilizando utf8_swedish_ci. No post #12 é explanado que utf8_general_ci permite busca acentuada.
http://forum.imasters.com.br/topic/515598-encoding/
Outros detalhes sobre o conjunto de enconde você encontrará no link abaixo:
http://forum.imasters.com.br/topic/340459-php-html-mysql-charset-encoding/