Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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']);// Verifica se foi feita alguma busca
//Caso contrario, redireciona o visitante
//if (!isset($_GET['consulta_nome'])) {
//header("Location: busca_nome.php");
//exit;// 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'];$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>";$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> ';
}
}
?>>
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!!!
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.
explicação perfeita cara..
mas como sou iniciante, onde coloco essa linha...tentei colocar aqui mas esta dando erro..
valeu ai pela força!!!
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> ';
}
}Carlos Eduardo
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/](http://forum.imasters.com.br/public/style_emoticons/)default/ermm.gif oopss...
Matias, desculpa ai. estava escrevendo enquanto seu post foi efetuado. ;)
vlw.
Monan...showwwwwwwww de bola cara...funcionou!!!
Muito obrigado a todos ai que me ajudaram...VALEU MESMOOOOO
ABRAÇO E TENHAM UM BOM DIA!!!
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?