Ir ao conteúdo
  • Cadastre-se

Busca simples em php


Alanps

Posts recomendados

Oi, fiz uma busca simples em php e estou com problemas, quando busca dependendo do resultado bagunça o layout da página.. o problema tá no "str_ireplace", se alguem puder me ajudar... o código abaixo:

echo "<span style=\"position: absolute; top:128px;width:420px;\">";


while ($row = mysql_fetch_array($query)) {
$busca = strtoupper($busca);
$row[Pergunta] = str_ireplace("$busca","<font style=\"background-color:#FFFFCC;\">$busca</font>",$row[Pergunta]);
$row[Resposta] = str_ireplace("$busca","<font style=\"background-color:#FFFFCC;\">$busca</font>",$row[Resposta]);

echo "<a href=\"perguntas.php?msg=1&id=$row[Id]\" style=\"font-family:courier; font-size:11px; text-decoration:none; color:#0000FF; font-weight:bold;\">

$row[Pergunta]</a><br>";
echo "<span style=\"font-family:courier; font-size:11px; text-decoration:none; color:#000000; font-weight:bold;\">";
echo substr($row[Resposta], 0, 50);

if (strlen($row[Resposta]) > 50)
{
echo "...<br><br>";
}

if (strlen($row[Resposta]) <= 50)
{
echo "<br><br>";
}

echo "</span>";
}

echo "</span>";

Link para o comentário
Compartilhar em outros sites

ta meio confuso esse seu codigo ai... porque você repete duas vezes a linha $row[pergunta]?

aquele bloco de if ta bem esquisito.. e evite de usar atributos de estilo inline antigos como o font. acho q você pode re fazer esse codigo mais otimizado.

abraço

onde eu estou repetindo a linha $row[pergunta] ?

Link para o comentário
Compartilhar em outros sites

  • Moderador

dentro do while a linha:

$row[Resposta] = str_ireplace("$busca","<font style=\"background-color:#FFFFCC;\">$busca</font>",$row[Resposta]);

é repetida duas vezes. enfim. suguiro você dar uma arrumada no seu codigo, trabalhe com variaveis. atribua o vetor a uma variavel.

posta o codigo completo.. so o fragmento nao é uma boa ideia..

Link para o comentário
Compartilhar em outros sites

dentro do while a linha:

$row[Resposta] = str_ireplace("$busca","<font style=\"background-color:#FFFFCC;\">$busca</font>",$row[Resposta]);

é repetida duas vezes. enfim. suguiro você dar uma arrumada no seu codigo, trabalhe com variaveis. atribua o vetor a uma variavel.

posta o codigo completo.. so o fragmento nao é uma boa ideia..

<?php

/*

=====================================================================
Script desenvolvido por Alan Pardini Sant'Ana - www.alanps.com.br
=====================================================================

*/

//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
// Sistema de Busca
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////

include "db.ini";

include "db_connect.php";

///////////////////////////////////////////////
// Variaveis
///////////////////////////////////////////////

$busca=$_GET['busca'];

$pagina=$_GET['pagina'];

if(!$pagina)
{
$pagina=1;
}

$busca = htmlspecialchars("$busca", ENT_QUOTES);
$pagina = htmlspecialchars("$pagina", ENT_QUOTES);

/////////////////////////////////////////////////////
// Sistema de Paginação
/////////////////////////////////////////////////////
$query = mysql_query("SELECT * FROM `$mysqltablename2` WHERE `Pergunta` LIKE '%$busca%' OR `Resposta` LIKE '%$busca%' OR `Tags` LIKE '%$busca%'") or die

(mysql_error());

$porpag = 6;
$totalres = mysql_num_rows($query);
$paginas = (($totalres % $porpag) > 0) ? (int)($totalres / $porpag) + 1 : ($totalres / $porpag);

if (isset($_GET['pagina'])) {
$pagina = (int)$_GET['pagina'];
} else {
$pagina = 1;
}
$pagina = max(min($paginas, $pagina), 1);
$inicio = ($pagina - 1) * $porpag;

mysql_free_result($query);
$query = mysql_query("SELECT * FROM `$mysqltablename2` WHERE `Pergunta` LIKE '%$busca%' OR `Resposta` LIKE '%$busca%' OR `Tags` LIKE '%$busca%' LIMIT

$inicio, $porpag") or die(mysql_error());

/////////////////////////////////////////////////////
// Resultados
/////////////////////////////////////////////////////

echo "<span style=\"position: absolute; top:128px;width:420px;\">";


while ($row = mysql_fetch_array($query)) {
$busca = strtoupper($busca);
$row[Pergunta] = eregi_replace("$busca","<font style=\"background-color:#FFFFCC;\">$busca</font>",$row[Pergunta]);
$row[Resposta] = eregi_replace("$busca","<font style=\"background-color:#FFFFCC;\">$busca</font>",$row[Resposta]);

echo "<a href=\"perguntas.php?msg=1&id=$row[Id]\" style=\"font-family:courier; font-size:11px; text-decoration:none; color:#0000FF; font-weight:bold;\">

$row[Pergunta]</a><br>";
echo "<span style=\"font-family:courier; font-size:11px; text-decoration:none; color:#000000; font-weight:bold;\">";
echo substr($row[Resposta], 0, 50);

if (strlen($row[Resposta]) > 50)
{
echo "...<br><br>";
}

if (strlen($row[Resposta]) <= 50)
{
echo "<br><br>";
}

echo "</span>";
}

echo "</span>";


/////////////////////////////////////////////////////
// Exibição da Páginação
/////////////////////////////////////////////////////

if ($totalres > $porpag) {

echo "<table border=\"1\" cellspacing=\"0\" bordercolor=\"#FFFFFF\" width=\"6%\" bgcolor=\"#F2F2F2\" style=\"left: 420; top: 358;position: absolute;

border:1px solid #000000; padding-left:4; padding-right:4; padding-top:1; padding-bottom:1; font-family: Verdana; font-size: 9 pt; cursor: default;\"

cellpadding=\"0\">";
echo "<tr>";
echo "<td width=\"100%\" bgcolor=\"#FFFFFF\" style=\"height: 22;\">";

if ($totalres > 0) {
for($n = 1; $n <= $paginas; $n++) {
echo "<a href=\"$PHP_SELF?busca=$busca&pagina=$n\" style=\"color:#000000; text-decoration:none; font-size:9px; font-family:verdana; font-weight: bold;

\">$n</a>";
}
echo "</tr></td></table>";
}

}


?>

código completo, mas acho q não é necessário...mas tá ai...

Link para o comentário
Compartilhar em outros sites

  • Moderador

de novo... você esta repetindo as linhas de $row dentro do while.. e ta faltando aspas dentro do colchete do vetor de $row a nao ser que você esteja usando uma variavel de sessao.. realmente desculpe-me mas ta bem confuso tudo isso ai.. rsrs

efim.. tenta retirar uma das linhas de $row. sobre bagunçar o layout.. só vendo uma imagem ou testando o resultado de busca para dizer com certeza .. mas acredito que seja aqueles estilos inline que você aplicou.. nao sei se você sabe.. mas sempre que define um css inline ele tem grau de procedencia maior. é parecido com o atributo !important..

Link para o comentário
Compartilhar em outros sites

Arquivado

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

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!