Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Busca com query string


vini_loock

Pergunta

Olá.

Eu to fazendo um sistema de busa com get, funcionou certinho. só que eu quero fazer ele como query string, em uma página só, o meu ta dividido em 2 arquivos.

index.php e busca.php

index.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Documento sem t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>

<form action="busca.php" method="get">
    <select name="bairro">
        <option value="vitoriaregia">Vitória Régia</option>
    </select>
    
    <select name="categoria">
        <option value="autopecas">Auto Peças</option>
    </select>
    
    <input type="text" name="palavra">
    <input type="submit" value="pesquisar">
</form>

</body>
</html>
busca.php
<?php

$hostname       = "localhost";
$username       = "root";
$password       = "";
$banco          = $_GET['bairro'];
$tabela         = $_GET['categoria'];
$palavra        = $_GET['palavra'];
$conecta        = mysql_connect($hostname, $username, $password);
$selecionaBanco = mysql_select_db($banco, $conecta);
$selecionaTabela= mysql_query("SELECT * FROM $tabela WHERE nome LIKE '%".$palavra."%' OR ramo LIKE '%".$palavra."%'");

if($selecionaTabela >= 1){
    while($sql = mysql_fetch_assoc($selecionaTabela)){
        $nome = $sql['nome'];
        $ramo = $sql['ramo'];
        $id   = $sql['id'];
        echo "Nome: $nome<br>Ramo: $ramo<br>ID: $id";
    }
}
?>

Eu vi uma vez uma coisa parecida num formulario de contato, mas não lembro qual site foi, eu só lembro que ele colocava no action alguma coisa como php_self. e na parte responsavel verificava se existia a ação e fazia a busca.

O que eu tenho que fazer nesse meu ai?

Vlw

Editado por vini_loock
Link para o comentário
Compartilhar em outros sites

4 respostass a esta questão

Posts Recomendados

  • 0

vini_loock, bom dia!

Bom, pelo que entendi, você pretende fazer esse modulo de busca útilizando somente uma pagina, correto?

Vamos as definições:

$_SERVER['PHP_SELF']

$_SERVER - é um array criado pelo sistema, que contem diversas informações sobre a aplicação.

'PHP_SELF' - é um indice deste array que contem o nome do arquivo .php que está sendo executado

Para você configurar o fomulário para que o submit sejá na mesma pagina, você seta o action do form com o valor retornado pelo indice do array $_SERVER['PHP_SELF'].

<?

$action = $_GET['action'];

if ( $action == 'Buscar' )
{
    $hostname       = "localhost";
    $username       = "root";
    $password       = "";
    $banco          = $_GET['bairro'];
    $tabela         = $_GET['categoria'];
    $palavra        = $_GET['palavra'];
    $conecta        = mysql_connect($hostname, $username, $password);
    $selecionaBanco = mysql_select_db($banco, $conecta);
    $selecionaTabela= mysql_query("SELECT * FROM $tabela WHERE nome LIKE '%".$palavra."%' OR ramo LIKE '%".$palavra."%'");
    
    if($selecionaTabela >= 1){
        while($sql = mysql_fetch_assoc($selecionaTabela)){
            $nome = $sql['nome'];
            $ramo = $sql['ramo'];
            $id   = $sql['id'];
            echo "Nome: $nome<br>Ramo: $ramo<br>ID: $id";
        }
    }
}
else
{
    ?>
    <form name='Teste' action="<?php = $_SERVER['PHP_SELF'];?>" method='get'>
    <input type='hidden' action='Buscar'>
    </form>
    <?
}
?>

Faça um teste, qualquer coisa tamo ae..

Abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Eu testei aqui, dai ele apontou erro no action.

Dai alterei para:

<form action="<?php $_SERVER['PHP_SELF'];?>" method="get">
    <select name="bairro">
        <option value="vitoriaregia">Vitória Régia</option>
    </select>
    
    <select name="categoria">
        <option value="autopecas">Auto Peças</option>
    </select>
    
    <input type="text" name="palavra">
    <input type='hidden' action='Buscar'>
    <input type="submit" value="pesquisar">
</form>

<?

$action = $_GET['action'];

if($action == 'Buscar'){

    $hostname       = "localhost";
    $username       = "root";
    $password       = "";
    $banco          = $_GET['bairro'];
    $tabela         = $_GET['categoria'];
    $palavra        = $_GET['palavra'];
    $conecta        = mysql_connect($hostname, $username, $password);
    $selecionaBanco = mysql_select_db($banco, $conecta);
    $busca          = mysql_query("SELECT * FROM $categoria WHERE nome LIKE '%".$palavra."%' OR ramo LIKE '%".$palavra."%'");
    
    if($busca >= 1){
        while($sql = mysql_fetch_assoc($busca)){
            $nome  = $sql['nome'];
            $ramo  = $sql['ramo'];
            $id    = $sql['id'];
            
            echo "Nome da empresa: ".$nome;
            echo "Ramo de atividade ".$ramo;
            echo "ID: ".$id;
        }
    }else{
        echo "Não há nenhum resultado para $nome em $bairro  $categoria";
    }
}
?>

Só que ele não ta entrando no fi que verifica se $busca >= 1.

Ele ta pegando os dados do formulario certinho, só não ta entrando na parte que deveria pegar os dados do bd.

Link para o comentário
Compartilhar em outros sites

  • 0

vini_loock,

Kara, descupa, tinha um erro no form, que estava <input type='hidden' action='Buscar'> na verdade o correto seria <input type='hidden' name='action' value='Buscar'>.

Fiz a correção no código, segue abaixo.

Só que observei mais uma coisa, a variável $categoria deveria receber algum valor ou deveria ser inicializada. Dessa forma seu SELECT dinamico não vai funcionar.

Faz o teste ai.

<?php
$action = $_GET['action'];

if( $action == 'Buscar' )
{
    $hostname       = "localhost";
    $username       = "root";
    $password       = "";
    $banco          = $_GET['bairro'];
    $tabela         = $_GET['categoria'];
    $palavra        = $_GET['palavra'];
    $conecta        = mysql_connect( $hostname, $username, $password );
    $selecionaBanco = mysql_select_db( $banco, $conecta );
    $busca          = mysql_query( "SELECT * FROM [b]$categoria[/b] WHERE nome LIKE '%".$palavra."%' OR ramo LIKE '%".$palavra."%'" );
    
    if( mysql_num_rows($busca) > 0 )
    {
        while( $sql = mysql_fetch_assoc( $busca ) )
        {
            $nome  = $sql['nome'];
            $ramo  = $sql['ramo'];
            $id    = $sql['id'];
            
            echo "Nome da empresa: ".$nome;
            echo "Ramo de atividade ".$ramo;
            echo "ID: ".$id;
        }
    }
    else
    {
        echo "Não há nenhum resultado para $nome em $bairro  $categoria";
    }
}
?>

<form action="<?php print $_SERVER['PHP_SELF'];?>" method="get">

    <!-- Iforma qual a ação do formulário -->
    <input type='hidden' name='action' value='Buscar'>

    <select name="bairro">
        <option value="vitoriaregia">Vitória Régia</option>
    </select>
    
    <select name="categoria">
        <option value="autopecas">Auto Peças</option>
    </select>
    
    <input type="text" name="palavra">

    <input type="submit" value="pesquisar">
</form>

Abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...