Ir para conteúdo

POWERED BY:

Arquivado

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

YeshuaChai

[Resolvido] Busca PHP

Recommended Posts

Amigos bom dia

 

Estou com uma dúvida...tenho uma busca em PHP dentro de um banco MYSQL.

 

Bem, quando a pagina é exibida ele ja me lista os registros sem fazer busca nenhuma.

 

Como faço para quando exibir a página ele NÃO me exiba nenhum registro, apenas quando o usuário digitar na busca???

 

DUVIDA CRUEL!!!...kkkkk

 

Segue abaixo o código fonte!!!

 

<title>BUSCA POR NOME</title></head>
<body>

<form method="GET" action="busca_nome.php"> 
<fieldset> 
<div align="center">
 <p><img src="../images/logo.gif" width="226" height="76"></p>
 <p>Buscar por nome</p>
</div>
<label for="consulta"></label>
<div align="center"><input type="text" id="consulta_nome" name="consulta_nome" maxlength="255" /> 
 <input type="submit" value="OK" />
</div>
</form>	
</body>
	

<?php

//CONSULTA POR SETOR...NO FINLA DO SCRIPT TEMOS CONSULTA POR NOME
// Configuração do script
// ========================
$_BS['PorPagina'] = 10; // Número de registros por página

// Conexão com o MySQL
// ========================
$_BS['MySQL']['servidor'] = 'localhost';
$_BS['MySQL']['usuario'] = 'root';
$_BS['MySQL']['senha'] = '';
$_BS['MySQL']['banco'] = 'banco_hevv';
mysql_connect($_BS['MySQL']['servidor'], $_BS['MySQL']['usuario'], $_BS['MySQL']['senha']);
mysql_select_db($_BS['MySQL']['banco']);
// ====(Fim da conexão)====

// Verifica se foi feita alguma busca
//Caso contrario, redireciona o visitante
//if (!isset($_GET['consulta_nome'])) {
//header("Location: busca_nome.php");
//exit;
//}
// Se houve busca, continue o script:

// Salva o que foi buscado em uma variável
$busca = $_GET['consulta_nome'];
// Usa a função mysql_real_escape_string() para evitar erros no MySQL
$busca = mysql_real_escape_string($busca);

// ============================================

// Monta a consulta MySQL para saber quantos registros serão encontrados
$sql = "SELECT COUNT(*) AS total FROM `ramal` WHERE (`ativa` = 1) AND ((`texto` LIKE '%".$busca."%') OR ('%".$busca."%')) " ;



// Executa a consulta
$query = mysql_query($sql);
// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
$total = mysql_result($query, 0, 'total');
// Calcula o máximo de paginas
$paginas = (($total % $_BS['PorPagina']) > 0) ? (int)($total / $_BS['PorPagina']) + 1 : ($total / $_BS['PorPagina']);

// ============================================

// Sistema simples de paginação, verifica se há algum argumento 'pagina' na URL
if (isset($_GET['pagina'])) {
$pagina = (int)$_GET['pagina'];
} else {
$pagina = 1;
}
$pagina = max(min($paginas, $pagina), 1);
$inicio = ($pagina - 1) * $_BS['PorPagina'];

// ============================================

// Monta outra consulta MySQL, agora a que fará a busca com paginação
$sql = "SELECT * FROM `ramal` WHERE (`ativa` = 1) AND ((`texto` LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY `titulo` DESC LIMIT ".$inicio.", ".$_BS['PorPagina'];
// Executa a consulta
$query = mysql_query($sql);

// ============================================

// Começa a exibição dos resultados
echo "<p><center>Resultados ".min($total, ($inicio + 1))." - ".min($total, ($inicio + $_BS['PorPagina']))." de ".$total." resultados encontrados para '".$_GET['consulta_nome']."'</p></center>";
// <p>Resultados 1 - 20 de 138 resultados encontrados para 'minha busca'</p>

echo "<ul>";
while ($resultado = mysql_fetch_assoc($query)) {
$titulo = $resultado['titulo'];
$texto = $resultado['texto'];
$id = $resultado['id'];
//echo "</center>"


echo '<table width="90%" border="1" cellpadding="2" cellspacing="1" bordercolor="7C2029">';
echo '<tr>';
echo '<td width="50%">SETOR</td>';
echo '<td width="15%">RAMAL</td>';
echo '<td width="35%">FALAR COM</td>';
echo '</tr>';
echo '<tr>';
echo '<td width="50%">'.$titulo.'</td>';
echo '<td width="15%">'.$id.'</td>';
echo '<td width="35%">'.$texto.'</td>';
echo '</tr>';
echo '</table>';


}



// ============================================

// Começa a exibição dos paginadores
if ($total > 0) {
for($n = 1; $n <= $paginas; $n++) {
echo '<a href="?consulta_nome='.$_GET['consulta_nome'].'&pagina='.$n.'">'.$n.'</a>  ';
}
}

?>



Compartilhar este post


Link para o post
Compartilhar em outros sites

YeshuaChai

 

Você pode colocar uma validação de campos de formulário.

 

Se alguém apertar em buscar e o campo do texto da busca, estiver vazio, exibe uma mensagem, dizendo que a palavra-chave é obrigatória.

 

É isso mais ou menos?

Compartilhar este post


Link para o post
Compartilhar em outros sites

YeshuaChai

 

Você pode colocar uma validação de campos de formulário.

 

Se alguém apertar em buscar e o campo do texto da busca, estiver vazio, exibe uma mensagem, dizendo que a palavra-chave é obrigatória.

 

É isso mais ou menos?

 

amigão acho que você não entendeu!!!

 

ao exibir a pagina ANTES DA PESQUISA ja me aparece os registros.

 

quero que quando exiba a pagina NÃO me apareça registros, só depois de digitar algo para buscar entendeu??

 

MAS DESDE JÁ AGRADEÇO!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

De uma olhada no seu SQL, veja sua consulta tem a seguinte condição:

 

SELECT * FROM RAMAL WHERE ATIVA = 1 AND TEXTO LIKE [b]'%<VARIAVEL>%' OR '%<VARIAVEL>%'[/b] ORDER BY TITULO DESC LIMIT $INICIO

se a variavel for nula, que é o caso (porque a pagian esta inciiando agora e não tem valor associado a mesma) o SQL fica assim:

 

SELECT * FROM RAMAL WHERE ATIVA = 1 AND TEXTO LIKE [b]'%%' OR '%%'[/b] ORDER BY TITULO DESC LIMIT $INICIO

o que faz com que o a consulta traga todos os valores, pois o % permite isso.

 

 

o que voce pode fazer é uma validação do campo, verificando se a variavel busca esta vazia, permitindo ou não a consulta entend? algo como:

 

<?php
if (!empty($busca)){

//realiza a busca.

}
?>

qualquer duvida posta ai.

 

flw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha, de forma simples, você só vai executar a busca se o cara enviou o formulário, certo? Então:

 

<?php
// adicionei esta linha e coloquei todo o bloco da busca dentro do if
if (isset ( $_GET ['consulta_nome'] )) {
	// Salva o que foi buscado em uma variável
	$busca = $_GET ['consulta_nome'];
	// Usa a função mysql_real_escape_string() para evitar erros no MySQL
	$busca = mysql_real_escape_string ( $busca );
	
	// ============================================
	

	// Monta a consulta MySQL para saber quantos registros serão encontrados
	$sql = "SELECT COUNT(*) AS total FROM `ramal` WHERE (`ativa` = 1) AND ((`texto` LIKE '%" . $busca . "%') OR ('%" . $busca . "%')) ";
	
	// Executa a consulta
	$query = mysql_query ( $sql );
	// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
	$total = mysql_result ( $query, 0, 'total' );
	// Calcula o máximo de paginas
	$paginas = (($total % $_BS ['PorPagina']) > 0) ? ( int ) ($total / $_BS ['PorPagina']) + 1 : ($total / $_BS ['PorPagina']);
	
	// ============================================
	

	// Sistema simples de paginação, verifica se há algum argumento 'pagina' na URL
	if (isset ( $_GET ['pagina'] )) {
		$pagina = ( int ) $_GET ['pagina'];
	} else {
		$pagina = 1;
	}
	$pagina = max ( min ( $paginas, $pagina ), 1 );
	$inicio = ($pagina - 1) * $_BS ['PorPagina'];
	
	// ============================================
	

	// Monta outra consulta MySQL, agora a que fará a busca com paginação
	$sql = "SELECT * FROM `ramal` WHERE (`ativa` = 1) AND ((`texto` LIKE '%" . $busca . "%') OR ('%" . $busca . "%')) ORDER BY `titulo` DESC LIMIT " . $inicio . ", " . $_BS ['PorPagina'];
	// Executa a consulta
	$query = mysql_query ( $sql );
	
	// ============================================
	

	// Começa a exibição dos resultados
	echo "<p><center>Resultados " . min ( $total, ($inicio + 1) ) . " - " . min ( $total, ($inicio + $_BS ['PorPagina']) ) . " de " . $total . " resultados encontrados para '" . $_GET ['consulta_nome'] . "'</p></center>";
	// <p>Resultados 1 - 20 de 138 resultados encontrados para 'minha busca'</p>
	

	echo "<ul>";
	while ( $resultado = mysql_fetch_assoc ( $query ) ) {
		$titulo = $resultado ['titulo'];
		$texto = $resultado ['texto'];
		$id = $resultado ['id'];
		//echo "</center>"
		

		echo '<table width="90%" border="1" cellpadding="2" cellspacing="1" bordercolor="7C2029">';
		echo '<tr>';
		echo '<td width="50%">SETOR</td>';
		echo '<td width="15%">RAMAL</td>';
		echo '<td width="35%">FALAR COM</td>';
		echo '</tr>';
		echo '<tr>';
		echo '<td width="50%">' . $titulo . '</td>';
		echo '<td width="15%">' . $id . '</td>';
		echo '<td width="35%">' . $texto . '</td>';
		echo '</tr>';
		echo '</table>';
	
	}
	
	// ============================================
	

	// Começa a exibição dos paginadores
	if ($total > 0) {
		for($n = 1; $n <= $paginas; $n ++) {
			echo '<a href="?consulta_nome=' . $_GET ['consulta_nome'] . '&pagina=' . $n . '">' . $n . '</a>  ';
		}
	}
// aqui fechamos o if que abriu antes.
}
?>
Assim, se não for enviado nada, não faz a busca.

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja, você só libera a busca se a variavel estiver preenchida.... algo como:

 

 

	<title>
		BUSCA POR NOME
	</title>
</head>
<body>
	<form method="GET" action="busca_nome.php"> 
		<fieldset> 
			<div align="center">
				<p>
					<img src="../images/logo.gif" width="226" height="76">
				</p>
				<p>Buscar por nome</p>
			</div>
			<label for="consulta"></label>
			<div align="center">
				<input type="text" id="consulta_nome" name="consulta_nome" maxlength="255" /> 
				<input type="submit" value="OK" />
			</div>
		</fieldset>
	</form> 
</body>
<?php
	//CONSULTA POR SETOR...NO FINLA DO SCRIPT TEMOS CONSULTA POR NOME
	// Configuração do script
	// ========================
	$_BS['PorPagina'] = 10; // Número de registros por página

	// Conexão com o MySQL
	// ========================
	$_BS['MySQL']['servidor'] = 'localhost';
	$_BS['MySQL']['usuario'] = 'root';
	$_BS['MySQL']['senha'] = '';
	$_BS['MySQL']['banco'] = 'banco_hevv';
	mysql_connect($_BS['MySQL']['servidor'], $_BS['MySQL']['usuario'], $_BS['MySQL']['senha']);
	mysql_select_db($_BS['MySQL']['banco']);
	// ====(Fim da conexão)====

	// Verifica se foi feita alguma busca
	//Caso contrario, redireciona o visitante
	//if (!isset($_GET['consulta_nome'])) {
	//header("Location: busca_nome.php");
	//exit;
	//}
	// Se houve busca, continue o script:

	// Salva o que foi buscado em uma variável
	$busca = $_GET['consulta_nome'];
	
	//**********************************************************
	//A CONDIÇÃO QUE PERGUNTA SE EXISTE VALOR NA VARIAVEL
	if (!empty($busca)){
		
		// Usa a função mysql_real_escape_string() para evitar erros no MySQL
		$busca = mysql_real_escape_string($busca);
		
		// ============================================
		// Monta a consulta MySQL para saber quantos registros serão encontrados
		$sql = "SELECT COUNT(*) AS total FROM `ramal` WHERE (`ativa` = 1) AND ((`texto` LIKE '%".$busca."%') OR ('%".$busca."%')) " ;
		
		// Executa a consulta
		$query = mysql_query($sql);
		
		// Salva o valor da coluna 'total', do primeiro registro encontrado pela consulta
		$total = mysql_result($query, 0, 'total');
		
		// Calcula o máximo de paginas
		$paginas = (($total % $_BS['PorPagina']) > 0) ? (int)($total / $_BS['PorPagina']) + 1 : ($total / $_BS['PorPagina']);
		// ============================================
		
		// Sistema simples de paginação, verifica se há algum argumento 'pagina' na URL
		if (isset($_GET['pagina'])) {
			
			$pagina = (int)$_GET['pagina'];
			
		}else{
			
			$pagina = 1;
			
		}
		
		$pagina = max(min($paginas, $pagina), 1);
		$inicio = ($pagina - 1) * $_BS['PorPagina'];
		// ============================================
		
		// Monta outra consulta MySQL, agora a que fará a busca com paginação
		$sql = "SELECT * FROM `ramal` WHERE (`ativa` = 1) AND ((`texto` LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY `titulo` DESC LIMIT ".$inicio.", ".$_BS['PorPagina'];
		
		// Executa a consulta
		$query = mysql_query($sql);
		
		// ============================================
		
		// Começa a exibição dos resultados
		echo "<p><center>Resultados ".min($total, ($inicio + 1))." - ".min($total, ($inicio + $_BS['PorPagina']))." de ".$total." resultados encontrados para '".$_GET['consulta_nome']."'</p></center>";
		
		// <p>Resultados 1 - 20 de 138 resultados encontrados para 'minha busca'</p>
		echo "<ul>";
		
		while ($resultado = mysql_fetch_assoc($query)) {
			$titulo = $resultado['titulo'];
			$texto = $resultado['texto'];
			$id = $resultado['id'];
			//echo "</center>"
			echo '<table width="90%" border="1" cellpadding="2" cellspacing="1" bordercolor="7C2029">';
			echo '<tr>';
			echo '<td width="50%">SETOR</td>';
			echo '<td width="15%">RAMAL</td>';
			echo '<td width="35%">FALAR COM</td>';
			echo '</tr>';
			echo '<tr>';
			echo '<td width="50%">'.$titulo.'</td>';
			echo '<td width="15%">'.$id.'</td>';
			echo '<td width="35%">'.$texto.'</td>';
			echo '</tr>';
			echo '</table>';
		}
		
		// ============================================
		// Começa a exibição dos paginadores
		if ($total > 0) {
			for($n = 1; $n <= $paginas; $n++) {
				echo '<a href="?consulta_nome='.$_GET['consulta_nome'].'&pagina='.$n.'">'.$n.'</a>  ';
			}
		}
	}else{
		
		echo "<center><b>Atenção, selecione um nome para realizar uma consulta.</b></center>";
		
	}	

?>

http://forum.imasters.com.br/public/style_emoticons/default/ermm.gif oopss...

Matias, desculpa ai. estava escrevendo enquanto seu post foi efetuado. ;)

 

vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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