Ir para conteúdo
juliomarques75

Como selecionar uma tabela para realizar a pesquisa nela

Recommended Posts

Boa noite pessoal, vou tentar explicar no que estou precisando da ajuda de vocês.

 

O meu cenário atual é que tenho um cliente que tem um site de pesquisa de lojas locais, esta funcionando perfeitamente, e ele busca as informações certinhas na tabela criado no MySQL, até ai tudo bem, só que agora tenho que ter uma outra tabela, que seria para outra cidade, só que ele queria que antes do campo onde o cliente irá digitar a loja que quer, tenha uma caixa de seleção que informe em qual cidade essa pesquisa iria ser realizada, é nesse ponto que bugou a mente, como criar essa checkbox para que possa ser selecionada e aponte para a outra tabela dentro BD do mysql e traga somente resultados dessa tabela?

Seria tipo: escolha a tabela para pesquisar.

 

Se alguém puder me dar uma luz a seguir eu agradeço muito.

 

Obrigado!

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

@juliomarques75

 

Simples, você precisa ter uma tabela com os nomes das cidades, que provavelmente é a sua "outra" tabela, certo?

Então assim, uma tabela guarda o nome das cidades, a outra tabela que tem o NOME DA PRÓPRIA tabela o nome da cidade, exemplo:

 

Tabela COM os nomes

 

tb_cidades

ID          NOME_CIDADE                  DESC_CIDADE

1            Santos                                santos

2            São Paulo                          saopaulo

3            Rio De Janeiro                  riodejaneiro

 

Agora o nome DAS tabelas com as lojas

tabela_santos

tabela_saopaulo

tabela_riodejaneiro

 

Repare que o conteudo da tabela que ira guardar apenas os nomes das cidades (tb_cidades), você precisa ter o NOME_CIDADE que iremos usar para apresentar no COMBOBOX e o DESC_CIDADE que iremos usar para encontrar a tabela com as lojas em questão.

 

Então o seu primeiro select fica:

 

$sql = "SELECT NOME_CIDADE, DESC_CIDADE FROM TB_CIDADE";

 

Faça um laço e para cada registro encontrado você coloca o VALUE="<?php echo $resultado['DESC_CIDADE']; ?> e o texto exibido no COMBOBOX igual ao NOME_CIDADE

 

Para que fique assim:

<form action="busca.php" method="POST">

<select name="escolha">

    <option value="santos">Santos</option>

    <option value="saopaulo">São Paulo</option>

    <option value="riodejaneiro">Rio de Janeiro</option>

    <option value="<?php echo $resultado['DESC_CIDADE']; ?>"><?php echo $resultado['NOME_CIDADE']; ?></option>

</select>

 

<input type="text" name="nome_loja" required>

</form>

 

Do outro lado teremos o arquivo que recebe esse formulário "busca.php".

 

Então agora você faz o outro select na tabela que tem as lojas, mas o detalhe é que a TABELA em questão que você ira realizar o select vai ter o VALUE do OPTION selecionado.

 

Ficando mais ou menos assim:

 

$sql = "SELECT * FROM tb_".$_POST['escolha']." WHERE campo_loja like '%".$_POST['nome_loja']."%'";

 

Repare que a tabela em questão tem o NOME da tabela tem o VALUE escolhida no combobox, o que você precisa fazer é amarrar o NOME DA TABELA que você ira buscar com o campo DESC_CIDADE para que ao selecionar um valor você ira pegar o nome da tabela.

 

Existem muitos outros meios de se fazer isso, mas para o seu problema essa lógica atende.

 

Espero ter ajudado.

 

Att.

Felipe Coutinho

Compartilhar este post


Link para o post
Compartilhar em outros sites
<?php
require 'conexao.php';

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

if (empty($termo)):

//	$conexao = conexao::getInstance();
//	$sql = 'SELECT id, nome, endereco, telefone FROM tab_clientes_sm';
//	$stm = $conexao->prepare($sql);
//	$stm->execute();
//	$clientes = $stm->fetchAll(PDO::FETCH_OBJ);

else:

	$conexao = conexao::getInstance();
	$sql = 'SELECT id, nome, endereco, telefone FROM tab_clientes_sm WHERE nome LIKE :nome OR endereco LIKE :endereco';
	$stm = $conexao->prepare($sql);
	$stm->bindValue(':nome', $termo.'%');
	$stm->bindValue(':endereco', $termo.'%');
	$stm->execute();
	$clientes = $stm->fetchAll(PDO::FETCH_OBJ);

endif;
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
	<title>Lista de Clientes</title>
	<link rel="stylesheet" type="text/css" href="css/bootstrap.min.css">
	<link rel="stylesheet" type="text/css" href="css/custom.css">
</head>
<body>

	<div class='container'>
		<fieldset>

			<legend><h1>Lista de Clientes</h1></legend>
			
			<form action="" method="get" id='form-contato' class="form-horizontal col-md-10">
				<label class="col-md-2 control-label" for="termo">Faça sua pesquisa</label>
				<input type="text" class="form-control" id="termo" name="termo" placeholder="Infome o Nome ou E-mail">
			  <button type="submit" class="btn btn-primary">Pesquisar</button>
			</form>

			<?php if(!empty($clientes)):?>

				<table class="table table-striped">
					<tr class='active'>
						<th>Nome</th>
						<th>Endereco</th>
						<th>Telefone</th>
					</tr>
					<?php foreach($clientes as $cliente):?>
						<tr>
							<td><?=$cliente->nome?></td>
							<td><?=$cliente->endereco?></td>
							<td><?=$cliente->telefone?></td>
						</tr>	
					<?php endforeach;?>
				</table>

			<?php else: ?>

				<h3 class="text-center text-primary">Digite sua pesquisa!</h3>
			<?php endif; ?>
		</fieldset>
	</div>
	<script type="text/javascript" src="js/custom.js"></script>
</body>
</html>

Boa noite Felipe, primeiramente queria te agradecer por disponibilizar um pouco do seu tempo para me ajudar, agora minha pergunta é, como posso fazer com que as dicas que você passou sejam passadas para meu código?

Ou teria outro jeito de criar uma "combobox" entre o campo onde o cliente digita:
<input type="text" class="form-control" id="termo" name="termo" placeholder="Infome o Nome ou E-mail">

e o botão de pesquisa:
<button type="submit" class="btn btn-primary">Pesquisar</button>.


E que essa seleção, alterasse a tabela que estaria sendo pesquisada em:
$sql = 'SELECT id, nome, endereco, telefone FROM ==> tab_clientes_sm <==

 

Obrigado desde já.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora

  • Conteúdo Similar

    • Por josenilson
      Olá como faço para buscar vários resultados em um filtro em mysql, ?
      tenho esse abaixo com exemplo que me retorna apenas um resultado tipo.
      se eu consultar o nome joão e tiver dois joão antônio e joão paulo cadastrados no banco como exibo isso ?
      só esta trazendo um resultado deis de já agradeço.
      segue o código que estou utilizando como filtro ou consulta.
      <?php mysql_connect( 'localhost', 'root', 'rizeane20' ) or die ("could not connect"); mysql_select_db("sistema") or die ("could not find db !"); $output = ""; //coletando dados if (isset($_POST["search"])) { $searchq = $_POST["search"]; $searchq = preg_replace("#[^0-9a-z]#i", "",$searchq); $query = mysql_query( " SELECT * FROM login WHERE nome LIKE '%$searchq%' OR usuario LIKE '%$searchq%' OR senha LIKE '%$searchq%' OR nivel LIKE '%$searchq%' ") or die ("could not search !"); $count = mysql_num_rows($query); if ($count == 0) { $output = "there was no search results !"; }else{ while ($row = mysql_fetch_array($query)) { $nome = $row ['nome']; $usuario = $row ['usuario']; $senha = $row ['senha']; $id = $row ['idlogin']; $nivel = $row ['nivel']; $output .="$nome"; $output .="$usuario"; //$output .= '<DIV>'.$nome.' '.$usuario.' '.$senha.' '.$nivel.' </DIV>' ; } } } ?> <form action="resultado.php" method="post"> <input type="text" name="search" required class="form-control" placeholder="localizador" class="form-control"> <input type="submit" value="localizar" class="form-control"> <?php print("$output"); ?> </form> o código acima esta com a consulta e o form com o input para buscar o resultado no banco abaixo esta o código que volta com o resultado da busca, mas como eu disse ele só me retorna 1 resultado mesmo se tiver 2 ou mais no banco. <?php mysql_connect( 'localhost', 'root', 'rizeane20' ) or die ("could not connect"); mysql_select_db("sistema") or die ("could not find db !"); $output = ""; //coletando dados if (isset($_POST["search"])) { $searchq = $_POST["search"]; $searchq = preg_replace("#[^0-9a-z]#i", "",$searchq); $query = mysql_query( " SELECT * FROM login WHERE nome LIKE '%$searchq%' OR usuario LIKE '%$searchq%' OR senha LIKE '%$searchq%' OR nivel LIKE '%$searchq%' ") or die ("could not search !"); $count = mysql_num_rows($query); if ($count == 0) { $output = "there was no search results !"; }else{ while ($row = mysql_fetch_array($query)) { $nome = $row ['nome']; $usuario = $row ['usuario']; $senha = $row ['senha']; $id = $row ['idlogin']; $nivel = $row ['nivel']; $output .= '<DIV>'.$nome.' <br>'.$usuario.' <br>'.$senha.' <br>'.$nivel.' </DIV>' ; } } } ?> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Resultado Busca</title> </head> <body> <table border="1"> <tr> <td>Nome:</td> <td><?php echo $nome ?></td> </tr> <tr> <td>Usuário:</td> <td><?php echo $usuario ?></td> </tr> <tr> <td>Senha:</td> <td><?php echo $senha ?></td> </tr> <tr> <td>Nivel:</td> <td><?php echo $nivel ?></td> </tr> </table> </body> </html>
×

Informação importante

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