Ir para conteúdo

POWERED BY:

Arquivado

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

raphaelwilker

$.post + select = combo box dinâmica !

Recommended Posts

Infelismente não estou conseguindo passar uma informação do metodo post como parâmetro para o PHP.

Sem isso não consigo fazer com que a minha combo box funcione !

Vou passar ela como exemplo !

<script language="javascript">
$(document).ready(function(){
             
          $("#unidades").change(function(){ 
             var valor = $('#uni').val(); 
             $.post("faculdades.php",
                  {uni:valor},
                   function(resposta){ 
                     $("#faculdades").html(resposta); 
                   });
             });
          });

		  </script>
</head>
<body>
<?php require_once('conectado.php');?>
<?php
$query_Recordset1 = "SELECT * FROM unidade";
$Recordset1 = mysql_query($query_Recordset1, $conexao) or die(mysql_error());
?>
<select name="unidade" id="unidades">
<option value="0" id="uni">Escolha uma unidade</option>
<?php
	
	while ($row_Recordset1 = mysql_fetch_assoc($Recordset1))
	{
		echo '<option value="'.$row_Recordset1['uni'].'"id="uni" >'. $row_Recordset1['uni'].'</option>';
	}

?>
</select>

<br/>
*Área:<br/>
<select name="faculdades" id="faculdades">
<?php include ("faculades.php"); ?>
</select>

<?php
header("Content-Type: text/html; charset=ISO-8859-1", true); 
require_once ("conectado.php");
$local =utf8_decode( $_POST['uni']);
$query_Recordset1 = "SELECT * FROM faculdades WHERE uni = '$local' ORDER BY uni ASC";
$Recordset1 = mysql_query($query_Recordset1) or die(mysql_error());
/*if( mysql_num_rows($Recordset1) == 0 )
{
	echo '<option value="0" > Não temos unidades neste local ainda </option>';
	
	}
	else
	{	echo '$local';
		while ($row_Recordset1 = mysql_fetch_assoc($Recordset1))
		{
			echo '<option value="'.$row_Recordset1['uni'].'" >'. $row_Recordset1['instituto'].'</option>';
		}
	}*/
echo "$local";
?>

Quem puder me dar um help thanks ! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque:

$("#unidades").change(function(){ 
             var valor = $('#uni').val();
por:

$("#unidades").change(function(){ 
             var valor = $(this).val();

oque você fez de dar ID à um option, não faz o menor sentido, ainda mais por repetir esse ID..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Gente estou com um codigo que funciona que é maravilha no mozilla , porem nnão está exibindo os valores no IE :o

 

Quem puder me ajudar eu agradeço muito !

Eu quero que os valores da segunda select seja exibido !

Vou passar o codigo !

 

<script language="javascript">
$(document).ready(function(){
	$("select[name=unidade]").change(function(){
		$("select[name=faculdades]").html('<option value="0">Buscando valor</option>');
		$.post("faculdades.php",
		{unidade:$(this).val()},
		function(valor){
			$("select[name=faculdades]").html(valor);
				
			})
	});
});

</script>

<form action="" method="post">
<select name="unidade" >
<option value="0">Escolha uma unidade</option>
<?php
 require_once('conectado.php');
$query_Recordset1 = "SELECT * FROM unidade";
$Recordset1 = mysql_query($query_Recordset1, $conexao) or die(mysql_error());
 
 
	while ($row_Recordset1 = mysql_fetch_assoc($Recordset1))
	{
		echo '<option value="'.$row_Recordset1['uni'].'" >'. $row_Recordset1['uni'].'</option>';
	}

?>
</select>

<br/>
*Área:<br/>
<select name="faculdades">
<option value="0" disabled="disabled">Escolha uma Unidade</option>

</select>


<?php
header("Content-Type: text/html; charset=ISO-8859-1", true); 
require_once ("conectado.php");
$local = utf8_decode($_POST['unidade']);
$query_Recordset1 = "SELECT * FROM faculdades WHERE uni = '$local' ORDER BY uni ASC";
$Recordset1 = mysql_query($query_Recordset1) or die(mysql_error());
if( mysql_num_rows($Recordset1) == 0 )
{
	echo '<option value="0" > Não temos unidades neste local ainda </option>';
	}
	else
	{
		while ($row_Recordset1 = mysql_fetch_assoc($Recordset1))
		{
			echo '<option value="'.$row_Recordset1['uni'].'" >'. $row_Recordset1['instituto'].'</option>';
		}
	}
?>
</form>



Muito obrigado quem se interesssar em ajudar e desculpa o incomodo ! ^_^ :lol:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Primeiramente apaga o cache o IE.

Se não resolver, execute a página e veja se dá algum erro de script no canto esquerdo na barra de status.

Irá aparecer um triângulo amarelo.

 

Se der, tente corrigir ou poste o erro aqui para te ajudarmos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Desculpa por duplicar !

Mas não funcionou o codigo !

 

Troque:

$("#unidades").change(function(){ 
             var valor = $('#uni').val();
por:

$("#unidades").change(function(){ 
             var valor = $(this).val();

oque você fez de dar ID à um option, não faz o menor sentido, ainda mais por repetir esse ID..

 

OI Dee !

Valeu a intesão !

Mas nem aparecer no IE o triangulo de erro :huh: http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif

Eu já tentei alertar resultado, pelo que eu vi ele está retornando fora do Body :huh:

 

Primeiramente apaga o cache o IE.

Se não resolver, execute a página e veja se dá algum erro de script no canto esquerdo na barra de status.

Irá aparecer um triângulo amarelo.

 

Se der, tente corrigir ou poste o erro aqui para te ajudarmos.

 

Estou vendo que o problema é mais dificil do que parece :o ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja no código fonte.

 

E se você ir por ID ?

<script language="javascript">
$(document).ready(function(){
        $("#unidade").change(function(){
                $("#faculdades").html('<option value="0">Buscando valor</option>');
                $.post("faculdades.php",
                {unidade:$(this).val()},
                function(valor){
                        $("#faculdades").html(valor);
                                
                        })
        });
});

</script>

E nos

<select name="faculdades"> e <select name="unidade">

coloque

<select name="faculdades" id ="faculdades"> <select name="unidade" id ="unidade">

Compartilhar este post


Link para o post
Compartilhar em outros sites

dá um alert em valor.

 

você lembrou de linkar a biblioteca jquery ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está o arquivo:

faculdades.php

 

? prefira montar os <options> da forma correta, como te sugeri aqui:

http://forum.imasters.com.br/index.php?/topic/384962-select-relacionado-a-outro-select/page__view__findpost__p__1496546

 

 

onde está o <script> linkando a biblioteca jQuery ?

não use o atributo language.

 

Mudar de name para id, não irá fazer a menor diferença Dee não fique 'chutando'.

Além do que, pela lógica do que você passou, no onchange de um select, ele irá apagar ele mesmo.. oque não faz muito sentido 'prático'.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom William estou tentando fazer as alterações que você me passou !

Por enquanto ainda não exibe no IE.

Será que é algum problema de compatibilidade do IE8 ? :huh:

 

Como está o arquivo:

faculdades.php

 

? prefira montar os <options> da forma correta, como te sugeri aqui:

http://forum.imasters.com.br/index.php?/topic/384962-select-relacionado-a-outro-select/page__view__findpost__p__1496546

 

 

onde está o <script> linkando a biblioteca jQuery ?

não use o atributo language.

 

Mudar de name para id, não irá fazer a menor diferença Dee não fique 'chutando'.

Além do que, pela lógica do que você passou, no onchange de um select, ele irá apagar ele mesmo.. oque não faz muito sentido 'prático'.

 

Isso é primeira coisa que eu fiz :mellow: ^_^

No Mozilla funciona mas no IE :(

dá um alert em valor.

 

você lembrou de linkar a biblioteca jquery ?

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poste como você fez as alterações.

 

última alternativa, seria forçar o IE8 emular o IE7 com aquela meta tag lá.. mas teste em outro IE(outra versão de preferência) antes de partir para isso.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a meta tag ? :huh:

Poste como você fez as alterações.

 

última alternativa, seria forçar o IE8 emular o IE7 com aquela meta tag lá.. mas teste em outro IE(outra versão de preferência) antes de partir para isso.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Compartilhar este post


Link para o post
Compartilhar em outros sites

Will !

Necas de funcionar !

Porem testei o seu codigo que esta no teu site e ele funciona no IE porem , o mesmo está apontando que tem um erro nele !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual erro?

e que código você testou ?

 

você precisa ser mais claro nas tuas respostas se não fica impossível lhe ajudar.

E se funciona, então qual é o problema ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom agora não deu mais erro aqui para mim.

foi este codigo que eu testei http://www.wbruno.com.br/scripts/combos-dependentes.php

E só fiz um comentario arrespeito dele pois o meu IE tinha apontado o erro de ID mas agora não está apontando mais este erro no seu codigo.

Vou tentar ser mais claro em minhas respostas.

Ate o presente momento ainda não consegui fazer com que a select exiba os dados que estão sendo puxados do banco.

Vou estudar melhor o teu exemplo para ver o que você fez para assim acertar o meu codigo.

Já tirei o language e coloquei o type.

Já tentei alertar o valor , quando faço isso ele ate exibe o que eu quero porem quando eu uso o

$("select[name=faculdades]").html(valor);
ainda não está imprimindo dentro do select.

Vou tentar também fazer o downgrade do meu IE.

Obrigado pela atenção ! ^_^

 

 

Qual erro?

e que código você testou ?

 

você precisa ser mais claro nas tuas respostas se não fica impossível lhe ajudar.

E se funciona, então qual é o problema ?

 

Relativo ao seu codgio ainda estou usando $.post ao inves de $.get.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não faça isso:

Já tentei alertar o valor , quando faço isso ele ate exibe o que eu quero porem quando eu uso o

$("select[name=faculdades]").html(valor);
ainda não está imprimindo dentro do select.

 

Não use o método .html() para isso. Faça corretamente, como eu disse, criando os options:

option[i] = document.createElement('option');//criando o option

Primeiro adapte o meu exemplo ao teu banco, e depois modifique, trocando o método de envio, e oque mais você quiser..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ate o presente momento só consegui fazer com que a combo que exibe o valor exiba um baita expaço em braco !

acho que vou ter mesmo que usar o IE 7 para testar.

 

Will infelismente não estou conseguindo adptar o teu codigo por isso vou tentar a opção de downgrade.

 

Podem me chamar de burro mas eu fiz tudo o que eu pude para conseguir exibir !

Infelizmente ele não está chamando !

o codigo está assim atualmente:

<script src="JS/jquery-1.4.1.js"></script>
<script  type="text/javascript">
$(document).ready(function(){
	$("select[name=unidade]").change(function(){
		$("select[name=faculdades]").html('<option value="0">Buscando valor</option>');
		$.post("faculdades.php",
		{unidade:$(this).val()},
		function(valor){
			var option = new Array()
			  $.each(function(valor){
			  	option[i] = document.createElement('option');
			  	$( option[i] ).attr( {value : unidade} );
				$("select[name='faculdades']").append( option[i] );
				})
			})	
	})
});
<body>
<form action="" method="post" id="imprimi">
<label><select name="unidade" id="unidades">
<option value="0">Escolha uma unidade</option>
<?php
 require_once('conectado.php');
$query_Recordset1 = "SELECT * FROM unidade";
$Recordset1 = mysql_query($query_Recordset1, $conexao) or die(mysql_error());
 
 
	while ($row_Recordset1 = mysql_fetch_assoc($Recordset1))
	{
		echo '<option value="'.$row_Recordset1['uni'].'" >'. $row_Recordset1['uni'].'</option>';
	}
?>
</select></label>
<br/>
*Área:<br/>
<label><select name="faculdades" id="faculdades">
<option value="0" id="facu" >Escolha uma Unidade</option>

</select></label>
</form>

</body>


<?php
header("Content-Type: text/html; charset=ISO-8859-1", true);
header("meta http-equiv=X-UA-Compatible content=IE=7",true ); 
require_once ("conectado.php");
$local = utf8_decode($_POST['unidade']);
$query_Recordset1 = "SELECT * FROM faculdades WHERE uni = '$local' ORDER BY uni ASC";
$Recordset1 = mysql_query($query_Recordset1) or die(mysql_error());
if( mysql_num_rows($Recordset1) == 0 )
{
	echo '<option value="0" > Não temos unidades neste local ainda </option>';
	}
	else
	{
		while ($row_Recordset1 = mysql_fetch_assoc($Recordset1))
		{
			echo '<option value="'.$row_Recordset1['uni'].'" >'. $row_Recordset1['instituto'].'</option>';
		}
	}
?>

Quem quiser tentar achar o erro e dizer depois qual é obrigado !

E obrigado desde já a todos que já ajudaram ! ^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

O modo com que você misturou os jQuery está completamente errado.

Esse código após </body> é o arquivo: faculdades.php ?

 

Poste a estrutura SQL das tuas tabelas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu Will mas não está errado não !

XD

Consegui alterar o codigo e ele está funcionando para que ele exiba !

:P http://forum.imasters.com.br/public/style_emoticons/default/clap.gif http://forum.imasters.com.br/public/style_emoticons/default/joia.gif :lol:

Veja:

<script language="javascript">
$(document).ready(function(){
        $("select[name=unidade]").change(function(){
                $("select[name=faculdades]").html('<option value="0">Buscando valor</option>');
                $.post("faculdades.php",
                {unidade:$(this).val()},
                function(valor){
                        $("select[name=faculdades]").html('<option>'+valor+'</option>');
                                
                        })
        });
});

</script>
Para quem não entendeu nada eu estava com problema nessa linha:

$("select[name=faculdades]").html(valor);
Isso porque o Mozilla já entende que é para preencher porem o IE não entendia , para solucionar bastou eu fazer isso:

$("select[name=faculdades]").html('<option>'+valor+'</option>');
Hehe Gloria a Deus ! XD

Fui !

O modo com que você misturou os jQuery está completamente errado.

Esse código após </body> é o arquivo: faculdades.php ?

 

Poste a estrutura SQL das tuas tabelas.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

'à rigor', isso ainda não está correto.. mas é por sua conta ^_^

 

qq coisa, volte aqui, e poste a estrutura SQL das tabelas em questão.

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.