opendir, sort

Status
Niet open voor verdere reacties.

chandlurmark

Gebruiker
Lid geworden
12 mrt 2008
Berichten
58
Hey, ik ben al een tijdje opzoek maar kan het niet vinden. ik heb een mooi script dat de data in een directory laat zien in een tabel. Nu wil ik het laten sorteren op naam of op datum, weet iemand toevallig hoe ik dit doe?

<?php
$file = explode("/",$_SERVER['SCRIPT_FILENAME']);
$fileblocked = $file[sizeof($file)-1]; //outputs: this->filename


$time = explode(" ", microtime());
$startTime = $time[1] + $time[0];

// de cache van de server legen
clearstatcache();

// functie om de grootte om te zetten van bytes naar een duidelijkere grootte
function size($filesize)
{
if($filesize >= 1048576)
$size = number_format(($filesize / 1048576), 2) . " MB";
elseif($filesize >= 1024)
$size = number_format(($filesize / 1024),0) . " KB";
elseif($filesize >= 0)
$size = $filesize . " bytes";
else
$size = "0 bytes";

return $size;
}


// alles in een array zetten
if(isset($_GET['dir'])) $dir = $_GET['dir'];
else $dir = ".";

// mappen...
$openDir = opendir(".");
while (false !== ($dir = readdir($openDir)))
{
if ($dir != "." && $dir != ".." && $dir != "browser" && is_dir($dir))
{
$data['dir'][] = $dir;
}
}
@sort($data['dir']);
closedir($openDir);

// controleren of de dir uit de url wel bestaat
$url = "bad";

if(isset($_GET['dir']))
{
for($i = 0; $i < count($data['dir']); $i++)
{
if($_GET['dir'] == $data['dir'][$i])
{
$url = "good";
break;
}
}
}

if($url == "bad" AND isset($_GET['dir']))
{
echo "niet *****n met de url!";
exit();
}

// bestanden...
if(isset($_GET['dir'])) $dir = $_GET['dir'];
else $dir = ".";

$openDir = opendir($dir);
while(false !== ($file = readdir($openDir)))
{
if (is_file($dir."/".$file) && $file != $fileblocked)
{
$data['file']['name'][] = $file;
$data['file']['url'][] = $dir ."/". $file;

$file = $dir."/".$file;
$data['file']['size'][] = filesize($file);
$data['file']['date'][] = filemtime($file);
$data['file']['type'][] = strtolower(strrchr($file,'.'));
}
}
closedir($openDir);
@asort($data['file']['name']);

//
// oke, alles staat nu in een array. nu kunnen we het makkelijk ophalen.
// nu is het alleen een beetje html met wat php meuk erin om alles weer te geven. het makkelijke dus :)
//

?>
<html>
<head>
<title>Privé upload voor my TEAM !</title>

<style type="text/css">
<!--
body, td {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 11px;
color: #000000;
}
.mappen {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #000000;
background-color: #CCCCCC;
}
.sub {
font-family: Verdana, Arial, Helvetica, sans-serif;
font-size: 10px;
color: #333333;
background-color: #FFFFFF;
}
.header {
font-family: Arial, Helvetica, sans-serif;
font-size: 11px;
font-weight: bold;
color: #FFFFFF;
background-color: #1E2983;
}
h2 {
margin: 0px;
padding: 0px;
}
a {
color: #000000;
text-decoration: none;
}
a:hover {
color: #1E2983;
text-decoration: underline;
}
-->
</style>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_jumpMenu(targ,selObj,restore){ //v3.0
eval(targ+".location='"+selObj.options[selObj.selectedIndex].value+"'");
if (restore) selObj.selectedIndex=0;
}
//-->
</script>
</head>
<body bgcolor="#FFFFFF">
<table width="600" border="0" align="center" cellpadding="4" cellspacing="0">
<tr>
<td colspan="3" class="header">Privé upload voor my TEAM !
<h2><? echo "/". htmlspecialchars($_GET['dir']); ?></h2></td>
</tr>
<tr>
<td class="mappen"> <select class="mappen" name="dirs" onChange="MM_jumpMenu('parent',this,0)">
<option value="#" selected>Kies een ****ing map</option>
<option value="#">-----------------</option>
<option value="?">/</option>
<?php

for($i = 0; $i < count($data['dir']); $i++)
{
echo " <option value=\"?dir=". $data['dir'][$i] ."\">/". $data['dir'][$i] ."</option><br>\n";
}

?>
</select> </td>
<td colspan="2" align="right" class="mappen"><a href="upload.php?dir=<?=$_GET['dir']; ?>"></a></td>
</tr>
<tr>
<td bgcolor="#FFFFFF"><b>Bestandsnaam</b></td>
<td bgcolor="#FFFFFF" width="70"><b>Grootte</b></td>
<td bgcolor="#FFFFFF" width="70"><b>Datum</b></td>
</tr>
<?php

$number = count($data['file']['name']);

if($number == "0")
{
echo " <tr>\n";
echo " <td colspan=\"4\" bgcolor=\"#FFFFFF\" align=\"center\">Deze map is nog helemaal leeg!</td>\n";
echo " </tr>\n";
}
else
{
for($i = 0; $i < $number; $i++)
{
$bgcolor = ($i % 2) ? "#f5f5f5" : "#ffffff";

echo " <tr>\n";
echo " <td bgcolor=\"". $bgcolor ."\" width=\"460\"><a target=\"scherm\" href=\"". htmlspecialchars($data['file']['url'][$i]) ."\">". htmlspecialchars($data['file']['name'][$i]) ."</a></td>\n";
echo " <td bgcolor=\"". $bgcolor ."\" width=\"70\">". size($data['file']['size'][$i]) ."</td>\n";
echo " <td bgcolor=\"". $bgcolor ."\" width=\"70\">". date("d-m-y", $data['file']['date'][$i]) ."</td>\n";
echo " </tr>\n";
}
}

?>
<tr>
<td colspan="3" bgcolor="#FFFFFF" height="6"> </td>
</tr>
<tr>
<td class="mappen"> <select class="mappen" name="dirs" onChange="MM_jumpMenu('parent',this,0)">
<option value="#" selected>Kies een ****ing map</option>
<option value="#">-----------------</option>
<option value="index.php">/</option>
<?php

for($i = 0; $i < count($data['dir']); $i++)
{
echo " <option value=\"?dir=". $data['dir'][$i] ."\">/". $data['dir'][$i] ."</option><br>\n";
}

?>
</select> </td>
<td colspan="2" align="right" class="mappen">&nbsp;</td>
</tr>
<tr>
<td height="20" colspan="3" class="sub" align="center">
</td>
</tr>
</table>
</body>
</html>
 
Ja maar ik heb echt alles al geprobeerd, en niks helpt, ik kan niet zo maar ff knutselen in dat php script.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan