Ir para conteúdo

POWERED BY:

Arquivado

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

Tiago Emerick

[Resolvido] Combobox com array

Recommended Posts

Boa noite pessoal estou com um problema. Não sei porque o select nao esta sendo carregado com os ids das marcas......

 

segue abaixo o script com os selects:

<title>Teste Combo</title>
<script src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function exibeModeloSelect(id_marca) {
$.ajax(
	{
	  type: "POST",
	  url: "processa.php",
	  data: "acao=exibeModeloSelect&id_marca=" + id_marca,
	  beforeSend: function() {
			// enquanto a função esta sendo processada, você
		// pode exibir na tela uma
		// msg de carregando
	  },
	  success: function(txt) {
			// pego o id da div que envolve o select com
		// name="id_modelo" e a substituiu
		// com o texto enviado pelo php, que é um novo 
		//select com dados da marca x
		$('#ajax_marca').html(txt);
	  },
	  error: function(txt) {
	 	// em caso de erro você pode dar um alert('erro');
	  }
	}
);
}	
</script>
</head>

<body>

Marca: <br/>
<select name="id_marca" onchange="exibeModeloSelect(this.value);">
<option value="">Selecione</option> 
<?php foreach(get_marcas() as $marcas) {

	echo '<option value="' . $marcas['id_marca'] . '">' . $marcas['ds_marca'] . '</option>';

 } ?>
</select>

<br /><br />

Modelo: <br/>

<div id="ajax_marca">
	<select name="id_modelo">
	<option value="">Selecione a Marca</option>
  </select>
</div>

</body>

 

e abaixo segue o script com os arrays, creio que a parte de php esteja certa...

 

<?php

// Para solicionar problema de ACENTOS
header('Content-Type: text/html; charset=ISO-8859-1');

function get_marcas() {

	// Aqui criamos um array bidimensional, que poderá vi do banco de
// dados da mesma forma
// basta você fazer um select * from tabela_marca -> a tabela_marca 
// deve conter: id_marca, ds_marca
$marcas = array(
		array('id_marca' => 1, 'ds_marca' => 'Chevrolet'),
		array('id_marca' => 2, 'ds_marca' => 'Fiat'),
		array('id_marca' => 3, 'ds_marca' => 'Ford')
	    );
return $marcas;
}

function get_modelos($id_marca) {
// Ao invés de buscar num array (é como estou fazendo aqui), você 
// pode da um select na tabela
// do banco de dados que armazena o modelo, e retorna todos os 
//modelos da marca $id_marca
// select * from tabela_modelo where id_marca = $id_marca -> a 
// abela_modelo deve conter: id_marca, id_modelo, ds_modelo
// depois do select você retorna os dados do banco na função
$tabela_modelo = array(
array('id_marca' => 1, 'id_modelo' => 1, 'ds_modelo' => 'Vectra'),
array('id_marca' => 1, 'id_modelo' => 2, 'ds_modelo' => 'Corsa'),
array('id_marca' => 1, 'id_modelo' => 3, 'ds_modelo' => 'Meriva'),
array('id_marca' => 2, 'id_modelo' => 4, 'ds_modelo' => 'Uno'),
array('id_marca' => 2, 'id_modelo' => 5, 'ds_modelo' => 'Tempra'),
array('id_marca' => 2, 'id_modelo' => 6, 'ds_modelo' => 'Pálio'),
array('id_marca' => 3, 'id_modelo' => 7, 'ds_modelo' => 'Ranger'),
array('id_marca' => 3, 'id_modelo' => 8, 'ds_modelo' => 'Eco'),
array('id_marca' => 3, 'id_modelo' => 9, 'ds_modelo' => 'Fiesta')
);

$modelo = array();
$cont = 0;
for($i=0; $i < count($tabela_modelo); $i++) {
	if($tabela_modelo[$i]['id_marca'] == $id_marca) {
		$modelo[$cont]['id_marca']= $tabela_modelo[$i]['id_marca'];
		$modelo[$cont]['ds_modelo'] = $tabela_modelo[$i]['ds_modelo'];
		$cont++;
	}
}
return $modelo;
}

switch ($_POST['acao']) {
case "exibeModeloSelect":
	$txt =  '<select name="id_modelo">';
	$txt .= '<option value="">Selecione o Modelo</option>';

	foreach(get_modelos($_POST['id_marca']) as $modelo) {
		$txt .= '<option value="'.$modelo['id_modelo'].'">' . $modelo['ds_modelo'] . '</option>';	
	}

	$txt .= "</select>";

	echo $txt;
break;
}
?>

 

Obs.: Eu nao montei esse script do zero nao...ainda nao sei fazer quase nada em javascript, ai acabo me enrolando quando tem que fazer essas coisas.

Se alguem der um help...valew.

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.