El mismo script que te passe...

Soy masoca...
¿Sabes cómo podría listar los contenidos ordenándolos por fecha de creación de la carpeta?
He probado con el sort() pero no conseguí mejoras

1 Respuesta

Respuesta
1
Para ordenarlos por fecha de creación, tendrías que modificar la rutina para almacenar los directorios en una matriz asociativa con su nombre y su fecha de creación en el índice:
<?php
$dirs = array("2008-11-23"=>"UnDir", "2008-09-01"=>"OtroDir");
$dirs["2008-12-30"] = "Yotromas";
ksort($dirs);
reset($dirs);
while (list($key, $val) = each($dirs)) {
echo "$key = $val\n";
}
?>
Fíjate que tienes que colocar en el índice la fecha en formato "año-mes-día" poniendo ceros de relleno si hace falta. Esto te dará el orden deseado.
Esto puede tener el inconveniente de que si hay más de un directorio creado en una misma fecha, se superpondrían. Para evitarlo puedes añadir un índice incremental al final de la fecha:
$dirs["20008-12-30-05"] = "OtroDirmas";
Hola david y gracias por tu interés de nuevo...
El tema es que tengo que insrtarlo en el código que ya tengo ... lo puse así pero me imprime dos cosas a la vez:
Untitled Document
$dirs = array("2008-11-10"=>"EXPOSICIO COL.LECTIVA 2008", "2008-11-13"=>"varis");
$dirs["2008-12-30"] = "Yotromas";
ksort($dirs);
reset($dirs);
while (list($key, $val) = each($dirs)) {
echo "$key = $val\n";
}
?>
function folderlist(){
$startdir = './uploadg/';
$ignoredDirectory[] = '.';
$ignoredDirectory[] = '..';
$i=1;
if (is_dir($startdir)){
if ($dh = opendir($startdir)){
while (($folder = readdir($dh)) !== false){
if (!(array_search($folder,$ignoredDirectory) > -1)){
if (filetype($startdir . $folder) == "dir"){
$directorylist[$startdir . $folder]['name'] = $folder;
$directorylist[$startdir . $folder]['path'] = $startdir;
}
}
}
closedir($dh);
}
}
return($directorylist);
}
$folders = folderlist();
foreach ($folders as $folder){
$path = $folder['path'];
$name = $folder['name'];
$i++;
asort($folder);
echo "$i. <a href='$path$name'>$name</a><br /><br />";
";
}
?>
el resultado es:
2008-11-10 = EXPOSICIO COL.LECTIVA 2008 2008-11-13 = varis 2008-12-30 = Yotromas 1. EXPOSICIO COL.LECTIVA 2008
2. varis

i los que necesito que me ordene son los que están en negrita
Yo te puse un ejemplo porque no disponía del código original y para que lo adaptaras al tuyo.
Debería ser algo así:
<?php
$dirs = array("2008-11-10"=>"EXPOSICIO COL.LECTIVA 2008", "2008-11-13"=>"varis");
$dirs["2008-12-30"] = "Yotromas";
ksort($dirs);
reset($dirs);
while (list($key, $val) = each($dirs)) {
echo "$key = $val\n";
}
?>
function folderlist(){
$startdir = './uploadg/';
$ignoredDirectory[] = '.';
$ignoredDirectory[] = '..';
$j=1;
if (is_dir($startdir)){
if ($dh = opendir($startdir)){
while (($folder = readdir($dh)) !== false){
if (!(array_search($folder,$ignoredDirectory) > -1)){
if (filetype($startdir . $folder) == "dir"){
$fecha = date('Y-m-d-', filectime($startdir . $folder) . sprintf("%03s", $j++);
$directorylist[$fecha]['name'] = $folder;
$directorylist[$fecha]['path'] = $startdir;
}
}
ksort($directorylist);
}
closedir($dh);
}
}
return($directorylist);
}
$folders = folderlist();
reset($folders);
foreach ($folders as $folder){
$path = $folder['path'];
$name = $folder['name'];
$i++;
asort($folder);
echo "$i. <a href='$path$name'>$name</a><br /><br />";
";
}
?>
hey crack, esto no funciona...
Ni tan solo muestra nada el php...
Te quería comentar que el encomiable tiempo que gastas conmigo... sirva para algo ...
Mira como ser que se pierde código por el camino... en esta web...
Si te parece me puedes mandar un e-mail a : bescale-at-yahoo. Es
Mil y más gracias
Necesito por todos los medios que esta historia me funcione... XD
Aquí tienes el código corregido. Lo he comprobado y parece que funciona correctamente:
<?php
function folderlist(){
$startdir = './uploadg/';
$ignoredDirectory[] = '.';
$ignoredDirectory[] = '..';
$j=0;
if (is_dir($startdir)){
if ($dh = opendir($startdir)) {
while (($folder = readdir($dh)) !== false) {
if (!(array_search($folder,$ignoredDirectory) > -1)) {
if (filetype($startdir . $folder) == "dir") {
$fechas[date('Y-m-d-', filectime($startdir . $folder)) . sprintf("%03s", $j)] = $j;
$directorylist[$j]['name'] = $folder;
$directorylist[$j]['path'] = $startdir;
$j++;
}
}
}
closedir($dh);
}
}
ksort($fechas);
$i = 1;
reset($fechas);
foreach ($fechas as $fecha => $valor){
echo "$i. <a href='" . $directorylist[$valor]["path"] . $directorylist[$valor]["name"] . "'>" . $directorylist[$valor]["name"] . "</a><br /><br />";
$i++;
}
}
folderlist();
?>

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas