Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Mesmo após 2 cursos de vídeo aulas, entendo muito pouco ainda de PHP.
Estou tentando compreender para adaptar um sistema de busca o qual "aprendi" (pelo menos tentei), através de um curso de php feito por vídeo aulas que comprei (Fabio Godoy), porém o professor não oferece suporte. Fiz o segundo curso(Toscano Mapper), mas apesar de muito bom o conteúdo, não houve continuidade nas aulas e consequentemente fiquei sem entender a aplicabilidade do PHP.
Estrutura do site (libazar.com.br)
Header
Container (Menu - Conteúdo - Menu)
Footer
O sistema de busca que estou mexendo encontra-se no Header, onde o form está assim:
header.php
<form method="post" action="lisBusca.php?mod=busca">
<input type="text" name="pesquisa" id="pesquisa" size="30" placeholder="Pesquisar..." />
<input type="submit" name="busca" id="busca" />
</form>
Onde está escrito ?mod=busca, ele tenta buscar um arquivo dentro através de outro arquivo.
lisPaginas.php
<?
switch($_GET['mod']){
...
case 'busca':
include "modulos/busca/lisBusca.php";
break;
case 'busca-loja':
include "modulos/loja/lisBusca.php";
break;
}
?>
Não entendi muito bem porquê escrever o código ?mod=busca , mas como não estou usando a lisPaginas.php e estou fazendo página por página, acredito que lá em cima devo trocar aquele trexo no lugar de lisBusca.php?mod=busca, colocar apenas lisBusca.php.
Que está assim:
lisBusca.php
<div class="conteudo_int busca">
<div class="topo_int">
<div class="titulo_site">
Resultado da busca por: <?=$_POST['busca']?>
</div>
<div class="busca">
<div class="fundo_busca">
<form name="busca" method="post" action="index.php?mod=busca" onsubmit="return valBusca();">
<input type="text" name="busca" value="<?=$_POST['busca']?>" placeholder="Pesquisar..." />
<button type="submit"></button>
</form>
</div>
</div>
<div class="clear"></div>
</div>
<ul class="lista_busca">
<?
$sql = mysql_query("SELECT * FROM blog WHERE titulo LIKE '%".$_POST['busca']."%' OR resumo LIKE '%".$_POST['busca']."%' OR texto LIKE '%".$_POST['busca']."%' ");
while($ln = mysql_fetch_assoc($sql)){
?>
<li>
<a href="index.php?mod=post&cod=<?=$ln['id']?>">
<span class="sp_titulo">
<?=$ln['titulo']?>
</span>
<span class="sp_desc">
<?=$ln['resumo']?>
</span>
</a>
</li>
<? } ?>
</ul>
<ul class="lista_busca">
<?
$sql = mysql_query("SELECT * FROM institucional WHERE subtitulo LIKE '%".$_POST['busca']."%' OR texto LIKE '%".$_POST['busca']."%' ");
while($ln = mysql_fetch_assoc($sql)){
?>
<li>
<a href="index.php?mod=institucional&cod=<?=$ln['id']?>">
<span class="sp_titulo">
<?=$ln['titulo']?>
</span>
<span class="sp_desc">
<?=substr($ln['texto'],0,255)?>.
</span>
</a>
</li>
<? } ?>
</ul>
</div>
Porém não estou usando banco de dados, pensei em colocar os códigos dentro das páginas dos produtos para que fosse possível procurar pelos parâmetros "title", "descrição" e "características".
Sendo assim pergunto:
1º Devo substituir o index.php?mod=busca, por lisBusca.php diretamente?
2º Em "Resultado da busca por:" não está aparecendo logo após o que eu escrevo para buscar e sim, sempre a mensagem "Buscar" como eu faço pra aparecer o nome daquilo que foi buscado?
3º Como adapto o arquivo lisBusca.php dentro daquilo que preciso sem a necessidade de usar um BD e se isso é possível, acho que fica mais simples, pois se tiver que criar um BD teria que criá-lo do 0.
Sei que vou ter trabalho pra colocar isso página por página, mas isso será o de menos, o principal é aprender como fazer para que o buscador funcione e eu entender o que foi feito na página de busca, pois pretendo criar um buscador eficiente, como tenho aprox. 500 páginas no site acredito que este buscador será de muita ajuda.
Obrigado pelas dicas Prog.
Não é que eu não queira usar banco de dados, é que eu ainda não sei mexer com PHP direito, então quanto mais próximo de HTML ele estiver, menos tempo, talvez, eu leve.
Acredito que esse índice textual será bastante interessante, pois pretendo deixar o buscador buscando tudo que estiver no site mesmo, afinal esse é o objetivo da ferramenta. :P
Estou terminando o módulo 2 do curso de PHP online publicado pelo Fabyo. Ainda vai demorar muito p/ programar por conta, mas sei que chego lá, assim que terminar este módulo irei ler a respeito dessas funções, conforme me instruiu.
Um banco de dados para implementar sua busca seria de fato a melhor opção. Tanto para organizar a informação como para realizar a busca, além da maioria dos motores de SGBDs já ter implementado algum recurso de busca eficiente com indexação.
Continue seus estudos.
Se você não vai usar banco, pode estudar funções para abrir/ler - fopen() e fread() - arquivos e funções para busca usando expressões regulares - preg_match().
Com a experiência você pode criar um índice textual das suas páginas. Isto vai facilitar e aumentar a performance da busca, mas isto apenas se quiser seguir com a ideia de não usar banco de dados.
Boa sorte.