Você está na página 1de 8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

SistemadebuscaemPHPeMySQLcompaginao

Encontrouumproblemanocontedo?Porfavor,deixeseucomentrio!
Hojevoudemonstrarcomopodemoscriarumsistemadebuscasimplesparaoseusite.
Osistemadebuscaaquiexplicadoconsisteemduascoisas:oformulriodebusca,quepodeiremqualquer
lugardoseusite(topo/lateral)eapginaderesultadosdabusca,queexibirumresultadoparecidocomodo
Google.
Abuscaserfeitanottuloenocontedodasnotciascadastradasnobancodedados,emumatabela
chamadanotcias.
Vejaumexemplo(imagem)decomoficaroresultadodabuscasemCSS.
Vejaocdigodecriaodatabela:
1

CREATETABLE`noticias`(

`id`INTNOTNULLAUTO_INCREMENTPRIMARYKEY,

`titulo`VARCHAR(255)NOTNULL,

`texto`LONGTEXTNOTNULL,

`ativa`BOOLNOTNULL,

`cadastro`DATETIMENOTNULL,

INDEX(`ativa`)

)ENGINE=MYISAM

snippet.sql hosted with by GitHub

view raw

Ascolunasdatabelasero:id,titulo,texto,ativa(1ou0),ecadastro(AAAAMMDDHH:MM:SS).
Estaumaestruturasimplesdeumatabeladenotcias,evocvaiprecisaradaptaroscriptparaasuatabela
casoqueirausarumapronta.
Vamosaoformulriodebusca:
1

<formmethod="GET"action="busca.php">

<labelfor="consulta">Buscar:</label>

<inputtype="text"id="consulta"name="consulta"maxlength="255"/>

4
5

<inputtype="submit"value="OK"/>

</form>

snippet.html hosted with by GitHub

view raw

NoseesqueadealteraroactionparaoendereocertodoseusiteSevocpreferir,podedefiniroaction
usandocaminhorelativo,nohdiferena.
PassaremosabuscapormtodoGETparaficarmaisparecidocomoGoogle.:)
Eagoraoarquivo(busca.php)querecebeosdadosdoformulrio,fazaconexoaobancodedados,
processaabuscaeexibeoresultado(sempaginao):
http://blog.thiagobelem.net/sistemadebuscaemphpemysql

1/8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

<?php

//Verificasefoifeitaalgumabusca

//Casocontrario,redirecionaovisitanteprahome

if(!isset($_GET['consulta'])){

header("Location:/");

exit;

8
9

//ConecteseaoMySQLantesdesseponto

10
11

//Salvaoquefoibuscadoemumavarivel

12

$busca=mysql_real_escape_string($_GET['consulta']);

13
14

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

15
16

//MontaoutraconsultaMySQLparaabusca

17

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

18

//Executaaconsulta

19

$query=mysql_query($sql);

20
21

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

22
23

//Comeaaexibiodosresultados

24

echo"<ul>";

25

while($resultado=mysql_fetch_assoc($query)){

26

$titulo=$resultado['titulo'];

27

$texto=$resultado['texto'];

28

$link='/noticia.php?id='.$resultado['id'];

29

30

echo"<li>";

31

echo"<ahref='{$link}'>";

32

echo"<h3>{$titulo}</h3>"

33

echo"<p>{$texto}</p>"

34

echo"</a>";

35

echo"</li>";

36

37

echo"</ul>";

snippet.php hosted with by GitHub

view raw

Noseesqueademudar,dentrodaexibiodosresultados,comodefinidaavarivel$linkparaoformato
queoseusiteusa)

Epraquemquiseromesmoscriptcompaginao:
1

<?php

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

2/8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

//Verificasefoifeitaalgumabusca

//Casocontrario,redirecionaovisitanteprahome

if(!isset($_GET['consulta'])){

header("Location:/");

exit;

8
9

//ConecteseaoMySQLantesdesseponto

10
11

//Salvaoquefoibuscadoemumavarivel

12

$busca=mysql_real_escape_string($_GET['consulta']);

13
14

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

15
16

//Registrosporpgina

17

$por_pagina=20;

18
19

//MontaaconsultaMySQLparasaberquantosregistrosseroencontrados

20

$condicoes="(`ativa`=1)AND((`titulo`LIKE'%{$busca}%')OR('%{$busca}%'))";

21

$sql="SELECTCOUNT(*)AStotalFROM`noticias`WHERE{$condicoes}";

22

//Executaaconsulta

23

$query=mysql_query($sql);

24

//Salvaovalordacoluna'total',doprimeiroregistroencontradopelaconsulta

25

$total=mysql_result($query,0,'total');

26

//Calculaomximodepaginas

27

$paginas=(($total%$por_pagina)>0)?(int)($total/$por_pagina)+1:($total/$por_pagina);

28
29

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

30
31

if(isset($_GET['pagina'])){

32

$pagina=(int)$_GET['pagina'];

33

}else{

34

$pagina=1;

35

36

$pagina=max(min($paginas,$pagina),1);

37

$offset=($pagina1)*$por_pagina;

38
39

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

40
41

//MontaoutraconsultaMySQL,agoraaquefarabuscacompaginao

42

$sql="SELECT*FROM`noticias`WHERE{$condicoes}ORDERBY`cadastro`DESCLIMIT{$offset},{$por_pagina

43

//Executaaconsulta

44

$query=mysql_query($sql);

45
46

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

47
48

//Comeaaexibiodosresultados

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

3/8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

49
50

echo"Resultados".min($total,($offset+1))."".min($total,($offset+$por_pagina))."de".$total

51
52

echo"<ul>";

53

while($resultado=mysql_fetch_assoc($query)){

54

$titulo=$resultado['titulo'];

55

$texto=$resultado['texto'];

56

$link='/noticia.php?id='.$resultado['id'];

57

58

echo"<li>";

59

echo"<ahref='{$link}'>";

60

echo"<h3>{$titulo}</h3>"

61

echo"<p>{$texto}</p>"

62

echo"</a>";

63

echo"</li>";

64

65

echo"</ul>";

66
67

//Linksdepaginao

68

//Comeaaexibiodospaginadores

69

if($total>0){

70

for($n=1;$n<=$paginas;$n++){

71

echo"<ahref='busca.php?consulta={$_GET['consulta']}&pagina={$n}'>{$n}</a>";

72

73

snippet.php hosted with by GitHub

view raw

Reconheoqueoscriptpoderiasermaissimples,masseuusoficariamuitolimitado(eocdigoficaria
enorme)Ecompaginaoficamuitomaislegal,almdeseroquetodomundoacabaprocurando.
Vocsperceberoquenohformataoeestilizao(CSS)nenhumaEssesistemadebuscafoifeitopara
vocusardebaseecriaroseuprpriosistema.
Esperoquetenhamgostado!:)
Qualquerdvida,sfalar.
Escritopor

ThiagoBelem

Publicado12May2009
18Comentrios
Recomendar 5

ThiagoBelem/Blog

Compartilhar

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

Entrar

OrdenarporMaisvotados

4/8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

Participardadiscusso...
IkaroPinheiroLopes7mesesatrs

Temalgumjeitodeeumostrarastabelasdentrodomeubancodedados?
Ex:
Queroselecionartodasastabelascomonome"Ikaro"emostrarissonapgina.

Responder Compartilhar
GuilhermeGaspar>IkaroPinheiroLopes3mesesatrs

Select*Fromsys.tables(SQLServer)

Responder Compartilhar
NildoPontes10mesesatrs

Cara,soluotop!Sempreusosuasdicasemmeuprojetos!

Responder Compartilhar
brunoumanoatrs

Ola,estoutentandomontarmeubuscadordetodasasformas,masnoestouconseguindo,se
alguempudermeajudar,segueoscodigos:
ArquivodeconexocomoBancodeDados:
conexao.php:
connect_error){
echo'Errodeconexo('.$bdd>connect_errno.')'.$bdd>connect_error
}?>
paginadoformularioondeserafeitaabusca:
publicacao.php:
<formname="searchform"method="post"action="busca.php">
<inputstyle="float:leftwidth:85%height:39pxborderradius:5px0px0px5px"type="text"
name="busca"/>
<inputstyle="borderradius:0px5px5px0px"type="submit"class="botaosim"
value="Procurar"/>
vermais

Responder Compartilhar
TalytaTeixeiraumanoatrs

faltaem
echo"<h3>{$titulo}</h3>"
echo"
{$texto}
"

Responder Compartilhar

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

5/8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

Responder Compartilhar
Marcelobqumanoatrs

Olthiago,comoutilizoofiltropormeiodepost?oproblemaquequandoeumudodepaginao
filtroseperdeemostratodososresultadossemutlizarofiltro,poderiameajudar?
Obrigado

Responder Compartilhar
Marioumanoatrs

Ol.Poderiameexibirocdigofontedonoticia.php?

Responder Compartilhar
AcrossLiuran>Marioumanoatrs

Naverdadeosistemadebuscanoprecisadoarquivo'noticia.php'.Estearquivofoicitado
simplesmenteparaexemplificar,ouseja,quandoousuriofazabuscaeoresultado
mostrado,haverumlinkquelevarparaoutrapgina,nessecasoapginadenotcias,
maspoderiaserqualqueroutra.

Responder Compartilhar
yuriumanoatrs

Eucoloqueiocdigodobusca.phpnoprogramaNetbeans,poremouveumerro(echo"
{$texto}
")exatamentenessaparte..estacontecendoomesmoerronoscript..poderiameajudar?fala
queestcomerrodesintaxe.

Responder Compartilhar
RyderMais2anosatrs

FicoufaltandoapartedaconexoaoBancodeDados...Lembrandoqueamaioriadas
hospedagensnopermitemoMySQLRemotoAcess,portantonecessrioqueoscriptesteja
hospedadonamesmahospedagemdobancodedadosMySQL.
Colocandoessescriptantesde"//ConecteseaoMySQLantesdesseponto"detodaspginas
quetiverissodeveajudar...
Dica:Sequiser,poderemoverosdoisorDiesMessages,msachoquedeixandoelesficamais
fcildesaberquandoderalgumerronaconexo=)
http://RyderMais.esy.es/script...

Responder Compartilhar
Guest>RyderMais2anosatrs

Thiago,noentendiumacoisa:avarivel$linkotermoquedefinimosnophpnoarquivo
"noticias.php"paraestarcomplementandoaURLcomotermodobanco?

Responder Compartilhar
RicardoFriedrich2anosatrs

Oexemplonoestaparecendo,deveestarapontandoproteulocalhost.
osistemasfuncionaseforefetuadaalgumabusca?

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

6/8

23/12/2016

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

osistemasfuncionaseforefetuadaalgumabusca?
Consigousarissocomobaseeadaptarparateratabelajprintadanapgina,eoscamposcom
osfiltroscasoprecisefiltraastabelas?

Responder Compartilhar
RicardoFriedrich>RicardoFriedrich2anosatrs

Eclaro,parabnspelopostepeloblog!:)

Responder Compartilhar
Essecomentrioestaguardandomoderao.Mostrarcomentrio.

ThiagoBelem

Autor >MarcellaMorais 2anosatrs

VocpodeaprendermaissobrebancodedadoseSQL,ocaminhomaissimplespra
busca.

Responder Compartilhar
MarcellaMorais>ThiagoBelem2anosatrs

Hum..Obrigada!Estouconseguindo...
Abraos!

Responder Compartilhar
Ronald2anosatrs

Qualadiferenadeeuusarpaginao?

Responder Compartilhar
AcrossLiuran>Ronaldumanoatrs

Adiferenaqueutilizandopaginaovocedividirosresultadosem'pginas'tipoPgina
1Pagina2Pagina3[...].Casonoutilizepaginaotodooresultadodabuscaser
exibidonamesmapgina,oqueacabasendoinapropriado.

Responder Compartilhar
ThiagoBelem

Autor >Ronald 2anosatrs

Noentendiapergunta,podereformular?

Responder Compartilhar

TAMBMEMTHIAGOBELEM/BLOG

Quantocobrarporumsite?
8comentrios2anosatrs

HelioRubioCamargoMuitoobrigadopelas

informaes..Realmentetbacholegalcobrar
porhora,nuncaapliquei

BloqueandovisitantespeloIPcomMySQL
ePHP
3comentrios2anosatrs

AndreIssomuitoimportantepramuita

gente...Obrigadomeuamigo...Parabns

Editorgrfico(GUI)paraPHP

FunoparavalidaodedatasnoPHP

5comentrios2anosatrs

2comentrios2anosatrs

paulorobsoneuusoelemuitobom,mas

FernandoHenriqueTroqueopreg_split

umpoucopesado

acimaporeste:preg_split("/[\.\/]/",$data)

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

7/8

23/12/2016

umpoucopesado

SistemadebuscaemPHPeMySQLcompaginaoThiagoBelem/Blog

acimaporeste:preg_split("/[\.\/]/",$data)

Inscrevase d AdicioneoDisqusnoseusiteAdicionarDisqusAdicionar

http://blog.thiagobelem.net/sistemadebuscaemphpemysql

Privacidade

8/8