Jump to content


Photo

Sistema De Busca No Diretório, Não Em Banco De Dados


  • Faça o login para participar
7 replies to this topic

#1 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 17/10/2008, 12:37

Bom dia galera, bom estou com probleminha, mas me parece ser bem simples de resolver. Vamos lá.

Crei um sistema de busca bem simples. Este sistema busca dentro do diretorio ou pasta que se chama "PDF" dentro do servidor.
Essa pasta tem arquivos pdf que teram nome de clientes - lucio_guia.pdf - lucio_curriculo.pdf - eduardo_guia.pdf i dai vai com doc e outras extensões.

Gostaria que: quando eu digitar no box da busca lucio buscasse todos os arquivos com o nome lucio e mostrasse como link em uma página.

Tentei criar um sistema mas não está buscando. Talvez eu fiz algo de errado, mas gostaria que vocês me ajudasse a resolver.
Sou um pouco leigo e acabo apanhado nesses casos de desenvolvimento.

Código está abaixo:

Este é o box que digito o nome do arquivo para buscar:

<html>
<head>
<title>Documento sem t&iacute;tulo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form action="mostra_busca.php" method="post">
busca arquivos com...
<input type="text" name="arquivo" value="">
<input name="Busca" type="submit" value="Busca">
</form>

</body>
</html>

Este é o que busca e mostra os arquivos:

<?
include"acesso.php";

if($_POST['busca']){
$palavra = $_POST['arquivo'];

$diretorio = "pdf/"; // diretório para a busca

// *.* é todos arquivos de todas extensões do diretório

foreach (glob("$diretorio/*.*") as $arquivo) {
$arquivo = glob("outro/diretocio/*.*");


$separa = explore("/", $arquivo);

if(strstr($separa[1], $palavra)==TRUE) {

print "$separa[1]<br>";

}
}
echo "Foram encontrados $palavra arquivos.";
}
?>

Muito obrigado e agradeço desde já...

Lúcio Marques

#2 hlegius

hlegius

    Turista

  • Usuários
  • 58 posts
  • Sexo:Masculino
  • Localidade:Guarulhos, SP
  • Interesses:Google Talk: hlegius em gmail ponto com

Posted 17/10/2008, 12:51

Oi,

Cara, dando uma lida rápida no método glob() - http://br.php.net/glob é possível entender que ele por si só já faz a busca que você precisa.
Veja, criei um exemplo aqui rapidinho só para exemplificar a idéia:

<?php
$nome = "g";

$arquivos_pattern = glob($nome . "*.*");

if($arquivos_pattern !== false) {
  foreach($arquivos_pattern as $arquivo) {
	echo $arquivo . "<br />";
  }
}
?>

ele lista qualquer arquivo que comece com $nome e tenha qualquer extensão.
Então algo válido seria:

gol.php
glob.php
glob.txt
glib.c

Dê uma lida no método e faça as alterações necessárias. Em caso de dúvidas, torne a postar !


Abraço!

Edição feita por: hlegius, 17/10/2008, 12:51.

hlegius.
http://www.hlegius.pro.br | http://www.programe.me
ArchLinux - A simple lightweight Linux distribution

#3 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 17/10/2008, 14:13

Fazendo uma adaptação:

[codebox]
<?php
$nome = 'e';
$dir = 'teste/';

$arquivos_pattern = glob($dir . $nome . "*.*");
$i = 0;

if($arquivos_pattern !== false) {
foreach($arquivos_pattern as $arquivo) {
echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />";
$i++;
}
echo $i > 0 ? "<br>" : NULL;
}

echo "Foram encontrados <strong>".$i."</strong> registros";
?>
[/codebox]

Até mais ^_^

Edição feita por: Dudu, 17/10/2008, 14:16.

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#4 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 17/10/2008, 15:27

Bom Dudu, eu fiz assim, mas continua não dando certo até tentei com o do amigo de cima mas também não.

<?php

$arquivo = $_POST['arquivo'];

$nome = 'e';

$dir = 'pdf/';

$arquivos_pattern = glob($dir . $nome . "*.*");

$i = 0;if($arquivos_pattern !== false) {
	
	foreach($arquivos_pattern as $arquivo) {
		
echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />";

$i++;}echo $i > 0 ? "<br>" : NULL;

}

echo "Foram encontrados <strong>".$i."</strong> registros";

?>


Fazendo uma adaptação:

<?php$nome = 'e';$dir  = 'teste/';$arquivos_pattern = glob($dir . $nome . "*.*");$i = 0;if($arquivos_pattern !== false) {	foreach($arquivos_pattern as $arquivo) {		echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />";		$i++;	}	echo $i > 0 ? "<br>" : NULL;}echo "Foram encontrados <strong>".$i."</strong> registros";?>

Até mais ^_^



Bom, Hlegius, testei com seu código e o do Dudu, mas ainda continua não buscando. colocquei assim:

<?php

$arquivo = $_POST['arquivo'];

$nome = "pdf";

$arquivos_pattern = glob($nome . "*.*");
//$arquivos_pattern = glob($nome . "*.*");

if($arquivos_pattern !== false) { 

foreach($arquivos_pattern as $arquivo) {	

echo $arquivo . "<br />";  
}
}

?>

Oi,

Cara, dando uma lida rápida no método glob() - http://br.php.net/glob é possível entender que ele por si só já faz a busca que você precisa.
Veja, criei um exemplo aqui rapidinho só para exemplificar a idéia:

<?php
$nome = "g";

$arquivos_pattern = glob($nome . "*.*");

if($arquivos_pattern !== false) {
  foreach($arquivos_pattern as $arquivo) {
	echo $arquivo . "<br />";
  }
}
?>

ele lista qualquer arquivo que comece com $nome e tenha qualquer extensão.
Então algo válido seria:

gol.php
glob.php
glob.txt
glib.c

Dê uma lida no método e faça as alterações necessárias. Em caso de dúvidas, torne a postar !


Abraço!


Esse código baixo que representa é: nome da pasta ou diretorio onde faz a busca. trocar teste por outro nome de diretorio que eu tiver?

$dir = 'teste/';



Bom Dudu, eu fiz assim, mas continua não dando certo até tentei com o do amigo de cima mas também não.

<?php

$arquivo = $_POST['arquivo'];

[code]$nome = 'e';

$dir = 'pdf/';

$arquivos_pattern = glob($dir . $nome . "*.*");

$i = 0;if($arquivos_pattern !== false) {

foreach($arquivos_pattern as $arquivo) {

echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />";

$i++;}echo $i > 0 ? "<br>" : NULL;

}

echo "Foram encontrados <strong>".$i."</strong> registros";

?>[/code]


Fazendo uma adaptação:

<?php$nome = 'e';$dir  = 'teste/';$arquivos_pattern = glob($dir . $nome . "*.*");$i = 0;if($arquivos_pattern !== false) {	foreach($arquivos_pattern as $arquivo) {		echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />";		$i++;	}	echo $i > 0 ? "<br>" : NULL;}echo "Foram encontrados <strong>".$i."</strong> registros";?>

Até mais ^_^



Bom, Hlegius, testei com seu código e o do Dudu, mas ainda continua não buscando. colocquei assim:

<?php

$arquivo = $_POST['arquivo'];

$nome = "pdf";

$arquivos_pattern = glob($nome . "*.*");
//$arquivos_pattern = glob($nome . "*.*");

if($arquivos_pattern !== false) { 

foreach($arquivos_pattern as $arquivo) {	

echo $arquivo . "<br />";  
}
}

?>

Oi,

Cara, dando uma lida rápida no método glob() - http://br.php.net/glob é possível entender que ele por si só já faz a busca que você precisa.
Veja, criei um exemplo aqui rapidinho só para exemplificar a idéia:

<?php
$nome = "g";

$arquivos_pattern = glob($nome . "*.*");

if($arquivos_pattern !== false) {
  foreach($arquivos_pattern as $arquivo) {
	echo $arquivo . "<br />";
  }
}
?>

ele lista qualquer arquivo que comece com $nome e tenha qualquer extensão.
Então algo válido seria:

gol.php
glob.php
glob.txt
glib.c

Dê uma lida no método e faça as alterações necessárias. Em caso de dúvidas, torne a postar !


Abraço!



#5 hlegius

hlegius

    Turista

  • Usuários
  • 58 posts
  • Sexo:Masculino
  • Localidade:Guarulhos, SP
  • Interesses:Google Talk: hlegius em gmail ponto com

Posted 17/10/2008, 16:02

Oi,

Cara, aposto que não deu uma lida no manual da função glob né ?
Veja: http://br.php.net/glob

Veja como funciona a função e compare com o modelo que eu te apresentei acima. Repare que é necessário ajustar para sua necessidade.

Tendo dificuldades, poste novamente !

Abraço!
hlegius.
http://www.hlegius.pro.br | http://www.programe.me
ArchLinux - A simple lightweight Linux distribution

#6 xulambs

xulambs

    12 Horas

  • Usuários
  • 162 posts
  • Sexo:Masculino

Posted 17/10/2008, 16:24

Meu amigo hlegius, eu li sim, e já agradeço a sua pessoa e também o Dudu pela força. Muito obrigado. A leitura realmente é a mais importante da vida da gente.

estava tudo que eu queria nesse link que você me passou.

Bom, enfim conseguir.

Se a política do brasil fosse assim, como nós, sempre ajudando uns ao outros, não haveria país algum que nos segurasse com tanta grandeza e criatividade que nós brasileiros, tem.

estou deixando o código caso alguem denha dúvida ou precise.

O meu ficou assim:

<?php

$arquivo = $_POST['arquivo'];

$nome = "$arquivo";

$dir  = 'diretorio/';

$arquivos_pattern = glob($dir . $nome . "*.*");

$i = 0;

if($arquivos_pattern !== false) {		

foreach($arquivos_pattern as $arquivo) {				

echo "<a href=\"".$arquivo."\">" . basename($arquivo) . "</a><br />";				

$i++;		
}		
echo $i > 0 ? "<br>" : NULL;
}

echo "Foram encontrados <strong>".$i."</strong> registros";

?>

Oi,

Cara, aposto que não deu uma lida no manual da função glob né ?
Veja: http://br.php.net/glob

Veja como funciona a função e compare com o modelo que eu te apresentei acima. Repare que é necessário ajustar para sua necessidade.

Tendo dificuldades, poste novamente !

Abraço!



#7 Dudu

Dudu

    Viva la vida

  • Usuários
  • 1437 posts
  • Sexo:Masculino
  • Localidade:Uberlândia - MG
  • Interesses:PHP

Posted 17/10/2008, 16:28

Exatamente igual ao que te passei... ¬¬

Até mais ^_^

Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Moderador


Twitter: HostCheap


#8 marcos223

marcos223

    Novato no fórum

  • Aguardando Liberação
  • 20 posts
  • Sexo:Não informado

Posted 02/02/2016, 22:46

Fucionou perfeitamente o problema é que só lista arquivos em pdf, se listasse todas as extensões seria perfeito






1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq