sistema de busca php-mysql

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???
 
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:
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.


** tinha noticias XD
certinho funcionou :)


ja agora se quiseres por ai o eu script :)


abraço e obrigado
 
faz a pesquisa e devolve isto(tudo certo)

A sua procura por texto teve 3 resultados. novo alterado texto texto noticia 2 texto da primeira noticia lalalalalalalalalallalalalalalalaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
dcdcdcdcdcalllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll


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
 
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_paginas> 1){
    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:
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
 
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:
Back
Topo