Buscar después de listar directorio en PHP

ReYzell

Tengo este código que me lista todos los archivos que hay en el directorio y da la opción de descargar el archivo. Como con apache pero sin el xD.

Lo que quiero es en la tabla donde esta "referencia" poner "buscar: "

Que pongan la referencia y:

  • o le lleve el cursor hasta ella
  • o liste solo las que tengan coincidencias.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fichas Tecnicas</title>
</head>


<?php 
$dir = opendir("."); 
while($name = readdir($dir)){ 
$files[] = $name; 
} 
closedir($dir); 

sort($files); 
$tot_files	= count($files); 

$list_files=''; 
for($index=0; $index < $tot_files; ++$index) { 
if (substr($files[$index],0,1) != "."){ 
$list_files.=' 

<tr> 
<td><a href="'.$files[$index].'">'.$files[$index].'</a></td> 
<td>'.filetype($files[$index]).'</td> 
<td>'.filesize($files[$index]).'</td> 
<td>'.date ("d-m-Y H:i:s", filemtime($files[$index])).'</td> 
</tr> 
'; 
} 
} 
echo ' 
<table width="710" cellpadding="4" cellspacing="5" border="2"> 
<tr> 
<th>Referencia</th> 
<th>Tipo</th> 
<th>Tamaño</th> 
<th>Fecha Mod</th> 

</tr> 
'.$list_files.' 
</table> 
'; 
?> 
<body>
</body>
</html>

He pensado en poner una nota que sugiera el Ctrl+F (aunque me parece cutre).

Por cierto tengo poquísima experiencia en programación de cualquier tipo y esta hecho con google + lo que acuerdo del modulo y no se por donde tirar.

MisKo

Vale, la mayoria de lo que pides ( que se mueva el cursor hasta X cosa , o que solo se muestren X resultados mientras se escribe ) se hace mediante javascript, no con php.

Lo que se me ocurre, es que uses jQuery.

Por lo que veo, en el list file, por cada articulo, creas una fila , en la cual el primer TD es la referencia.

lo que se me ocurre es que pruebes a cambiar esto

<tr> 
<td><a href="'.$files[$index].'">'.$files[$index].'</a></td> 
<td>'.filetype($files[$index]).'</td> 
<td>'.filesize($files[$index]).'</td> 
<td>'.date ("d-m-Y H:i:s", filemtime($files[$index])).'</td> 
</tr> 

por esto

<tr> 
<td id="'.$files[$index].'"><a href="'.$files[$index].'">'.$files[$index].'</a></td> 
<td>'.filetype($files[$index]).'</td> 
<td>'.filesize($files[$index]).'</td> 
<td>'.date ("d-m-Y H:i:s", filemtime($files[$index])).'</td> 
</tr> 

Y en el campo buscar, crees una funcion en javascript que te lleve hasta dicho identificador, no se si poniendolo en un TD funcionará, pero haz la prueba:

Imaginemos que el input dd el usuario pone la referencia se llama ref

pues la funcion en javascript seria algo asi


function irHastaLaReferencia()
{
$("#"+$("#ref").val()).focus() ;
}

esto seria tomando que "$files[$index]" es la referencia del producto

1 respuesta
ReYzell

#2 Gracias tío ahora pruebo y te cuento!

1 respuesta
MisKo

#3 Te lo dejo montado aqui:



<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Fichas Tecnicas</title>
</head>
<script src="/js/jquery-1.7.1.min.js"></script>
<body>
<?php 
$dir = opendir("."); 
while($name = readdir($dir)){ 
$files[] = $name; 
} 
closedir($dir); 

sort($files); 
$tot_files      = count($files); 

$list_files=''; 
for($index=0; $index < $tot_files; ++$index) { 
if (substr($files[$index],0,1) != "."){ 
$list_files.=' 

<tr> 
<td><a href="'.$files[$index].'">'.$files[$index].'</a></td> 
<td>'.filetype($files[$index]).'</td> 
<td>'.filesize($files[$index]).'</td> 
<td>'.date ("d-m-Y H:i:s", filemtime($files[$index])).'</td> 
</tr> 
'; 
} 
} 
echo ' 
<table width="710" cellpadding="4" cellspacing="5" border="2"> 
<tr> 
<th><input type=text id=ref><input type=button value="ir" onclick="irHastaLaReferencia()"></th> 
<th>Tipo</th> 
<th>Tamaño</th> 
<th>Fecha Mod</th> 

</tr> 
'.$list_files.' 
</table> 
'; 
?> 
</body>
<script>
function irHastaLaReferencia()
{
    referencia = $("#ref").val() ;
    $('a[href="' + referencia +'"]' ).focus() ;    
} </script> </html>
MisKo

he modificado el codigo anterior, en vez de buscar el TD, busco directamente el enlace con ese texto, y voy hacia el.

Con el TD no me funcionaba, con el codigo de arriba ya me ha funcionado correctamente.

=)

Usuarios habituales

  • MisKo
  • ReYzell