Ir para conteúdo

POWERED BY:

Arquivado

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

orbitaltec

dois combos, estado e cidade

Recommended Posts

entao galera, esse é um codigo que muitos procuram aqui na net, e é dificil de achar, dois combos, escolhendo o estado, carrega as cidades equivalentes.

 

Pois bem, esse codigo eu adaptei para estado e cidade, mas acontece que minha tabela de cidades tem mais de 9.000, o que percebo é que mesmo nao escolhendo o estado, ele chama todas as cidades inibindo as outras qdo um estado é selecionado, ou seja, demora para carregar o form, pois tem que carregar todas cidades, será que alguem consegue otimizar o codigo, para fazer nao carregar as cidades no abertura do form, e sim apenas qdo selecionar o estado?

 

 

<script LANGUAGE="JavaScript">

team = new Array(

<?

# Seleciona todos os grupos cadastrados

$sql="select * from tbestado order by nmEstado";

//$sql_result=mysql_query($sql, $conecta);

$sql_result=mysql_query($sql);

$num=mysql_numrows($sql_result);

while ($row=mysql_fetch_array($sql_result)){

$conta=$conta+1;

$cdEstado=$row["cdEstado"];

echo "new Array(\n";

$sub_sql="select * from tbcidade where cdEstado='$cdEstado' order by nmCidade";

// $sub_result=mysql_query($sub_sql, $conecta);

$sub_result=mysql_query($sub_sql);

$num_sub=mysql_numrows($sub_result);

if ($num_sub>=1){

# Se ele achar algum subgrupo para o grupo ele marca a palavra Todas

echo "new Array(\"Escolha a cidade\", 0),\n";

while ($rowx=mysql_fetch_array($sub_result)){

$codigo_sub=$rowx["cdCidade"];

$sub_nome=$rowx["nmCidade"];

$conta_sub=$conta_sub+1;

if ($conta_sub==$num_sub){

echo "new Array(\"$sub_nome\", $codigo_sub)\n";

$conta_sub="";

}else{

echo "new Array(\"$sub_nome\", $codigo_sub),\n";

}

}

}else{

#Se ele nao achar subgrupo para o grupo selecionado...

echo "new Array(\"Qualquer\", 0)\n";

}

if ($num>$conta){

echo "),\n";

}

}

echo ")\n";

echo ");\n";

?>

//Inicio da função JS

function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem) {

var i, j;

var prompt;

// empty existing items

for (i = selectCtrl.options.length; i >= 0; i--) {

selectCtrl.options = null;

}

prompt = (itemArray != null) ? goodPrompt : badPrompt;

if (prompt == null) {

j = 0;

}

else {

selectCtrl.options[0] = new Option(prompt);

j = 1;

}

if (itemArray != null) {

// add new items

for (i = 0; i < itemArray.length; i++) {

selectCtrl.options[j] = new Option(itemArray[0]);

if (itemArray[1] != null) {

selectCtrl.options[j].value = itemArray[1];

}

j++;

}

// select first item (prompt) for sub list

selectCtrl.options[0].selected = true;

}

}

// End -->

</script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara eu tenho esse ve se serve

 

<script language="Javascript" >

team = new Array(

<?

$sql = $dat -> midia_query("select * from categoria order by categoria") or die( $dat -> midia_error());

$num = $dat -> midia_num_rows($sql);

 

//Posiciona os resultado em um array

while ($dados = $dat -> midia_fetch_array($sql)):

 

// Repetir resultados

$conta = $conta+1;

print "new Array(\n";

 

//Definir quais campos de tabela

$sub_result = $dat -> midia_query("select * from subcategoria where IDcategoria ='$dados[0]'");

$num_sub = $dat -> midia_num_rows($sub_result);

 

if ($num_sub >= 1):

// Se ele achar algum subgrupo para o grupo ele marca a palavra Todas

echo "new Array(\"Selecione uma subcategoria\", 0),\n";

while ($subDados= $dat -> midia_fetch_array($sub_result)):

$conta_sub=$conta_sub+1;

 

if ($conta_sub==$num_sub):

print "new Array(\"$subDados[subcategoria]\", \"$subDados[iDsubcategoria]\")\n";

$conta_sub="";

else:

print "new Array(\"$subDados[subcategoria]\", \"$subDados[iDsubcategoria]\"),\n";

endif;

endwhile;

 

 

else:

#Se ele nao achar categoria para a linha selecionada...

echo "new Array(\"Não há subcategorias\", '')\n";

endif;

 

if ($num>$conta)

{

print "),\n";

}

 

endwhile;

 

print ")\n";

print ");\n";

?>

 

//Inicio da função JS

function fillSelectFromArray(selectCtrl, itemArray, goodPrompt, badPrompt, defaultItem)

{

var i, j;

var prompt;

 

// empty existing items

for (i = selectCtrl.options.length; i >= 0; i--)

{

selectCtrl.options = null;

}

prompt = (itemArray != null) ? goodPrompt : badPrompt;

if (prompt == null)

{

j = 0;

}

else

{

selectCtrl.options[0] = new Option(prompt);

j = 1;

}

if (itemArray != null)

{

// add new items

for (i = 0; i < itemArray.length; i++)

{

selectCtrl.options[j] = new Option(itemArray[0]);

if (itemArray[1] != null)

{

selectCtrl.options[j].value = itemArray[1];

}

j++;

}

 

// select first item (prompt) for sub list

selectCtrl.options[0].selected = true;

}

}

 

</script>

 

 

<select name="categoria" onChange="fillSelectFromArray(this.form.subcategoria, ((this.selectedIndex == -1) ? null : team[this.selectedIndex-1]));">

<option selected value="">Selecione uma categoria</option>

<?

$a = $dat -> midia_query("select * from categoria order by categoria") or die ( $dat -> midia_error());

while ($b = $dat -> midia_fetch_array($a)):

?>

<option value="<?=$b[0]?>"> <?=$b[categoria]?> </option>

<? endwhile ?>

</select>

 

 

select name="subcategoria" >

<option selected value="">Selecione uma subcategoria</option>

</selec>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu testei os 2 scripts acima, e não consegui que os mesmos funcionassem.Alguém poderia me dar uma ajuda, precis muito disso também, escolher um estado, e listar as cidades referente ao estado.valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, estou arrumei, um pouco meia boca, da seguinte maneira:Quando o cara clica na cidade, a página é redireciona, para o próprio script, com o string do estado, logo eu criei um tipo de condicional para pegar as cidades que tem vinculo com este estado.Tá meia boca mas funciona.Um selectedIndex no javascript em cima do estado e depois soh com o php para pegar os dados da cidade correspondente ao estado.t+ps: p/ fazer funcionar o script he soh fazer as consultas na mão... sem a classe que o cara criou!!t+léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom, estou arrumei, um pouco meia boca, da seguinte maneira:

 

Quando o cara clica na cidade, a página é redireciona, para o próprio script, com o string do estado, logo eu criei um tipo de condicional para pegar as cidades que tem vinculo com este estado.

Tá meia boca mas funciona.

 

Um selectedIndex no javascript em cima do estado e depois soh com o php para pegar os dados da cidade correspondente ao estado.

 

t+

ps: p/ fazer funcionar o script he soh fazer as consultas na mão... sem a classe que o cara criou!!

t+

léo

<{POST_SNAPBACK}>

Poderia postar seu script para que eu possa dar uma estudada no mesmo?

 

valeu

Compartilhar este post


Link para o post
Compartilhar em outros sites

<form method="get" action="f_cadastro.php" name="menu"><input type="hidden" name="acao" value="cadastra_usuario"><font color="black" size="2" face="Verdana, Helvetica, Arial">Estado <br><select name="estado" onChange="if(document.menu.estado[document.menu.estado.selectedIndex].value)location.href=document.menu.estado[document.menu.estado.selectedIndex].value;"><option>Selecione seu estado</option><?php$ver = $_REQUEST['estado'];$sel_estado = mysql_query("select * from v1_lista_estado ORDER BY estado ASC");while($campo=mysql_fetch_array($sel_estado)){$cod_estado = $campo['cod_estado'];$estado = $campo['estado'];echo "<option value=\"cadastro.php?estado=$cod_estado\""; ?> <?php if($ver==$cod_estado){ echo "selected"; } ?> <?php echo ">";echo "$estado";echo "</option> \n";}?></select><br><br>Cidade <br><select name="cidade"><?php$estado = $_REQUEST['estado'];$sel_cidade = mysql_query("select * from v1_lista_cidades WHERE cod_estado='$estado'");while($campo=mysql_fetch_array($sel_cidade)){$cod_cidade = $campo['cod_cidade'];$cidade = $campo['cidade'];echo "<option value=$cod_cidade>";echo "$cidade";echo "</option> \n";}?></select><br><br>

he isso ae!!

abraços,

lé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.