Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rafael Augusto_173176

Problemas com acentuação

Recommended Posts

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);
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

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/

Compartilhar este post


Link para o post
Compartilhar em outros sites

qual o comportamento da sua busca? Estou tentando interpretar a frase "não continua a busca".

Compartilhar este post


Link para o post
Compartilhar em outros sites

E qual é o comportamento da busca diretamente no SGBD?

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.