Ir para conteúdo

Arquivado

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

nathanfeitoza

Como criar um Script de busca em php e Mysql

Recommended Posts

Olá, galera.

 

Bom, o meu problema é o seguinte: eu estou criando um script de portal de noticias, e então estou tendo problemas com meu script de buscas de noticias do site. O script faz as buscas mas não mostra os resultados, eu queria que vocês por favor me mostrem o problema e a possível solução.Abaixo estão os códigos.

 

 

Código da página onde as noticias são mostradas, noticias.php:

 

<title>Noticias</title>
<div style="text-align:center; position:relative; float:right;">
<form method="GET" action="busca.php">
<label for="consulta">Buscar:</label>
<input type="text" name="busca" maxlength="255" />
<input name="ok" type="submit" value="OK" />
</form>
</div>
<?php
// Conexão com o Banco de Dados
include('views/config.php');
$selecionar_db = "SELECT * FROM news ORDER BY id DESC";
$final = mysql_query($selecionar_db)
or die ("<h1>Erro ao Conectar-se ao Banco de dados</h1>");
while ($news=mysql_fetch_array($final)) {
$id = $news["id"];
$titulo = $news["titulo"];
$categoria_id = $news["categoria"];
$autor = $news["autor"];
$views = $news["views"];
$texto = $news["texto"];
$date = $news["date"];
$date2 = strtotime($date);
$data = date('d/m/Y', $date2);
$hora = date('H:i', $date2);
$comentarios_db = "SELECT * FROM comentarios WHERE noticia_id='$id'";
$comentarios_db = mysql_query($comentarios_db);
$comentarios = mysql_num_rows($comentarios_db);
$categoria_db = "SELECT * FROM categorias WHERE id='$categoria_id'";
$categoria_resultado = mysql_query($categoria_db);
$categoria_final = mysql_fetch_assoc($categoria_resultado);
$categoria = $categoria_final['categoria'];
$texto = substr("$texto", 0, -400);
echo "<h1><a href=\"noticia.php?id=$id\">$titulo</a></h1><p>Postado por <b>$autor</b> em <b>$data</b> ás <b>$hora</b> - <b>$views</b> Visualizações | <b>$comentarios</b> Comentários | Categoria: <b>$categoria</b></p><p>$texto <a href=\"noticia.php?id=$id\">Leia Mais...</a></p>";
}
?>
Script da página de busca, a qual está com problema, busca.php
<title>Noticias</title>
<div style="text-align:center; position:relative; float:right;">
<form method="GET" action="busca.php">
<label for="consulta">Buscar:</label>
<input type="text" name="busca" maxlength="255" />
<input name="ok" type="submit" value="OK" />
</form>
</div>
<?php
// Conexão com o Banco de Dados
include('views/config.php');
$termo = $_GET['busca'];
$busca = mysql_query ('SELECT * FROM news WHERE tags LIKE "%termo%" ORDER BY id DESC');
while($src = mysql_fetch_array($busca))
echo "Nada encontrado";
{
?>
<h2><a href=\"noticia.php?id=<?php echo $src['id'];?>\"><?php echo $src['titulo'];?></a></h2><p><?php echo $src['texto'];?></p>
<?php } ?>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites
LIKE "%termo%"

Não seria

LIKE "%$termo%"

Além disto utilize mysql_num_rows para contar os resultados e ai exibir ou não a mensagem de "nada encontrado".

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

Você quer que eu refaça para você com AJAX e JS (para buscar em tempo real)?

 

Ah! Sim.

 

 

Achei um errinho...

 

 while($src = mysql_fetch_array($busca))


 echo "Nada encontrado.";
 {
?>
 <h2><a href=\"noticia.php?id=<?php echo $src['id'];?>\"><?php echo $src['titulo'];?></a></h2><p><?php echo $src['texto'];?></p>
 <?php } ?>

Deveria estar assim:

$check_rows_ex = mysql_num_rows($final);
 while($src = mysql_fetch_array($busca)) {
if ($check_rows_ex < 1) {
 echo "Nada encontrado.";
} else {
?>
 <h2><a href=\"noticia.php?id=<?php echo $src['id'];?>\"><?php echo $src['titulo'];?></a></h2><p><?php echo $src['texto'];?></p>
 <?php } ?>

 

Cara , do seu jeito está indo, mas me mostra esse erro:

 

Parse error: syntax error, unexpected end of file in... on line 16

 

Que está entre essas duas:

 

<h2><a href=\"noticia.php?id=<?php echo $src['id'];?>\"><?php echo $src['titulo'];?></a></h2><p><?php echo $src['texto'];?></p>

<?php } ?>
Então, o que pode ser feito?

Compartilhar este post


Link para o post
Compartilhar em outros sites

O correto seria verificar primeiro, depois botar o while e também está faltando um }

$check_rows_ex = mysql_num_rows($final);


if ($check_rows_ex < 1) {
 echo "Nada encontrado.";
} else {
    while($src = mysql_fetch_array($busca)) {
?>
 <h2><a href=\"noticia.php?id=<?php echo $src['id'];?>\"><?php echo $src['titulo'];?></a></h2><p><?php echo $src['texto'];?></p>
 <?php 
 }
 } ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não quero ser chato, mas você conhece scripts como Wordpress ou outros CMS? Dê uma pesquisa, talvez você veja que valha mais a pena usa-los do que criar um portal do 0.

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.