Combo dinamico

3 respostas
R

eu fiz um combo, que traz dados do banco, dai eu escolho 1, eu quero q ele de reload na página para desbloquear outro combo tem como sem eu precisar de botao submit, sem usar ajax e outra linguagem só no php?

3 Respostas

M

Sem usar ajax é meio que impossível neh?!?
Se vc quer dinâmico tem que ter ajax;

Ve com JQuery ou JavaScript.

P

tem esse plug in https://github.com/perdeu/jsonbox. tem um exemplo bem bacana.

A

Tem um esquema bacana, com estados e cidades, bem simples e sem segredo.
Vou dar um exemplo em PHP, pois me parece ser o que está utilizando.

<label>
   <span>Estado</span>
       	<select name="estado">
                <option value="-1">Escolha o estado</option>
                <!-- Aqui você preenche a combo com as cidades existentes na sua base-->
                <?php
		     $sql = "SELECT id, nome FROM estado ORDER BY nome ASC";
		         try{
			    $query = $conecta->prepare($sql);
			    $query->execute();
			    $resultado = $query->fetchAll(PDO::FETCH_ASSOC);
			}catch(PDOException $erro){
			    echo 'Erro '.$erro->getMessage();	
			 }
			
                       foreach($resultado as $result){
		?>
                <option value="<?php echo $result['id']; ?>"><?php echo $result['nome']; ?></option>
                <?php 
		}//foreach
		?>
             </select>
      </label>
                        
      <label>
       	<span>Cidade</span>
        <select name="cidade">
             <option value="0" disabled="disabled">Escolha o estado</option>
        </select>
      </label>

Feito isso na sua página crie a página que vá carregar estes valores em JS.

$(document).ready(function(){         
	$("select[name=estado]").change(function(){
    	$("select[name=cidade]").html('<option value="0">Carregando...</option>');
        $.post("scripts/cidades.php",
              {estado:$(this).val()},
              	function(valor){
               	$("select[name=cidade]").html(valor);
              }
		);
   	});
});

Agora implemente a página .php que vai buscar essas cidades de acordo com a escolhida.

cidades.php

<?php
	$sql = "SELECT * FROM constri_cidade WHERE estado = ? ORDER BY nome ASC";
	
	try{
		$query = $conecta->prepare($sql);
		$query->bindValue(1,$_POST['estado'],PDO::PARAM_STR);
		$query->execute();
		$resultado = $query->fetchAll(PDO::FETCH_ASSOC);
	}catch(PDOException $erro){
		echo "Erro ao selecionar. Tente novamente ou contacte o administrador.";
		echo $erro->getMessage();	
	}
	
	foreach($resultado as $res){
		echo '<option value="'.$res['id'].'">'.$res['nome'].'</option>';
	}//fim foreach

?>

Como você pode perceber Rockfido este exemplo pode ser facilmente modificado para outras necessidades, até com mais combos, caso seja necessário.

Espero que possa ter ajudade.

Bons estudos.

Criado 29 de novembro de 2011
Ultima resposta 23 de fev. de 2012
Respostas 3
Participantes 4