Daily Archives: 2 de março de 2010

Combo dinâmico com JQuery

Olá amigos, aqui irei mostrar um dos meus dotis programarescos para o desenvolvmento de um super combox dinâmico “se utilizando-se” de JQuery e PHP… muuito babinha de fazer!!!

Veja aqui o aplicativo funcionando

É muito fácil, tudo o q vc tem a fazer é utilizar algumas implementação do JQuery para tornar o seu trabalho muito mais prático e fácil.

No arquivo index.php, cria-se a chamada para a função JavaScript e tb temos que colocar um arquivo q faz todo o processo de “pedido” de informação.

Implementação semelhante do Blog do Gilberto Albino

<?php
require_once('dados.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Um combox clássico - Seleção de estado para aparecer, magicamente, as cidades deste estado!!!</title>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
</head>
<body>

<script type="text/javascript">

function EstadoCidade(id_estado) {

// Aqui temos uma função do arquivo do JQuery.
$.ajax(

{

type: "POST",

url: "dados.php",

data: "action=exibeCidade&id_estado=" + id_estado,

success: function(txt) {

// Aqui a gente imprime tudo o q foi feito no dados.php
$('#marcacao').html(txt);

},

}

);

}

</script>

</head>

<body>

Selecione um estado: <br/>
<select name="id_estado" onchange="EstadoCidade(this.value);">
<option value="">Selecione o estado</option>
<?php foreach(colect_estado() as $estado) { ?>
<option value="<?php echo $estado['id_estado']; ?>">
<?php echo $estado['desc_estado']; ?>
</option>
<?php } ?>
</select>

<br /><br />

Cidades do estado <br/>

<div id="marcacao">
<select name="id_cidade">
<option value="">Selecione a Cidade</option>
</select>

</div>

</body>
</html>

No dados.php temos.

<?php

function colect_estado() {

$estados = array(
array('id_estado' => 1, 'desc_estado' => 'São Paulo'),
array('id_estado' => 2, 'desc_estado' => 'Rio de Janeiro'),
array('id_estado' => 3, 'desc_estado' => 'Minas Gerais')
);
return $estados;
}

function colect_cidades($id_estado) {
$table_cidades = array(
array('id_estado' => 1, 'id_cidade' => 1, 'desc_cidade' => 'Cidade São Paulo'),
array('id_estado' => 2, 'id_cidade' => 2, 'desc_cidade' => 'Cidade do Rio de Janeiro'),
array('id_estado' => 3, 'id_cidade' => 3, 'desc_cidade' => 'Cidade de Belo Horizonte'),
);

$cidades = array();
$cont = 0;

for($i=0; $i < count($table_cidades); $i++) {

if($table_cidades[$i]['id_estado'] == $_POST['id_estado']) {
$cidades[$cont]['id_cidade'] = $table_cidades[$i]['id_cidade'];
$cidades[$cont]['desc_cidade'] = $table_cidades[$i]['desc_cidade'];
$cont++;
}

}

return $cidades;

}

switch ($_POST['action']) {

case "exibeCidade":

$txt = '<select name="id_cidade">';

$txt .= '<option value="">Selecione a Cidade</option>';

foreach(colect_cidades($_POST['id_estado']) as $cidades) {

$txt .= '<option value="'.$cidades['id_cidade'].'">' . $cidades['desc_cidade'] . '</option>';

}

$txt .= "</select>";

echo $txt;

break;

}

?>