Ir ao conteúdo

Busca simples em php


Alanps

Posts recomendados

Postado

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>";

  • Moderador
Postado

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

Postado
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] ?

  • Moderador
Postado

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

Postado
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...

  • Moderador
Postado

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

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

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!