Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá Galera!
Tô precisando de uma grande ajuda, porque faz tempo que tento fazer essa listagem, já li um pouco sobre JOIN, JOIN AS do MySQL, mas não entendi quase nada. Por isso tô precisando de vocês!
Vamos lá...
Pretendo fazer uma listagem de Empresas do Setor Automotivo, só que para seleciona-las é necessário escolher os seguintes campos do formulário:
Categoria da Empresa: (Posto de Gasolina, Equipadora, Oficina Mecânica, Oficina Elétrica, e assim vai ...)
Estado aonde está a Empresa: (Todos os Estados do nosso belo País)
Cidade: (Isso dependerá do Estado, está em Ajax) - OBS.: Essa opção não é obrigatória.
Continuando...
A listagem em si, gostaria de Dividir por Estado > Cidade > Bairro.
Dai vocês me perguntam como estão as tabelas do MySQL
No caso são as seguintes tabelas:
Pagamento -> pagamento_empresa = essa irá informa se a Empresa está em dias com o sistema e se ela pode ser visualizada.
Empresa -> empresa = essa contém o código da empresa (codigo_empresa).
Loja -> empresa_loja = essa contém as informações do código da empresa (codigo_empresa) do CNPJ (cnpj) e da localização da loja (já que uma empresa pode ter mais de uma loja) tem o Estado (codigo_estado), a Cidade (codigo_cidade) e o Bairro (codigo_bairro).
Categoria das Lojas -> empresa_loja_categoria = essa diz a categoria da loja, podendo ter mais de uma categoria por loja (cnpj e codigo_categoria).
Essas são as tabelas principais. Existe as adjacentes:
Estados -> estado = contém todos os estados e ufs, informando o código. IDEN Cidade e Bairro.
Categoria -> empresa_categoria = contém todas as Categorias, informando o código.
Galera tô precisando dessa ajuda para fazer essa listagem.
Agradeço desde já a todos que me ajudarem!
>
Você já tem algum cód. pronto? a chave estrangeira está na tabela empresas? fk_id_pagamento por ex. ? ?
O código que fiz foi muito complicado até para eu entender depois! (Vê se pode!)
Tinha feito a seleção das Lojas de acordo com a categoria selecionada (empresa_loja_categoria). Depois eu selecionava cada loja por estado, cidade e tentava listar os bairros. Daí eu só mostrava as empresas que estava em dias com o pagamento.
Só que além do código ser muito grande, era muito confuso. Então eu comecei a ler sobre SELECT JOIN, só que não entendi nada, mas sei que é por aí (espero!).
Tipo faz assim, coloca o cód. e depois uma print de como está ficando, acho que vou embora agora, estava esperando passar a chuva.
Amanhã quando eu chegar eu dou uma olhada com calma :thumbsup:
$categorias = "SELECT * FROM empresa_loja_categoria WHERE codigo_categoria='".$_GET['categoria']."'";
$query_categorias = mysql_query($categorias);
if($query_categorias){
$rows_categorias = mysql_num_rows($query_categorais);
for($cat=0; $cat<$rows_categorias; $cat++){
$loja_cnpj = mysql_result($query_categorias,$cat,cnpj);
if($loja_cnpj){
$lojas = "SELECT * FROM empresa_loja WHERE cnpj='$loja_cnpj' AND codigo_estado='".$_GET['codigo_estado']."' ORDER BY codigo_estado,codigo_cidade,codigo_bairro"; // Aqui seria para listar pela ordem Estado, Cidade e Bairro, só que não pelo código e sim pena palavra em si (de forma alfabética)
$query_lojas = mysql_query($lojas);
if($query_lojas){
$loja_nome = mysql_result($query_lojas,0,nome);
$loja_endereco = mysql_result($query_lojas,0,endereco);
$loja_codigo_estado = mysql_result($query_lojas,0,codigo_estado);
if($loja_codigo_estado){
$estados = "SELECT * FROM estado WHERE codigo='$loja_codigo_estado'";
$query_estados = mysql_query($estados);
if($query_estados){
$loja_estado = mysql_result($query_estados,0,estado);
$loja_uf = mysql_result($query_estados,0,uf);
}
}
$loja_codigo_cidade = mysql_result($query_lojas,0,codigo_cidade);
if($loja_codigo_cidade){
$cidades = "SELECT * FROM cidade WHERE codigo='$loja_codigo_cidade'";
$query_cidades = mysql_query($cidades);
if($query_cidades){
$loja_cidade = mysql_result($query_cidades,0,cidade);
}
}
$loja_codigo_bairro = mysql_result($query_lojas,0,codigo_bairro);
if($loja_codigo_bairro){
$bairros = "SELECT * FROM bairro WHERE codigo='$loja_codigo_bairro'";
$query_bairros = mysql_query($bairros);
if($query_bairros){
$loja_bairro = mysql_result($query_bairros,0,bairro);
}
}
}
}
$dataAtual = date("Y-m-d");
$pagamento = "SELECT * FROM pagamento_empresa WHERE cnpj='$loja_cnpj' AND data_ativo >= '$dataAtual' >= data_validade";
$query_pagamento = mysql_query($pagamento);
if($query_pagamento){
$rows_pagamento = mysql_num_rows($query_pagamento);
if($rows_pagamento >= 1){
?>
Empresa <?=$loja_nome;?>
<br />
<? echo $loja_endereco.", ".$loja_bairro." - ".$loja_cidade." / ".$loja_estado; ?>
<?
}
}
}
}
Gostaria que a listagem ficasse +/- assim:
Isso no carro de não selecionar a Cidade, caso seja selecionada só deverá aparecer os bairros daquela cidade.
[*]Bairro 2
[*]Cidade 2
[*]Bairro 2
[*]Bairro 3
[*]Cidade 3
[*]Cidade 4
[*]Bairro 2
[*]Bairro 3
[*]Bairro 4
[*]Cidade 5
[*]Bairro 2
[*]Bairro 3
[*]Bairro 4
[*]Bairro 5
Gostaria que a listagem ficasse +/- assim:
Isso no carro de não selecionar a Cidade, caso seja selecionada só deverá aparecer os bairros daquela cidade.
[*]Bairro 2
[*]Cidade 2
[*]Bairro 2
[*]Bairro 3
[*]Cidade 3
[*]Cidade 4
[*]Bairro 2
[*]Bairro 3
[*]Bairro 4
[*]Cidade 5
[*]Bairro 2
[*]Bairro 3
[*]Bairro 4
[*]Bairro 5
Pronto... Vê só, achei o que eu tava procurando!
Olha ai o Código como tá!!!
<html>
<head>
<title>
NITROSO.COM.BR - Mundo Automotivo
</title>
<link href="figuras/favicon.png" rel="icon" type="image/png" />
<link href="estrutura/estrutura.css" rel="stylesheet" type="text/css" />
<link href="estrutura/texto.css" rel="stylesheet" type="text/css" />
<script src="include/input.js" type="text/javascript"></script>
<script src="include/ajax-cidade.js" type="text/javascript"></script>
</head>
<body>
<div id="tudo">
<div id="barra">
<img src="figuras/logo.png" border="0" class="logo" />
</div>
<div id="divisao">
</div>
<div id="parceiros">
</div>
<div id="conteudo">
<div id="esquerda">
<div class="menu">
<? include("menu.php"); ?>
</div>
</div>
<div id="direita">
<?
if($_GET['m']){
$m = $_GET['m'];
if($m){
$msg = base64_decode($m);
$msg = str_replace("-br-", "<br />", $msg);
}
?>
<div class="alerta">
<table class="alerta">
<tr>
<td class="img">
<span class="alerta">
Atenção!
</span>
<br />
<br />
<img src="figuras/alerta.png" border="0" />
</td>
<td class="erro">
<span class="texto_alerta">
<br />
<b>Veja a mensagem abaixo:</b>
<br />
<br />
<?=$msg;?>
</span>
</td>
</tr>
</table>
</div>
<?
}
?>
<br />
<br />
<div class="corpo">
<div class="titulo">
<span class="titulo">
Empresas
</span>
</div>
<form action="#" method="post">
<table class="formulario">
<tr>
<td class="esquerda">
<span class="texto">
<b>Categoria da Empresa</b>
</span>
</td>
<td class="direita">
<select name="codigo_categoria" id="codigo_categoria" class="select">
<option value="" selected="selected">Selecione a Categoria</option>
<?
$s_lojas = "SELECT DISTINCT codigo_categoria FROM empresa_loja_categoria";
$query_s_lojas = mysql_query($s_lojas);
if($query_s_lojas){
$rows_s_lojas = mysql_num_rows($query_s_lojas);
if($rows_s_lojas >= 1){
for($sl>=0;$sl<$rows_s_lojas;$sl++){
$s_empresa_codigo_categoria = mysql_result($query_s_lojas,$sl,codigo_categoria);
if($s_empresa_codigo_categoria){
$s_categorias = "SELECT * FROM empresa_categoria WHERE codigo='$s_empresa_codigo_categoria'";
$query_s_categorias = mysql_query($s_categorias);
if($query_s_categorias){
$s_categoria = mysql_result($query_s_categorias,0,categoria);
?>
<option value="<?=$s_empresa_codigo_categoria;?>"><?=$s_categoria;?></option>
<?
}
}
}
}
}
?>
</select>
</td>
</tr>
<tr>
<td class="esquerda">
<span class="texto">
<b>Estado</b>
</span>
</td>
<td class="direita">
<select name="codigo_estado" id="codigo_estado" class="select" onChange="DadosEstado(this.value);">
<option value="" selected="selected">Selecione o Estado</option>
<?
$s_cidades = "SELECT DISTINCT codigo_estado FROM cidade";
$query_s_cidades = mysql_query($s_cidades);
if($query_s_cidades){
$rows_s_cidades = mysql_num_rows($query_s_cidades);
if($rows_s_cidades >= 1){
for($sc>=0;$sc<$rows_s_cidades;$sc++){
$s_estado_codigo = mysql_result($query_s_cidades,$sc,codigo_estado);
if($s_estado_codigo){
$s_estados = "SELECT * FROM estado WHERE codigo='$s_estado_codigo'";
$query_s_estados = mysql_query($s_estados);
if($query_s_estados){
$s_estado = mysql_result($query_s_estados,0,estado);
?>
<option value="<?=$s_estado_codigo;?>"><?=$s_estado;?></option>
<?
}
}
}
}
}
?>
</select>
</td>
</tr>
<tr>
<td class="esquerda">
<span class="texto">
<b>Cidade</b>
</span>
</td>
<td class="direita">
<select name="codigo_cidade" id="codigo_cidade" class="select">
<option id="cidades" value="" selected="selected">Selecione</option>
</select>
</td>
</tr>
<tr>
<td class="centro" colspan="2">
</td>
</tr>
<tr>
<td class="centro" colspan="2">
<input class="botao" type="submit" value="Perquisar" />
</td>
</tr>
</table>
</form>
</div>
<?
if(isset($_POST['codigo_categoria']) && isset($_POST['codigo_estado'])){
$categoria_codigo = $_POST['codigo_categoria'];
$estado_codigo = $_POST['codigo_estado'];
if($_POST['codigo_cidade']){
$cidade_codigo = $_POST['codigo_cidade'];
$cidades = "SELECT * FROM cidade WHERE codigo_estado='$estado_codigo' AND codigo='$cidade_codigo' ORDER BY cidade ASC";
}else{
$cidades = "SELECT * FROM cidade WHERE codigo_estado='$estado_codigo' ORDER BY cidade ASC";
}
$query_cidades = mysql_query($cidades);
if($query_cidades){
$rows_cidades = mysql_num_rows($query_cidades);
if($rows_cidades >= 1){
?>
<br />
<br />
<div class="corpo">
<div class="titulo">
<span class="titulo">
Pesquisa
</span>
</div>
<?
for($cid=0; $cid<$rows_cidades; $cid++){
$cidade = mysql_result($query_cidades,$cid,cidade);
$cidade_codigo = mysql_result($query_cidades,$cid,codigo);
if($cidade_codigo){
$bairros = "SELECT * FROM bairro WHERE codigo_cidade='$cidade_codigo' ORDER BY bairro ASC";
$query_bairros = mysql_query($bairros);
if($query_bairros){
$rows_bairros = mysql_num_rows($query_bairros);
if($rows_bairros >= 1){
for($bai=0; $bai<$rows_bairros; $bai++){
$bairro = mysql_result($query_bairros,$bai,bairro);
$bairro_codigo = mysql_result($query_bairros,$bai,codigo);
if($bairro_codigo){
$lojas = "SELECT * FROM empresa_loja WHERE codigo_estado='$estado_codigo' AND codigo_cidade='$cidade_codigo' AND codigo_bairro='$bairro_codigo'";
$query_lojas = mysql_query($lojas);
if($query_lojas){
$rows_lojas = mysql_num_rows($query_lojas);
if($rows_lojas >= 1){
?>
<div class="chamada">
<span class="texto">
<b><?=$cidade;?> » <?=$bairro;?></b>
</span>
</div>
<table class="listagem">
<?
for($lj=0; $lj<$rows_lojas; $lj++){
$loja_cnpj = mysql_result($query_lojas,$lj,cnpj);
$empresa_codigo = mysql_result($query_lojas,$lj,codigo_empresa);
if($empresa_codigo){
$empresas = "SELECT * FROM empresa WHERE codigo='$empresa_codigo'";
$query_empresas = mysql_query($empresas);
if($query_empresas){
$empresa_nome = mysql_result($query_empresas,0,nome);
}
}
$loja_nome = mysql_result($query_lojas,$lj,nome);
$loja_ddd = mysql_result($query_lojas,$lj,ddd);
$loja_telefone = mysql_result($query_lojas,$lj,telefone);
$loja_endereco = mysql_result($query_lojas,$lj,endereco);
$loja_numero = mysql_result($query_lojas,$lj,numero);
$loja_complemento = mysql_result($query_lojas,$lj,complemento);
$loja_cep = mysql_result($query_lojas,$lj,cep);
if($empresa_codigo && $loja_cnpj){
$categorias = "SELECT * FROM empresa_loja_categoria WHERE codigo_empresa='$empresa_codigo' AND cnpj='$loja_cnpj' AND codigo_categoria='$categoria_codigo'";
$query_categorias = mysql_query($categorias);
if($query_categorias){
$rows_categorias = mysql_num_rows($query_categorias);
if($rows_categorias == 1){
?>
<tr>
<td class="texto">
<span class="subtitulo">
<?=$empresa_nome;?>
</span>
<br />
<span class="texto">
<b><?=$loja_nome;?></b>
<br />
(<?=$loja_ddd;?>) <?=$loja_telefone;?>
<br />
<?=$loja_endereco;?>, <?=$loja_numero;?> - <?=$loja_complemento;?>, <?=$loja_cep;?>
</span>
</td>
<td class="texto_fixo">
<span class="texto">
Descontos
</span>
</td>
<td class="texto_fixo">
<span class="texto">
Avaliação
</span>
</td>
</tr>
<?
}
}
}
}
}
?>
</table>
<?
}
}
}
}
}
}
}
?>
</div>
<?
}
}
}
?>
</div>
</div>
</div>
</body>
</html>
Alguem pode me ajudar?
Você já tem algum cód. pronto? a chave estrangeira está na tabela empresas? fk_id_pagamento por ex. ? ?