1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

sistema de busca php-mysql

Discussão em 'Web Development' iniciada por Guerreiro_21, 5 de Agosto de 2008. (Respostas: 9; Visualizações: 5580)

  1. Guerreiro_21

    Guerreiro_21 Power Member

    boas
    arranjei este codigo aqui http://war-design.com/wd/index.php?showtopic=3676


    alterei os nomes para a minha base de dados
    mas nao da resultado nenhum :(

    o codigo esta assim
    tabela
    Código:
    CREATE TABLE `noticias` (
      `Id_noticias` int(11) NOT NULL auto_increment,
      `titulo` varchar(100) default NULL,
      `texto` text,
      PRIMARY KEY  (`Id_noticias`)
    )



    index

    Código:
    <FORM method="post">
    Palavra: <INPUT name="palavra">
    <INPUT type="submit" value="Buscar">
    </FORM>
    
    <?php
    $conexao = mysql_connect("localhost", "root", "")
    or die ("Erro na ligação à banco de dados.");
    $db = mysql_select_db("centro_bd")
    or die ("Erro ao selecionar a base de dados.");
    
    if(!empty($HTTP_POST_VARS["palavra"])) {
    
            $palavra = str_replace(" ", "%", $HTTP_POST_VARS[palavra]);
    
            /* Altera os espaços adicionando no lugar o simbolo % */
           
            $qr = "SELECT * FROM noticias WHERE texto LIKE '%".$palavra."%' ORDER BY Id_noticias DESC";
           
            // Executa a query no Banco de Dados
            $sql = mysql_query($qr);
           
            // Conta o total ded resultados encontrados
            $total = mysql_num_rows($sql);
    
            echo "Sua busca retornou '$total' resultados.";
    
            // Gera o Loop com os resultados
            while($r = mysql_fetch_array($sql)) {
                    echo "<hr>";
                    echo $r["texto"];
            }
    }
    ?>
    

    alguem sabe qual o erro???
     
  2. candycane

    candycane Power Member

    Muda o ($HTTP_POST_VARS["palavra"] por $_POST['palavra']
     
  3. Guerreiro_21

    Guerreiro_21 Power Member


    alterei mas continua na mesma :(
     
  4. alakazan

    alakazan Power Member

    PHP:
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    Palavra:<input type="text" name="palavra" size="22" maxlength="150">
    <input type="submit" value="Buscar">
    </form>

    <?php
    $conexao 
    mysql_connect("localhost""root""")
    or die (
    "Erro na ligação à banco de dados.");
    $db mysql_select_db("centro_bd")
    or die (
    "Erro ao selecionar a base de dados.");

    if(isset(
    $_POST['palavra'])) {

            
    $palavra mysql_real_escape_string($_POST['palavra']);

            
    /* Altera os espaços adicionando no lugar o simbolo % */
           
            
    $qr "SELECT * FROM noticias WHERE texto LIKE '%".$palavra."%' ORDER BY Id_noticias DESC";
           
            
    // Executa a query no Banco de Dados
            
    $sql mysql_query($qr);
           
            
    // Conta o total ded resultados encontrados
            
    $total mysql_num_rows($sql);

            echo 
    "Sua busca retornou '$total' resultados.";

            
    // Gera o Loop com os resultados
            
    while($r mysql_fetch_array($sql)) {
                    echo 
    "<hr>";
                    echo 
    $r["texto"];
            }
    }
    ?>
    tenta com o código de cima e diz coisas.

    o que mudei foi

    PHP:
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    Palavra:<input type="text" name="palavra" size="22" maxlength="150">
    <input type="submit" value="Buscar">
    </form>
    e ainda

    PHP:
    if(isset($_POST['palavra'])) {
    e por ultimo

    PHP:
     $palavra mysql_real_escape_string($_POST['palavra']);
    e já agora, a base de dados tem alguma noticia ou só crias-te mesmo as tabelas ??!?!!!
    lol


    se precisares depois posso colocar aqui um script com sistema de busca e paginação.
     
    Última edição: 6 de Agosto de 2008
  5. Guerreiro_21

    Guerreiro_21 Power Member


    ** tinha noticias XD
    certinho funcionou :)


    ja agora se quiseres por ai o eu script :)


    abraço e obrigado
     
  6. Guerreiro_21

    Guerreiro_21 Power Member

    faz a pesquisa e devolve isto(tudo certo)


    mas queria que so mostrasse uma parte do texto nao todo tipo praí umas 30 letras e tambem queria do tipo onde diz texto criar um link para uma pagina e mostrar o texto completo



    é possivel (desculpem o abuso) :)



    abraço
     
  7. alakazan

    alakazan Power Member

    lol também não queres o trabalhinho todo feito ?!? :P
    isso não é difícil vá lá a puxar pela cabeça. :P:P

    Aqui está o script de busca com paginação. Encontrei-o numa pesquisa, mas tinha varios erros e não era muito seguro. Agora tá bom. A paginação é simples mas facilmente se muda para uma mais completa. O código em si pode ser melhorado, mas faz isso tu e depois mete cá. :)

    PHP:
    <form action="<?php echo $_SERVER['PHP_SELF'];?>" method="get">
    Procurar por:
    <input type="text" name="criterio" size="22" maxlength="150">
    <input type="submit" value="Buscar">
    </form>
    <?php

    if (isset($_GET['criterio'])){
        
    //PREVENIR SQL INJECTION------------------------------------------NÃO EDITAR NEM REMOVER ------------------------------------------------------------------
        
    $magic_quotes_active get_magic_quotes_gpc();
        
    $new_enough_php function_exists"mysql_real_escape_string" ); // i.e. PHP >= v4.3.0
        
    if( $new_enough_php ) { // PHP v4.3.0 ou superior
            // desabilitas os magic quotes para permitir o mysql_real_escape_string 
            
    if( $magic_quotes_active ) { $txt_criterio stripslashes($_GET['criterio']); }
            
    $txt_criterio mysql_real_escape_string($_GET['criterio']);
        } else { 
    // anterior ao PHP v4.3.0
            // se  magic quotes estiver desactivado add slashes manualmente
            
    if( !$magic_quotes_active ) { $txt_criterio addslashes($_GET['criterio']); }
            
    // se magic quotes está activo, não é necessário addslashes
        
    }//-------------------------------------------------------------------------------------------------------------------------------------------------------------------
        
    // ***************************************EDITAR O QUE FOR PRECISO***************************************************************************
        
    $txt_criterio mysql_real_escape_string($_GET['criterio']);
        
    $criterio "WHERE val LIKE '%" $txt_criterio "%'"// ver a variavél $ssql
    }else{
        
    $criterio '';
        
    $txt_criterio '';
    }
    //conecto com a base de dados
    $conn mysql_connect("localhost","root","lol");
    mysql_select_db("randoms",$conn);
    //Limito a busca
    $TAMANHO_PAGINA 10;
    //examino a página a mostrar e o inicio do registro a mostrar
    // **********************************************************************************************************************************************

    if (!isset($_GET['pagina'])) {
        
    $inicio 0;
        
    $pagina=1;
    }
    else {
        
    $pagina=$_GET['pagina'];
        
    $inicio = ($pagina 1) * $TAMANHO_PAGINA;
    }
    //vejo o número total de campos que há na tabela com essa busca
    $ssql "select * from randoms " $criterio;
    //echo "$ssql</p>";
    $rs mysql_query($ssql,$conn);
    $num_total_registos mysql_num_rows($rs);
    //calculo o total de páginas
    $total_paginas ceil($num_total_registos $TAMANHO_PAGINA);
    //ponho o número de registros total, o tamanho de página e a página que se mostra
    echo "Número de registros encontrados: " $num_total_registos "<br>";
    echo 
    "Mostram-se páginas de " $TAMANHO_PAGINA " registros cada uma<br>";
    echo 
    "A mostrar a página " $pagina " de " $total_paginas "<p>";
    //construo a sentença SQL
    $ssql "select val from randoms " $criterio " limit " $inicio "," $TAMANHO_PAGINA;
    $rs mysql_query($ssql);
    while (
    $fila mysql_fetch_object($rs)){
        echo 
    $fila->val "<br>";
    }
    //fechamos o conjunto de resultado e a conexão com a base de dados
    mysql_free_result($rs);
    mysql_close($conn);
    //mostro os diferentes índices das páginas, se é que há várias páginas
    if ($total_paginas1){
        for (
    $i=1;$i<=$total_paginas;$i++){
           if (
    $pagina == $i)
              
    //se mostro o índice da página atual, não coloco link
              
    echo $pagina " ";
           else
              
    //se o índice não corresponde com a página mostrada atualmente, coloco o link para ir a essa página
              
    echo "<a href='{$_SERVER['PHP_SELF']}?pagina=" $i "&criterio=" $txt_criterio "'>" $i "</a> ";
        }
    }
    ?> 
     
    Última edição: 7 de Agosto de 2008
  8. paulo84

    paulo84 Power Member

    so uma coisa alakazam mudaste a base de dados certo?

    que dados e k insiriste novos?
     
  9. alakazan

    alakazan Power Member

    n, com n.

    na bd que usei (randoms) para testar pus números (entre 1 e 300), só mesmo para testar.
    Pesquisando por 10, por exemplo, todos os números que tenham 10 apareceram.

    funcionou bem.


    btw: lol é a pass da minha bd.























    no wamp :P:P
     
  10. duvida

    olá esse esse cod, só que ele ta enviando os caractrer com acentos (á, ã, í, etc...) como cod olha o exemplo

    Código:
    <form method="post" action="classificados/busca.php" enctype="application/x-www-form-urlencoded" lang="pt">
                
                  <input name="busca" type="text" size="20" class="forms_Validation"><input type="submit" value="Ir" class="head_darkblue2" >
                </form>
     
    <?
    include "config.inc";
    include "conectar.inc";
    $resultado=mysql_query("select * from $nometabela where atividade like '%$busca%'",$conexao);
    if(mysql_num_rows($resultado)==0){ 
     
    ?>
    </p>
     
     
    <div align="center" class="m-3">
    <b><br><br><br><br>
    <span class="boxtitulo_mb30"><br>
    <font size="4" class="top10_titulo">A(s) palavra(s) &quot;
    <?=$busca?>
    &quot; n&atilde;o foram encontradas!</font></span></b></div>
    <p align="center" class="head_green_titulo_secundaria">
    <? }else{ ?>
    <div align="center">
    <font size="4"><b>A(s) palavra(s) &quot;
    <?=$busca?>
    &quot; foram encontradas em
    <?=mysql_num_rows($resultado)?>
    p&aacute;gina
    <?=mysql_num_rows($resultado)==1?'':'s'?>
    !</b></font>
    </p>
     
     
    <? while($row = mysql_fetch_array($resultado)) {
    echo
     


    alguem pode me ajudar:009:
     
    Última edição pelo moderador: 22 de Outubro de 2008

Partilhar esta Página