Beruflich Dokumente
Kultur Dokumente
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
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>
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>";
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
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
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
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