Foros del Web » Programando para Internet » PHP »

Motor de busqueda dentro de los directorios..

Estas en el tema de Motor de busqueda dentro de los directorios.. en el foro de PHP en Foros del Web. Saludos, pues tengo que hacer un motor de busqueda sin base de datos a todo un listado que me muestra con el gestor de directorios... ...
  #1 (permalink)  
Antiguo 23/06/2007, 11:59
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Motor de busqueda dentro de los directorios..

Saludos, pues tengo que hacer un motor de busqueda sin base de datos a todo un listado que me muestra con el gestor de directorios...
Es decir, tnego el script que me muestra todo el contenido de un directorio y ahora tengo que hacer un formulario que me sirva para buscar cualquier archivo que esté en esa carpeta.

Espero sus ayudas lo mas rapido posible.
Gracias
  #2 (permalink)  
Antiguo 23/06/2007, 12:42
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Motor de busqueda dentro de los directorios..

Hola, has un bucle for utilizando scandir() o readdir() segun se adapte mejor y para seguir adentrandote en subdirectorios utiliza is_dir() para comprobar que es un subdirectorio y no un fichero.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #3 (permalink)  
Antiguo 23/06/2007, 12:48
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Hmm si, te entiendo... pero me pòdrias poner algo de codigo?
Te digo que nunca hice un buscador para directorios, solamente habia hecho uno sencillo, pero con bd...
Saludos
  #4 (permalink)  
Antiguo 23/06/2007, 14:23
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Motor de busqueda dentro de los directorios..

Hola, te he creado un pequeño código, donde en primer lugar, arroja todo el contenido del directorio e identifica si cada elemento listado es un archivo o un directorio:

Código PHP:
$dir "carpeta/"## Directorio a examinar

if (is_dir($dir)) { ## Compruebo que realmente sea un directorio y exista
    
if ($midir opendir($dir)) { ## Abro el directorio
        
while (($archivo readdir($midir)) !== false) { ## Lee el directorio archivo por archivo
            
if(filetype($dir $archivo) == "dir"){ 
                echo 
"Directorio: ".$archivo## Ahora sé que este archivo es realmente un directorio
            
}else{ 
                echo 
"Archivo: ".$archivo## Ahora sé que este archivo es realmente un archivo
            
}
            echo 
"<br>"## Provoco un salto de línea
        
}
        
closedir($midir); ## Cierra el directorio
    
}

Con lo cual al identificar que es un directorio puedes seguir examinandolo entrando en él con chdir() por ejemplo.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #5 (permalink)  
Antiguo 23/06/2007, 14:38
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Claro, yo me exprese mal... lo que hay que hacer es un formulario de una sola linea del cual me permita ingresar un texto y que busque lo que inserte en el formulario en todo el folder... no se si me entienden?
Buscar: <input type="text" name="buscar">
Busca en todos los archivos del directorio, y si encuentra resultados, que me muestre los que encontro...

Gracias por tu ayuda, pero ese ejemplo me sirve para identificar si es carpeta o no...
  #6 (permalink)  
Antiguo 23/06/2007, 15:26
Avatar de RUX
RUX
 
Fecha de Ingreso: enero-2004
Ubicación: Las Palmas de Gran Canari
Mensajes: 566
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: Motor de busqueda dentro de los directorios..

Hola otra vez, pues solo hay que estirar un poco el código, ahora te comprueba si el archivo escrito en el campo de texto, existe en el directorio carpeta.

Código PHP:
<?php 

if(!empty($_POST['file'])){ 

$dir "carpeta/"## Directorio a examinar

if (is_dir($dir)) { ## Compruebo que realmente sea un directorio y exista
    
if ($midir opendir($dir)) { ## Abro el directorio
        
while (($archivo readdir($midir)) !== false) { ## Lee el directorio archivo por archivo
            
if(filetype($dir $archivo) == "dir"){ 
                
$folders .= $archivo.";";
            }else{ 
                
$files .= $archivo.";";
            }
        }
        
closedir($midir); ## Cierra el directorio
    
}
}

$files explode(";"$files);
$total_files count($files);

if(
in_array($_POST['file'], $files)){ 
    echo 
"Existe el archivo";
}else{ 
    echo 
"El archivo no se ha encontrado";
} } 
?>
<form name="busca_file" method="post" action="">
    <input name="file" type="text">
    <input name="boton" type="submit" value="Buscar">
</form>
Puedes hacerlo mismo también con el directorio.

SALUDOS
Ruymán Trujillo
__________________
Rux.es - Sitio Personal | IslaRock.com - Todo Rock
  #7 (permalink)  
Antiguo 25/06/2007, 11:10
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Bárbaro, el script funciona... pero la idea estaría buena si me puede mostrar el resultado...o sea, todos los resultados coincidentes... y si es posible, que tambien me muestre los resultados con algunas palabras y no las exactas... o sea:
Si busco "Hola Gente.html" me muestra solamente si encontro ese archivo, pero estaria bueno que me muestre todos los archivos que contengan "Hola" y todos los que contengan "Gente"... se entiende?
Gracias
  #8 (permalink)  
Antiguo 25/06/2007, 12:49
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Motor de busqueda dentro de los directorios..

Con este codigo tendras en $files todos los archivos que contengan la palabra buscada, en $folders todos los subdirectorios.

Código PHP:
<?php 

if(!empty($_POST['file'])){ 

$dir "carpeta/"## Directorio a examinar

if (is_dir($dir)) { ## Compruebo que realmente sea un directorio y exista
    
if ($midir opendir($dir)) { ## Abro el directorio
        
while (($archivo readdir($midir)) !== false) { ## Lee el directorio archivo por archivo
            
if(strpos($archivo$_POST['file']) === false) continue;
            if(
filetype($dir $archivo) == "dir"){ 
               
$folders[] = $archivo;
            }else{ 
               
$files[] = $archivo
             }
        }
        
closedir($midir); ## Cierra el directorio
    
}
}

if(
$files){ 
   echo 
"Hay ".count($files)." archivos con $_POST['file'] en su nombre:<br/>";
   echo 
implode(" , ",$files)."<br/>";
}else{ 
    echo 
"No hay archivos con $_POST['file'] en su nombre";
}

if(
$folders){ 
   echo 
"Hay ".count($folders)." subdirectorios con $_POST['file'] en su nombre:<br/>";
   echo 
implode(" , ",$files)."<br/>";
}else{ 
    echo 
"No hay archivos con $_POST['file'] en su nombre";
}
}
echo 
"Debes introducir una palabra para la busqueda.<br/>";
?>
<form name="busca_file" method="post" action="">
    <input name="file" type="text">
    <input name="boton" type="submit" value="Buscar">
</form>
Rux , perdon por usar tu codigo.
  #9 (permalink)  
Antiguo 25/06/2007, 13:04
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Gracias Tio, a ver que sale...
  #10 (permalink)  
Antiguo 25/06/2007, 13:41
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Claro, ahora funciona como yo queria...
Pero, trate de hacer para que pueda acceder al archivo, pero usando $_POST['file'] no funciona, porque es algo logico, solamente aparece en nuestra URL index.php/ruta/lodelbuscador y no seria lo correcto, probe tambien con $archivo, pero tampoco funciona...
Existe alguna manera de que me abra el archivo? obviamente, al que le haga clic...
Gracias
  #11 (permalink)  
Antiguo 25/06/2007, 16:29
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Porque el codigo ese esta aca:
Código:
if($files){  
   echo "Hay ".count($files)." archivos con ". $_POST['file'] ."en su nombre:<br/>"; 
   echo "<a href='$ruta".$archivo."'>". implode(" , ",$files)."</a><br/>\n"; 
   echo "\n<a href='pagina.php'>Limpiar Buscador</a><br>";
}
Donde está $archivo es donde tengo que cambiar para poder acceder al archivo!... no se que poner ahi...a ver si alguien ayuda...
Nos vemos
  #12 (permalink)  
Antiguo 25/06/2007, 17:18
 
Fecha de Ingreso: abril-2007
Mensajes: 144
Antigüedad: 17 años
Puntos: 4
Re: Motor de busqueda dentro de los directorios..

los archivos que coinciden con la busqueda estan en $files
Si lo que quieres es poner un enlace para cada archivo puedes hacer esto:

Código PHP:
if($files){  
   echo 
"Hay ".count($files)." archivos con "$_POST['file'] ."en su nombre:<br/>"
   foreach(
$files as $archivo){
       echo 
"<a href='{$ruta}/{$archivo}'> $archivo </a><br/>\n"//He puesto la '/' entre $ruta y $archivo porque no se si tu $ruta la incluye al final.
   
}
   echo 
"\n<a href='pagina.php'>Limpiar Buscador</a><br>";

PD: Por cierto, son 20€ por el script. Je Je
  #13 (permalink)  
Antiguo 25/06/2007, 19:00
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 18 años, 10 meses
Puntos: 23
Re: Motor de busqueda dentro de los directorios..

Bien, gracias!
Ahora una sola cosa y dejo de postear en este topic, le quiero agregar una lista desplegable y que busque segun lo que seleccione en la lista... Obviamente que busque dentro del directorio pero con la limitacion de lo que pido en la lista de desplazaminento, en este caso quiero que me busque por ejemplo el archivo "hola" pero con la condicion de la lista desplegable en "html"...a ver como se hace..
Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:25.