Busca Avançada em duas tabelas

Dúvidas sobre MySQL, PHPMyAdmin, SQL e assuntos relacionado a banco de dados.

Moderador: web

responder a dúvida

Busca Avançada em duas tabelas

Mensagem por erivelton42 Offline » Dom Jan 15, 2012 12:22 pm


Olá, na tabela g_fornecedores guardo os dados do usuario
e na tabela g_atividades_cadastros guardo as atividades selecionadas pelo usuário na hora do cadastro

Na tabela g_fornecedores, fica guardado dados como CPF e CNPJ, senha, Email, usuário, telefone etc.
e em uma etapa do cadastro o usuário irá selecionar as atividades na qual ela atua, são mais se uma atividade sempre, então em um foreach ele repete os inserts de acordo com o tanto de atividades selecionadas, até ai tudo bem, ele insere as atividades na tabela g_atividades_fornecedores, nos campos cpf_cnpj ( que por meio deste irá identificar as atividades de cada fornecedor por CPF_CNPJ(coluna), e na coluna atividades_fornecedores, ficará armazenado as atividades. até ai está perfeito.
agora o problema vem, estou precisando de uma busca de fornecedor por atividade.

Em um select, será exibido as atividades da tabela g_atividades, que são as atividades para escolher no cadastro. ai ele deverá mostrar apenas os fornecedores que tem aquela atividade escolhida, exemplo, escolho um fornecedor que fornece ARTIGOS DE ÓTICA ai no resultado irá mostrar todos os fornecedores que fornecem artigos de otica.
tentei fazer de um jeito mais nao deu certo claro, ta sem logica até.

Código: Selecionar todos
if (isset($_POST["busca_por_atividade"])){
$atividade = $_POST["atividade"];


$select = "SELECT cnpj_cpf, atividades_fornecedores FROM g_atividades_fornecedores WHERE `atividades_fornecedores` LIKE '$atividade'";
$result = mysql_query($select);
while($linhas_destaque = mysql_fetch_array($result)){   
$cpf_cnpj = $linhas_destaque['cnpj_cpf'];
$atividades_fornecedores = $linhas_destaque['atividades_fornecedores'];
}

// Informações da query
$campos_query = "tipo_pessoa, razao_social, cidade, telefone, codigo_fornecedor, cpf_cnpj";
$final_query  = "FROM g_fornecedores WHERE `cpf_cnpj` LIKE '$cpf_cnpj' ORDER BY tipo_pessoa, razao_social, cidade ASC";


}else{
$campos_query = "tipo_pessoa, razao_social, cidade, telefone, codigo_fornecedor, cpf_cnpj";
$final_query  = "FROM g_fornecedores ORDER BY tipo_pessoa, razao_social, cidade ASC";   
}

// Maximo de registros por pagina
$maximo = 22;
// Declaração da pagina inicial
$pagina =@$_GET["pagina"];
if($pagina == "") {
    $pagina = "1";
}
// Calculando o registro inicial
$inicio = $pagina - 1;
$inicio = $maximo * $inicio;
// Conta os resultados no total da query
$strCount = "SELECT COUNT(*) AS 'num_registros' $final_query";
$query = mysql_query($strCount);
$row = mysql_fetch_array($query);
$total = $row["num_registros"];
###################################################################################
// INICIO DO CONTEÚDO
echo "
<div class='in'>
<table width='780' border='0' cellspacing='0' cellpadding='10' class='table_main' >
<tr style='background-color:#d9d8d8; font-size:14px;'>
<td width='15'><strong>TIPO</strong></td>
<td width='364'><strong>RAZÃO SOCIAL</strong></td>
<td width='130'><strong>CIDADE</strong></td>
<td width='80'><strong>FONE</strong></td> ";
if($tipo == 2) {
      echo "<td width='50'><strong>AÇÕES</strong></td></tr> ";
   }
else{ echo  " <td width='0'><strong></strong></td></tr> ";
}
// Realizamos a query
$sql = mysql_query("SELECT $campos_query $final_query LIMIT $inicio,$maximo");

// Exibimos os nomes dos produtos e seus repectivos valores
while ($linha = mysql_fetch_object($sql)) {
   echo "<tr class='gray'>
   <td>".$linha->tipo_pessoa."</td>
   <td>".$linha->razao_social."</td>
   <td>".$linha->cidade."</td>
   <td>".$linha->telefone."</td>";
   //se o usuario logado for administrador mostra acções. se nao for nao mostra nada claro
   if($tipo == 2) {
echo "<td>
<a href='/deletar_fornecedor/". $linha->codigo_fornecedor   ."/". $linha->cpf_cnpj."' title='Deletar este fornecedor'>
<img src='imagens/deletar_registro.png' width='16' height'16' alt='Deletar Fornecedor' /> </a>

<a href='/editar_fornecedor/".$linha->codigo_fornecedor."' title='Editar cadastro do fornecedor'>
<img src='imagens/editar_registro.png' width='16' height'16' alt='Deletar Fornecedor' /> </a>

</td></tr>";
   }
else{ echo "<td></td></tr>";}
}
echo "</table></div>";
// FIM DO CONTEUDO
###################################################################################
$menos = $pagina - 1;
$mais = $pagina + 1;
$pgs = ceil($total / $maximo);
if($pgs > 1 ) {

   echo "<div class='pagination blue' style='width:600px; padding-top:10px; padding-left:25px;'>";

    // Mostragem de pagina
    if($menos > 0) {
      echo "<a href='/gerenciar_fornecedores/$menos'>&laquo; Anterior</a>&nbsp; ";
    }

    // Listando as paginas
   for($i=1;$i <= $pgs;$i++) {
      if($i != $pagina) {
         echo " <a href='/gerenciar_fornecedores/".($i)."' class='number'>$i</a>";
      } else {
         echo "<a class='number current' href='#'> ".$i."</a>";
      }
   }

   if($mais <= $pgs) {
      echo " <a href='/gerenciar_fornecedores/$mais'>&raquo; Próxima</a>";
   }
}
   echo "</div>";
?>

MOVIDO PARA MYSQL



detalhes...

www.radiokiller.com.br

erivelton42
SUPER ATIVO
SUPER ATIVO
Mensagens: 81
Registrado em: Ter Jul 19, 2011 6:29 pm
Localização: Apuiarés - CE

Busca Avançada em duas tabelas

Mensagem por web Offline » Dom Jan 15, 2012 3:03 pm

Vamos supor que nas atividades você tenha: id e atividade

em fornecedor, você tem que ter um campo relacionado ao id de atividades

Ai quando você selecionar o id da atividade, vai fazer outra consulta para procurar os fornecedores que tenham o mesmo id. Mas tem que ver qual lógica que você fez para essa busca.

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

Busca Avançada em duas tabelas

Mensagem por erivelton42 Offline » Dom Jan 15, 2012 4:54 pm

Sim, exatamente, porém a tentativa que fiz só retorna um registro.

detalhes...

www.radiokiller.com.br

erivelton42
SUPER ATIVO
SUPER ATIVO
Mensagens: 81
Registrado em: Ter Jul 19, 2011 6:29 pm
Localização: Apuiarés - CE

Busca Avançada em duas tabelas

Mensagem por web Offline » Dom Jan 15, 2012 5:46 pm

Como você fez para carregar a segunda consulta? Está online?

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil

Busca Avançada em duas tabelas

Mensagem por erivelton42 Offline » Dom Jan 15, 2012 9:00 pm

A primeira consulta seleciona o cpf_cnpj do usuario, e passa para a segunda consulta, que já está embutida no script de paginação, coloco um where para os cpf e cnpj, porem desse jeito que eu fiz ta obvio que so vai mostrar um cpf_cnpj

detalhes...

www.radiokiller.com.br

erivelton42
SUPER ATIVO
SUPER ATIVO
Mensagens: 81
Registrado em: Ter Jul 19, 2011 6:29 pm
Localização: Apuiarés - CE

Busca Avançada em duas tabelas

Mensagem por web Offline » Dom Jan 15, 2012 9:06 pm

Talvez seja melhor para você usar aqueles combos que atualizam de acordo com o outro. Tem um script no link abaixo, ele é mais relacionado a relação "estado e cidade", mas, basta você passar o valor de referência para busca e terá o mesmo efeito.

combobox-atualizar-valores-do-combo-select-com-ajaxjQuery_3_2604.html

detalhes...

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.

Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com

Avatar do usuário
web
ADMIN
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil


responder a dúvida

Voltar para MySQL

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 7 visitantes