Jump to content


Photo

Sistema De Busca


  • Faça o login para participar
5 replies to this topic

#1 franklinho

franklinho

    Normal

  • Usuários
  • 97 posts
  • Sexo:Não informado

Posted 23/09/2009, 15:47

Galera não estou consiguindo obter resultado com o script abaixo, aparece o seguintes erros:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/arapiraca.al/public_html/v3/busca.php on line 37
Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/arapiraca.al/public_html/v3/busca.php on line 66



<?php

// Configuração do script
// ========================
$_BS['PorPagina'] = 20; // Número de registros por página

// Conexão com o MySQL
// ========================
$_BS['MySQL']['servidor'] = 'localhost';
$_BS['MySQL']['usuario'] = 'arapnews2';
$_BS['MySQL']['senha'] = 'mynews3rprc9001';
$_BS['MySQL']['banco'] = 'arapnews2';
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'])) {
header("Location: [url="http://www.arapiraca.al.gov.br/buscar.html");"]http://www.arapiraca.al.gov.br/buscar.html");[/url]
exit;
}
// Se houve busca, continue o script:

// Salva o que foi buscado em uma variável
$busca = $_GET['consulta'];
// 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 `noticias` WHERE (`ativa` = 1) AND ((`titulo` 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 `noticias` WHERE (`ativa` = 1) AND ((`titulo` LIKE '%".$busca."%') OR ('%".$busca."%')) ORDER BY `data_noticia` DESC LIMIT ".$inicio.", ".$_BS['PorPagina'];
// Executa a consulta
$query = mysql_query($sql);

// ============================================

// Começa a exibição dos resultados
echo "<p>Resultados ".min($total, ($inicio + 1))." - ".min($total, ($inicio + $_BS['PorPagina']))." de ".$total." resultados encontrados para '".$_GET['consulta']."'</p>";
// <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'];
$link = 'http://www.arapiraca...noticia.php?id=' . $resultado['id'];
echo "<li>";
echo '<a href="'.$link.'" title="'.$titulo.'">'.$titulo.'</a><br />';
echo date('d/m/Y H:i', strtotime($resultado['cadastro']));
echo '<p>'.$texto.'</p>';
echo '<a href="'.$link.'" title="'.$titulo.'">'.$link.'</a>';
echo "</li>";
}
echo "</ul>";

// ============================================

// Começa a exibição dos paginadores
if ($total > 0) {
for($n = 1; $n <= $paginas; $n++) {
echo '<a href="?consulta='.$_GET['consulta'].'&pagina='.$n.'">'.$n.'</a>  ';
}
}

?>



#2 Paulo André

Paulo André

    Why so serious?

  • Ex-Admins
  • 5114 posts
  • Sexo:Masculino
  • Localidade:Belo Horizonte - MG
  • Interesses:O.Q.F.J.?

Posted 23/09/2009, 15:55

As consultas SQL parecem estar incorretas.

Na primeira, tente:

$sql = "SELECT COUNT(*) AS total FROM `noticias` WHERE `ativa` = 1 AND (`titulo` LIKE '%" . $busca . "%' OR `titulo` LIKE '%" . $busca . "%')";

[]'sAté mais
Paulo André G Rodrigues,
ex-administrador Fórum WMO.


www.CanalDev.com.br

#3 franklinho

franklinho

    Normal

  • Usuários
  • 97 posts
  • Sexo:Não informado

Posted 23/09/2009, 16:02

As consultas SQL parecem estar incorretas.

Na primeira, tente:

$sql = "SELECT COUNT(*) AS total FROM `noticias` WHERE `ativa` = 1 AND (`titulo` LIKE '%" . $busca . "%' OR `titulo` LIKE '%" . $busca . "%')";

[]'s




Amigo agradeço a ajuda meu velho, mas continua com o mesmo erro. Algum outra sugestão de solução?

#4 Maykel Esser

Maykel Esser

    Super Veterano

  • Usuários
  • 1536 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 23/09/2009, 16:03

veja se essas consultas retornam algo do banco de dados, cole-as no phpmyadmin, por exemplo...

Se este post lhe ajudou, ajude o fórum também. Use a reputação de mensagens! add.png


#5 franklinho

franklinho

    Normal

  • Usuários
  • 97 posts
  • Sexo:Não informado

Posted 23/09/2009, 16:09

veja se essas consultas retornam algo do banco de dados, cole-as no phpmyadmin, por exemplo...



Parceiro não intendi muito bem como fazer isso...

#6 Felipe Pena

Felipe Pena

    O temor do Senhor é o princípio da sabedoria

  • Ex-Admins
  • 6441 posts
  • Sexo:Masculino

Posted 23/09/2009, 19:52

O que ajudaria você a identificar o problema na query, seria:
- Imprimir a query (print $sql;)
- Verificar o retorno da mysql_error().
Felipe Pena
[...] ó terra, terra, terra; ouve a palavra do Senhor. — Jeremias 22:29




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq