Ir para conteúdo

POWERED BY:

Arquivado

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

Myrhay

Ajuda com Combobox Estado/Cidade/Bairro/Ramo

Recommended Posts

Boa tarde Gente, estou com dificuldade com esse combobox, tenho que selecionar o Estado, depois seleciono a cidade, depois o bairro e por ultimo o Segmento

 

Segue o código que uso

 

index.php

<?php

if (file_exists('init.php'))
{
	require_once 'init.php';
}
else
{
	exit('N�o foi poss�vel encontrar o arquivo de inicializa��o');
}
?>
<!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>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript" src="funcoes.js"></script>
<title>Cidades | Estados</title>
</head>
<body onload="buscaEstados()">

<form method="post" action="">

    <select name="uf" id="uf" onchange="buscaCidades(this.value)">
    </select>


    <select name="cidade" id="cidade" >
      <option value="">Selecione a Cidade</option>
    </select>
    
     <select name="bairro" id="bairro" >
      <option value="">Selecione o bairro</option>
    </select>
  
  	<select name="ramo" id="ramo" >
      <option value="">Selecione o ramo</option>
    </select>

</form>

</body>
</html>

 

funcoes.php

<?php

if (file_exists('init.php'))
{
	require_once 'init.php';
}
else
{
	exit('N�o foi poss�vel encontrar o arquivo de inicializa��o');
}


$acao = isset($_GET['acao']) ? $_GET['acao'] : FALSE;

header('Content-Type: application/xml');

$xml = "<?xml version='1.0' encoding='iso-8859-1'?>\r\n";


switch ($acao)
{
	case 'buscaEstados':
	    buscaEstados();
	    break;
	case 'buscaCidades':
	    buscaCidades();
	    break;
    case 'buscaBairro':
	    buscaBairro();
	    break;
}


function buscaEstados()
{
	global $xml;
	
	$xml .= '<estados>';
	
	$MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME);
	
	$sql = $MySQLi->query('Select * From estados Order By nome ASC');
	
	while ($f = $sql->fetch_object())
	{
		$xml .= '  <estado>';
		$xml .= '    <id>' . $f->id . '</id>';
		$xml .= '    <sigla>' . $f->sigla . '</sigla>';
		$xml .= '    <nome>' . $f->nome . '</nome>';
		$xml .= '  </estado>';
	}
	
	$sql->close();
	$MySQLi->close();
	
	$xml .= '</estados>';
	echo $xml;
}



function buscaCidades()
{
	$uf = isset($_GET['uf']) ? (int)$_GET['uf'] : 1;
	
	global $xml;
	
	$xml .= '<cidades>';
	
	$MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME);
	
	$sql = $MySQLi->query('Select id, nome From cidades Where id_uf = ' . $uf . ' Order By nome ASC');
	
	while ($f = $sql->fetch_object())
	{
		$xml .= '  <cidade>';
		$xml .= '    <id>' . $f->id . '</id>';
		$xml .= '    <nome>' . $f->nome . '</nome>';
		$xml .= '  </cidade>';
	}
	
	$sql->close();
	$MySQLi->close();
	
	$xml .= '</cidades>';
	echo $xml;
}



function buscaBairro()
{
	$cidade = isset($_GET['cidade']) ? (int)$_GET['cidade'] : 2;

	global $xml;

	$xml .= '<bairros>';

	$MySQLi = new MySQLi(BD_SERVIDOR, BD_USUARIO, BD_SENHA, BD_NOME);

	$sql = $MySQLi->query('Select * From bairro Where id_cid = ' . $cidade . ' Order By nome ASC');

	while ($f = $sql->fetch_object())
	{
		$xml .= '  <bairro>';
		$xml .= '    <id>' . $f->id . '</id>';
		$xml .= '    <nome>' . $f->nome . '</nome>';
		$xml .= '  </bairro>';
	}

	$sql->close();
	$MySQLi->close();

	$xml .= '</bairros>';
	echo $xml;
}

?>

funcoes.js


function buscaEstados()
{
	var uf = document.getElementById('uf');
	
	var op = document.createElement('option');
    op.setAttribute('value', '');
    op.appendChild(document.createTextNode("Carregando..."));
    uf.appendChild(op);
	
	var ajax = openAjax();
	
	ajax.open('GET', 'funcoes.php?acao=buscaEstados', true);
	
	ajax.onreadystatechange = function()
	{
		if (ajax.readyState == 4)
		{
			if (ajax.status == 200)
			{
				uf.innerHTML = '';
				
				var opcao = document.createElement('option');
				opcao.setAttribute('value', '');
				opcao.appendChild(document.createTextNode('Selecione o Estado'));
				uf.appendChild(opcao);
				
				var xml = ajax.responseXML;
				var estado = xml.getElementsByTagName('estado');
				
				for (var i = 0; i < estado.length; i++)
				{
					var idEstado = estado[i].getElementsByTagName('id')[0].firstChild.nodeValue;
					var siglaEstado = estado[i].getElementsByTagName('sigla')[0].firstChild.nodeValue;
					var nomeEstado = estado[i].getElementsByTagName('nome')[0].firstChild.nodeValue;
					
					var opcao = document.createElement('option');
					opcao.setAttribute('value', idEstado);
					//opcao.appendChild(document.createTextNode(siglaEstado + ' - ' + nomeEstado));
					opcao.appendChild(document.createTextNode(nomeEstado));
					uf.appendChild(opcao);
					
				}
				
			}
		}
	}
    ajax.send(null);
    
}




function buscaCidades(uf)
{

	var cidades = document.getElementById('cidade');
	cidades.innerHTML = '';
	var op = document.createElement('option');
    op.setAttribute('value', '');
    op.appendChild(document.createTextNode("Carregando..."));
    cidades.appendChild(op);
	
	var url = 'funcoes.php?acao=buscaCidades&uf=' + uf;
	var ajax = openAjax();
	
	ajax.open('GET', url, true);
	ajax.onreadystatechange = function()
	{
		if (ajax.readyState == 4)
		{
			if (ajax.status == 200)
			{
				cidades.innerHTML = '';
				

				
				var xml = ajax.responseXML;
				var cidade = xml.getElementsByTagName('cidade');
				
				for (var i = 0; i < cidade.length; i++)
				{
					var idCidade = cidade[i].getElementsByTagName('id')[0].firstChild.nodeValue;
					var nomeCidade = cidade[i].getElementsByTagName('nome')[0].firstChild.nodeValue;
					
					var opcao = document.createElement('option');
					opcao.setAttribute('value', idCidade);
					opcao.appendChild(document.createTextNode(nomeCidade));
					cidades.appendChild(opcao);
				}
			}
		}
	}
	ajax.send(null);
}



function buscaBairro(cidade)
{

	var bairro = document.getElementById('bairro');
	bairro.innerHTML = '';
	var op = document.createElement('option');
    op.setAttribute('value', '');
    op.appendChild(document.createTextNode("Carregando..."));
    bairro.appendChild(op);

	var url = 'funcoes.php?acao=buscaBairro&cidade=' + cidade;
	var ajax = openAjax();

	ajax.open('GET', url, true);
	ajax.onreadystatechange = function()
	{
		if (ajax.readyState === 4)
		{
			if (ajax.status === 200)
			{
				bairro.innerHTML = '';



				var xml = ajax.responseXML;
				var bairro = xml.getElementsByTagName('bairro');

				for (var i = 0; i < bairro.length; i++)
				{
					var idBairro = bairro[i].getElementsByTagName('id')[0].firstChild.nodeValue;
					var nomeBairro = bairro[i].getElementsByTagName('nome')[0].firstChild.nodeValue;

					var opcao = document.createElement('option');
					opcao.setAttribute('value', idBairro);
					opcao.appendChild(document.createTextNode(nomeBairro));
					bairro.appendChild(opcao);
				}
			}
		}
	}
	ajax.send(null);
}

 

Se puderem me ajudar agradeço muito.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual seria a dificuldade que você está tendo?

O Que está funcionando e o que não está até o momento?

Compartilhar este post


Link para o post
Compartilhar em outros sites

No caso 

5 horas atrás, RodriAndreotti disse:

Qual seria a dificuldade que você está tendo?

O Que está funcionando e o que não está até o momento?

No caso conseguir fazer até a cidade, quando utilizo para o bairro e ramo já não funciona, não consigo ver se o erro é no codigo.

Compartilhar este post


Link para o post
Compartilhar em outros sites
7 horas atrás, RodriAndreotti disse:

Mas qual o erro que ocorre quando você executa?
Tentou debugar no firebug?

Opa boa tarde, depois de muito mexer, verifiquei esse erro 

Uncaught TypeError: Cannot set property 'innerHTML' of undefined
    at XMLHttpRequest.ajax.onreadystatechange

O que poderia ser?

Segue o código  e é justamente no bairro.innerHTML = '';

function buscaBairro(cidade)
{

	var bairro = document.getElementById('bairro');
	bairro.innerHTML = '';
	var op = document.createElement('option');
    op.setAttribute('value', '');
    op.appendChild(document.createTextNode("Carregando..."));
    bairro.appendChild(op);

	var url = 'funcoes.php?acao=buscaBairro&cidade=' + cidade;
	var ajax = openAjax();

	ajax.open('GET', url, true);
	ajax.onreadystatechange = function()
	{
		if (ajax.readyState == 4)
		{
			if (ajax.status == 200)
			{
				bairro.innerHTML = '';
				var xml = ajax.responseXML;
				var bairro = xml.getElementsByTagName('bairro');

				for (var i = 0; i < bairro.length; i++)
				{
					var idBairro = bairro[i].getElementsByTagName('id')[0].firstChild.nodeValue;
					var nomeBairro = bairro[i].getElementsByTagName('nome')[0].firstChild.nodeValue;

					var opcao = document.createElement('option');
					opcao.setAttribute('value', idBairro);
					opcao.appendChild(document.createTextNode(nomeBairro));
					bairro.appendChild(opcao);
				}
			}
		}
	}
	ajax.send(null);
}

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então... o próprio erro está te dizendo o problema.

Uncaught TypeError: Cannot set property 'innerHTML' of undefined

 

Ele diz que você está setando a propriedade innerHTML de uma variável que não foi definida ainda.

Observe este trecho:

bairro.innerHTML = '';
var xml = ajax.responseXML;
var bairro = xml.getElementsByTagName('bairro');

Veja que você seta o innerHTML do bairro antes de declarar a variável bairro, então você está tentando acessar uma variável que ainda não existe.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Seu problema não é com PHP. Vou mover para área correta. Ainda na oportunidade, vide os tópicos:

 

ATENÇÃO: Seu problema é realmente com o PHP ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Por favor, me permita tirar uma dúvida com os amigos.

      Tenho um Formulário onde o Usuário digita todos os Dados necessários.

      Minha dúvida:
      --> como faço após o usuário digitar os dados e salvar, o Sistema chamar uma Modal ou mensagem perguntando se deseja imprimir agora ?

      Grato,
       
      Cesar
    • Por Carcleo
      Tenho uma abela de usuarios e uma tabela de administradores e clientes.
      Gostaria de uma ajuda para implementar um cadastro
       
      users -> name, login, passord (pronta) admins -> user_id, registratiom, etc.. client -> user_id, registratiom, etc...
      Queria ajuda para extender de user as classes Admin e Client
      Olhem como estáAdmin
      <?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Admin extends User {     use HasFactory;            protected $fillable = [         'name',         'email',         'password',         'registration'     ];      private string $registration;     public function create(         string $name,          string $email,          string $password,         string $registration     )     {         //parent::create(['name'=>$name, 'email'=>$email, 'password'=>$password]);         parent::$name = $name;         parent::$email = $email;         parent::$password = $password;         $this->registration = $registration;     } } User
      <?php namespace App\Models; // use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; use Illuminate\Database\Eloquent\Relations\BelongsToMany; class User extends Authenticatable {     /** @use HasFactory<\Database\Factories\UserFactory> */     use HasFactory, Notifiable;     static string $name;     static string $email;     static string $password;     /**      * The attributes that are mass assignable.      *      * @var list<string>      */     protected $fillable = [         'name',         'email',         'password',     ];          /**      * The attributes that should be hidden for serialization.      *      * @var list<string>      */     protected $hidden = [         'remember_token',     ];     /**      * Get the attributes that should be cast.      *      * @return array<string, string>      */     protected function casts(): array     {         return [             'email_verified_at' => 'datetime',             'password' => 'hashed',         ];     }          public function roles() : BelongsToMany {         return $this->belongsToMany(Role::class);     }       public function hasHole(Array $roleName): bool     {                 foreach ($this->roles as $role) {             if ($role->name === $roleName) {                 return true;             }         }         return false;     }         public function hasHoles(Array $rolesName): bool     {                 foreach ($this->roles as $role) {             foreach ($rolesName as $rolee) {             if ($role->name === $rolee) {                 return true;             }          }         }         return false;     }         public function hasAbility(string $ability): bool     {         foreach ($this->roles as $role) {             if ($role->abilities->contains('name', $ability)) {                 return true;             }         }         return false;     }     } Como gravar um Admin na tabela admins sendo que ele é um User por extensão?
      Tentei assim mas é claro que está errado...
      public function store(Request $request, Admin $adminModel) {         $dados = $request->validate([             "name" => "required",             "email" => "required|email",             "password" => "required",             "registration" => "required"         ]);         $dados["password"] =  Hash::make($dados["password"]);                  $admin = Admin::where("registration",  $dados["registration"])->first();                  if ($admin)              return                    redirect()->route("admin.new")                             ->withErrors([                                 'fail' => 'Administrador já cadastrados<br>, favor verificar!'                   ]);                            $newAdmin = $adminModel->create(                                    $dados['name'],                                    $dados['email'],                                    $dados['password'],                                    $dados['registration']                                 );         dd($newAdmin);         $adminModel->save();         //$adminModel::create($admin);                  return redirect()->route("admin.new")->with("success",'Cadastrado com sucesso');     }  
    • Por violin101
      Caros amigos, saudações.
       
      Gostaria de tirar uma dúvida com os amigos, referente a PDV.
       
      Estou escrevendo um Sistema com Ponto de Vendas, a minha dúvida é o seguinte, referente ao procedimento mais correto.

      Conforme o caixa vai efetuando a venda, o Sistema de PDV já realiza:
      a baixa direto dos produtos no estoque
      ou
      somente após concretizar a venda o sistema baixa os produtos do estoque ?
       
      Grato,
       
      Cesar
       
    • Por violin101
      Caros amigos do grupo, saudações e um feliz 2025.
       
      Estou com uma pequena dúvida referente a Teclas de Atalho.

      Quando o Caps Lock está ativado o Comando da Tecla de Atalho não funciona.
      ou seja:
      se estiver para letra minúscula ====> funciona
      se estiver para letra maiúscula ====> não funciona
       
      Como consigo evitar essa falha, tanto para Letra Maiúscula quanto Minúscula ?

      o Código está assim:
      document.addEventListener( 'keydown', evt => { if (!evt.ctrlKey || evt.key !== 'r' ) return;// Não é Ctrl+r, portanto interrompemos o script evt.preventDefault(); });  
      Grato,
       
      Cesar
    • Por ILR master
      Fala galera, tudo certo?
       
      Seguinte: No servidor A estou tentando fazer uma consulta com o servidor B, mas está dando erro.
      Estou usando o mesmo código de conexão do servidor B que funciona perfeitamente, mas no servidor A, dá erro.
      Segue código:
       
      $host = 'servidor B';
      $user = 'user';
      $pass = '********';
      $db   = 'banco';
       
      // conexão e seleção do banco de dados
      $conexao = mysqlI_connect($host, $user, $pass, $db);
      mysqlI_set_charset($conexao,"utf8");
      //print "Conexão rodando e OK!"; 
      //mysqlI_close($conexao);
       
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.