Jump to content


Photo

Menu Suspenso Em Php Mysql


  • Faça o login para participar
6 replies to this topic

#1 fabiobob

fabiobob

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Masculino

Posted 11/02/2008, 11:11

OLá pessoal!!!
É o seguinte, estou prescisando de um menu suspenso que aparece os estados, ai assim que vc selecionar o estdo Ex. São Paulo, aparece todas as cidades num combox, e que tudo fique num banco de dados mysql.
Se Alguem puder me ajudar Grato desde Já. Há se alguem souber algum script pronto também pode ser estou prescisando com um pouco de urgencia!!!!!!!!
Vlw pela atenção um abraço a todos.
Fabio.

#2 Boxer

Boxer

    Ativo

  • Usuários
  • 304 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 11/02/2008, 11:23

Você vai conseguir isso usando Ajax...
Usa a busca do fórum na sessão de Javascript...

Ajax - Estado->Cidades

[]´s (y)
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"

#3 Adrielso P. Teodoro

Adrielso P. Teodoro

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Campinas/SP
  • Interesses:PHP, Hardware, HTML, CSS e XML

Posted 11/02/2008, 12:42

Ola! Tudo bom???


Fiz esse script deve te ajudar muito... ele é em PHP + JAVASCRIPT.


SUMÁRIO:
Onde você achar esses campos você deve alterar de acordo com a suas configurações do seu site.

nomedapagina.php = Nome da página onde você utiliza essas informações.
localhost = Se for local servidor MySQL deixe como está se externo altere.
seuusuario = Nome do usuário para conexão com Banco de Dados.
suasenha = Senha do usuário do Banco de Dados.
celula = Celula da tabela onde se encontra a informação de Estado ou Cidade.
tabela = Tabela onde se encontra as informações de Estados e Cidades.

De preferência utilize na tabela o nome de celulas cidade e estado pois o resultado a ser buscado está com esse nome se for diferente você deve alterar, na busca do resultado.

-----------------------------------------------------------------------------------------------------------------------------------------------

<!-- Função em JavaScript -->
&lt;script Language="JavaScript">
function getStates(what) {
if (what.selectedIndex != '') {
var estado = what.value;
document.location=('nomedapagina.php?estado=' + estado);
}
}
function getCidade(what) {
if (what.selectedIndex != '') {
var cidade = what.value;
document.location=('nomedapagina.php?estado=<? echo "$estado"; ?>&cidade=' + cidade);
}
}
</Script>
<!-- Fim da Função em Java script -->
<?php
//Conexão com Banco de Dados.
$conexao=mysql_connect("localhost","seuusuario","suasenha"); //Se conectando ao servidor
mysql_select_db("bancodehoras", $conexao); //Conexão com Banco de dados.
$query = mysql_query("select DISTINCT celula from tabela order by estado ASC"); //Selecionando os dados do banco de dados
?>

<b>UF:</b> <select name="estado" onChange="getStates(this);"> <!-- Campo Select -->
<?php
while ($obj = mysql_fetch_object($query)){ //Joga o resultado em um objeto e o repete enquanto houver resultados a serem exibidos.
?>
<option value="<?echo $obj->estado;?>" <? if ($estado==$obj->estado){ echo "SELECTED";} ?> > <? echo $obj->estado; ?> </option> <!-- Valores que seram mostrados no select -->
<?
}
?>
</select>
<?php
$query = mysql_query("select DISTINCT celula from tabela WHERE estado='$estado' order by cidade ASC"); //Nova seleção de dados do banco de dados.
if ($estado){ ?>
<b>Cidade:</b> <select name="cidade" onChange="getCidade(this);"> <!-- Campo Select -->
<option>Selecione a Cidade</option>
<?php
while ($obj = mysql_fetch_object($query)){//Joga o resultado em um objeto e o repete enquanto houver resultados a serem exibidos.
?>
<option value="<?echo $obj->cidade;?>" <? if ($cidade==$obj->cidade){ echo "SELECTED";} ?>> <? echo "$obj->cidade"; ?> </option> <!-- Valores que seram mostrados no select -->";
<?
}
?>
</select>
<?php
}
?>
</select>
</body>
</html>
-------------------------------------------------------------------------------------------------------------------------------------------

Fiz os teste básicos nele para você testar na sua aplicação se tiver problemas poste no fórum estarei acompanhando ok?? T+++ :rolleyes:
Adrielso Pinto Teodoro
Suporte Técnico

-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0

#4 fabiobob

fabiobob

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Masculino

Posted 11/02/2008, 13:51

Vlw Boxer e Adrielso, blz...
Carras assim consuegui isso aqui funciona certinho o unico problema é o seguinte, ele busca no banco de dados corretamente, só que quando efetua-se a pesquisa, ao invés de buscar o nome que aparece na cidade ele busca o numero do código ex.: São Paulo é cód 1 ai aparece a cidade de São Paulo mas na busca de outro banco de dados ele dá como 1, e não São Paulo esse é o problema.
esse é o banco de dados:

CREATE TABLE grupo (
cod int(3) NOT NULL auto_increment,
descr varchar(20) default '0',
PRIMARY KEY (cod)
) TYPE=MyISAM;


INSERT INTO grupo VALUES("1", "São Paulo");
INSERT INTO grupo VALUES("2", "Rio Grande do Sul");
INSERT INTO grupo VALUES("3", "santa Catarina");


CREATE TABLE palavra (
cod int(3) NOT NULL default '0',
descr varchar(30) default '0'
) TYPE=MyISAM;


INSERT INTO subgrupo VALUES("1", "São Paulo");
INSERT INTO subgrupo VALUES("2", "Porto Alegre");
INSERT INTO subgrupo VALUES("2", "Caxias do Sul");
INSERT INTO subgrupo VALUES("3", "Florianópolis");
INSERT INTO subgrupo VALUES("3", "Itapema");



Essa é a parte em php, funciona perfeitamente só a busca que tá encomodando:

<html>
<head>
<title</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF" text="#000000">

<?
#Conexão ao banco de dados
$conecta=mysql_connect("localhost", "xxxx", "xxxxx");
$seleciona_db=mysql_select_db("xxxxx", $conecta);
?>
<script LANGUAGE="JavaScript">
team = new Array(
<?
# Seleciona todos os grupos cadastrados
$sql="select * from grupo order by cod";
$sql_result=mysql_query($sql, $conecta);
$num=mysql_numrows($sql_result);
while ($row=mysql_fetch_array($sql_result)){
$conta=$conta+1;
$cod_categoria=$row["cod"];
echo "new Array(\n";
$sub_sql="select * from palavra where cod='$cod_categoria'";
$sub_result=mysql_query($sub_sql, $conecta);
$num_sub=mysql_numrows($sub_result);
if ($num_sub>=1){
# Se ele achar alguma palavra para o grupo ele marca a palavra Todas
echo "new Array(\"Todas\", 0),\n";
while ($rowx=mysql_fetch_array($sub_result)){
$codigo_sub=$rowx["cod"];
$sub_nome=$rowx["descr"];
$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 palavra 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[i] = 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[i][0]);
if (itemArray[i][1] != null) {
selectCtrl.options[j].value = itemArray[i][1];
}
j++;
}
// select first item (prompt) for sub list
selectCtrl.options[0].selected = true;
}
}
// End -->
</script>
<center>
<form name="palavra" method="post" action="../buscacidades.php">
<p><b><font face="Verdana, Arial, Helvetica, sans-serif" size="1">
<select name="grupo" onChange="fillSelectFromArray(this.form.palavra, ((this.selectedIndex == -1) ? null : team[this.selectedIndex-1]));">
<option>Escolha uma Categoria</option>
<?
#Seleciona todos os grupos para setar os valores no combo
$sql="select * from grupo order by cod";
$sql_result=mysql_query($sql, $conecta);
while ($row=mysql_fetch_array($sql_result)){
$cod_categoria=$row["cod"];
$desc_categoria=$row["descr"];
?>
<option value="<?echo $cod_categoria;?>">
<?echo $desc_categoria;?> </option>
<?
}
#Popula o segundo combo de acordo com a escolha no primeiro
?>
</select>
<select name="palavra" id="palavra">
<option>---------------</option>
</select>
</font></b>
<label for="Submit"></label>
<input type="submit" name="Submit" value="buscar" id="Submit">
</p>
</form></center>
</body>
</html>


O que deveriia ser mudado?
Grato pela atenção.
Fabio.

#5 Boxer

Boxer

    Ativo

  • Usuários
  • 304 posts
  • Sexo:Masculino
  • Localidade:São Paulo

Posted 11/02/2008, 14:25

Inverte o array:

if ($conta_sub==$num_sub){
echo "new Array(\"$codigo_sub\", $sub_nome)\n";
$conta_sub="";
}else{
echo "new Array(\"$codigo_sub\", $sub_nome)\n";
}


Uma dica, pra quando for postar partes do seu código aqui no fórum:

Coloque seu código entre as TAGS [ code ] e [ /code ]

[]´s (y)
"O único lugar, no mundo, onde o sucesso vem antes do trabalho, é no dicionário"

#6 fabiobob

fabiobob

    Novato no fórum

  • Usuários
  • 12 posts
  • Sexo:Masculino

Posted 11/02/2008, 14:45

Boxer,
Mudei lá carra mas a partir dai não abre o combo da cidade mais???
O que eu posso mudar?
Hà vlw pela dica quando colocar código não vou esquecer. :rolleyes:
Vlw.

#7 Adrielso P. Teodoro

Adrielso P. Teodoro

    Novato no fórum

  • Usuários
  • 24 posts
  • Sexo:Masculino
  • Localidade:Campinas/SP
  • Interesses:PHP, Hardware, HTML, CSS e XML

Posted 12/02/2008, 12:34

Opa tudo bem??? Testei o codigo que você mandou no fórum ele funciona perfeitamente... O que você está querendo fazer??? Está querendo usar esse código com outro banco de dados??? Ex de vez fazer a pesquisa por Cód, Fazer a pesquisa pelo nome da cidade???


Mande mais informações!!

Vlw!!! Flw!! :rolleyes:
Adrielso Pinto Teodoro
Suporte Técnico

-- Sistema Operacional: Windows XP - Service Pack 3
-- Navegador: Mozilla Firefox 3.0




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq