Ir para conteúdo

POWERED BY:

Arquivado

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

Marcelo Berto

combobox Dinamico

Recommended Posts

Boa noite

 

Gostaria de uma ajuda para resolver alguns problemas com combobox buscando resultado do bd MYSQL, onde preciso das informações de 'Ano da Turma', 'Turno', 'Serie' e 'Turma', que estão em uma unica tabela "turma".

 

1º duvida

 

Coloquei um código na página que quero o combo, mas os navegadores Internet Explorer 7 e 8 e opera 10.62 não conseguem efetuar a busca, ou seja, não executam a função.

 

já no navegadores mozilla FireFox 3.6.9 e Google chome 6.0.472.55 funcionam.

 

Estou utilizando Jquery 1.4.2

 

Alguem saberia como aperfeiçoar o código para que funcione também com os navegadores Internet Explorer 7 e 8 e opera 10.62?

 

<script type="text/javascript">

$(document).ready(function(){
	
	$("#resp2").click(function(evento){
		if ($("#resp2").attr("checked")){
			$("#responsavel2").css("display", "block");
		}else{
			$("#responsavel2").css("display", "none");
		}
	})
	
	$("#resp3").click(function(evento){
		if ($("#resp3").attr("checked")){
			$("#responsavel3").css("display", "block");
		}else{
			$("#responsavel3").css("display", "none");
		}
	})
	

$(anoTurma).load('include/anoTurma.php');
					   					   
//combo box Turno
$("select[name=anoTurma]").change(function(){
$("select[name=turno]").html('<option value="">Carregando.......</option>');

$.post('include/turno.php',
{anoTurma:$(this).val()},
function(valor){
$("select[name=turno]").html(valor);
}
)

})

//combo box serie
$("select[name=turno]").change(function(){
$("select[name=serie]").html('<option value="">Carregando.......</option>');

$.post('include/serie.php',

{turno:$(this).val()},

function(valor){

$("select[name=serie]").html(valor);
}
)

})

//combo box turma
$("select[name=serie]").change(function(){
$("select[name=turma]").html('<option value="">Carregando.......</option>');

$.post('include/turma.php',
{serie:$(this).val()},
function(valor){
$("select[name=turma]").html(valor);
}
)

})
	
});

</script>

2º No caso da combo 'SERIE' eu preciso passar outros valores como 'anoTurma' e 'turno' para trazer os dados corretamente, mas já tentei de diversas formas passar esse valor 'anoTurma' depois de selecionado pelo usuário o ano da turma, mas não consigo com o código acima.

 

O que eu tenho que acrescentar para trazer enviar esses dados para consulta?

 

Código da Consulta de serie.

 

<?php
include("connect_data_base.php");
$anoTurma = $_POST['anoTurma'];
$turno = $_POST['turno'];

$sql=mysql_query("SELECT DISTINCT serie FROM Turma WHERE turno = '$turno' and anoturma = '$anoTurma' ORDER BY serie ASC") or die(mysql_error());

if(mysql_num_rows($sql) == 0){
echo  '<option value=" ">'.htmlentities('Nada Encontrado').'</option>';
}else{
echo '<option value="">'.htmlentities('Escolha uma opção').'</option>';
while($result_sql = mysql_fetch_object($sql)){
$serie=ucfirst($result_sql->serie);
echo '<option value="'.$result_sql->serie.'">'.$serie.'</option>';
}
}
?>

Consulta de AnoTurma

<?php
include("connect_data_base.php");

$sql=mysql_query("SELECT DISTINCT anoTurma FROM Turma where anoTurma >= YEAR(CURRENT_DATE) order by anoTurma asc") or die(mysql_error());

if(mysql_num_rows($sql) == 0){
echo  '<option value="">'.htmlentities('Nada Encontrado').'</option>';
}else{
echo '<option value="">'.htmlentities('Escolha uma opção').'</option>';
while($result_sql = mysql_fetch_object($sql)){
$anoTurma=ucfirst($result_sql->anoTurma);
echo '<option value="'.$result_sql->anoTurma.'">'.$anoTurma.'</option>';
}
}
?>

Consulta Turno

<?php
include("connect_data_base.php");
$anoTurma = $_POST['anoTurma'];

$sql=mysql_query("SELECT DISTINCT turno FROM Turma WHERE anoTurma = '$anoTurma' ORDER BY turno ASC") or die(mysql_error());

if(mysql_num_rows($sql) == 0){
echo  '<option value="">'.htmlentities('Nada Encontrado').'</option>';
}else{
echo '<option value="">'.htmlentities(utf8_decode('Escolha uma opção')).'</option>';
while($result_sql = mysql_fetch_object($sql)){
$turno=ucfirst($result_sql->turno);
echo '<option value="'.$result_sql->turno.'">'.$turno.'</option>';
}
}
?>

Consulta Turma

<?php
include("connect_data_base.php");
$serie = $_POST['serie'];

$sql=mysql_query("SELECT turma FROM Turma WHERE serie = '$serie' ORDER BY turma ASC") or die(mysql_error());

if(mysql_num_rows($sql) == 0){
echo  '<option value="">'.htmlentities('Nada Encontrado').'</option>';
}else{
echo  '<option value="">'.htmlentities('Escolha uma opção').'</option>';
while($result_sql = mysql_fetch_object($sql)){
$turma=ucfirst($result_sql->turma);
echo '<option value="'.$result_sql->turma.'">Turma '.$turma.'</option>';
}
}
?>

Não tenho muito conhecimento no assunto, estou desenvolvendo para um Projeto Final da Faculdade.

 

Exemplo do formulário com o combobox.

http://www.pequenoencanto.net/netschool/index.php?action=page&task=cadAluno

 

Desde já Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, acho que o problema está em tentar fazer o .html('<option>...');

 

essa não é uma forma 'muito indicada'.. assim como uma chamada ao .innerHTML dos <select>s é uma coisa bem bugada.. no site da Microsoft, relatam esse problema do ie com o js.

 

por essas e outras, que prefiro montar combos assim:

http://forum.imasters.com.br/index.php?/topic/365795-combos-dependentes-ajax-jquery/

 

o IE é 'chatinho', e tem o modo burro dele (quirks mode), portanto, declare SEMPRE o DOCTYPE do teu documento HTML

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
valide a marcação:

http://validator.w3.org/check?verbose=1&uri=http%3A%2F%2Fwww.pequenoencanto.net%2Fnetschool%2Findex.php%3Faction%3Dpage%26task%3DcadAluno

 

o primeiro erro, que o debugador do ie6 me mostrou, foi de uma variavel não definida.

e realmente, cadê?

$(anoTurma).load('include/consultar.php?tipo=anoTurma');
quem é a variavel anoTurma ?

 

preste atenção nesses detalhes.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu cheguei a colocar esse

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

Mas no mozilla firefox o menu não funciona corretamente abrindo um menu sim e outro não e o formulário no IE não fica meio que fora do formato, com campos deslocados, já no CHOME não da erro nenhum interpretando numa boa.

 

Agora a questão da variável como eu faria para declarar ela corretamente, poderia ser utilizando a linha abaixo?

 

var anoTurma = document.getElementById(anoTurma);

 

Estou quase desistindo e deixar que o sistema só funcione no mozilla firefox e no chome.

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você tá usando jQuery, não precisa disso..

pow.. usa o melhor do jQuery (na minha opinião), os seletores

 

$("#anoTurma").load('include/consultar.php?tipo=anoTurma');//ou seja, deixa de ser uma variavel, e não vai mais dar o erro, já que agora, é apenas uma string, passada para o método jQuery

por isso, que tem 2 'regrinhas' em webstandards:

-> sempre comece a codificar com o DOCTYPE, antes de tudo, antes da primeira linha, ou pensamento, coloque o DTD

-> logo depois do DTD, declare um CSS Reset básico

 

você não imagina qntas dores de cabeça essas 2 coisinhas poupam. Começar da 'forma correta', é o melhor caminho.

 

mesmo assim, acredito que seja esse uso dos .load(), e dos .html() que estão bugando no ie.

Por isso, faço o append de option por option, com retorno jSON.

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.