How do I list the contents of a folder and make them clickable links?



The thought process:

Example


<?PHP


#########################################
#
# list_dir_files.php
#
#    This is a compilation and modification of 
#    several scripts, snippets, tutorials and
#    examples from the manual
#
#    Major credit goes to phpDIRList 2.0 - (c)2005 Ulrich S. Kapp :: Systemberatung :: web-programmierung
#
#    The script reads through a given folder
#    and displays the files contained therein
#
#    There are five variables you may alter
#
#    1.    $allowed_ext - this array is used to set which
#        type of file will be listed
#
#    2.    $directory - this is used to set which directory
#        will be searched/listed
#
#    3.    $do_link - TRUE means display the file
#        name as a link to the file; FALSE means
#        do NOT make the name a link
#
#    4.    $sort_what - this determines what the
#        data will be sorted upon: 0 is by name;
#        1 is by size; 2 is by date last modified
#
#    5.    $sort_how - describes how to sort; 
#        0 means to sort ASCENDING 
#        (oldest to newest, smallest to largest, Z to A); 
#        while 1 means to sort DESCENDING
#        (newest to oldest, largest to smallest, A to Z)


#####################################################
#    These are the five variables
#####################################################

$allowed_ext = array(".gif"".png"".jpg"".jpeg"".txt"".doc"".xls");
$directory dir("./");
$do_link TRUE;
$sort_what 0;
$sort_how 0;

#################################################
#    These are functions to perform the work
#################################################

function dir_list($dir){
    
$i=0;
    
$dl = array();
    if (
$hd opendir($dir))    {
        while (
$sz readdir($hd)) { 
            if (
preg_match("/^\./",$sz)==0$dl[] = $sz;$i.=1
        }
    
closedir($hd);
    }
    
asort($dl);
    return 
$dl;
}
if (
$sort_how == 0) {
    function 
compare0($x$y) { 
        if ( 
$x[0] == $y[0] ) return 0
        else if ( 
$x[0] < $y[0] ) return -1
        else return 
1
    } 
    function 
compare1($x$y) { 
        if ( 
$x[1] == $y[1] ) return 0
        else if ( 
$x[1] < $y[1] ) return -1
        else return 
1
    } 
    function 
compare2($x$y) { 
        if ( 
$x[2] == $y[2] ) return 0
        else if ( 
$x[2] < $y[2] ) return -1
        else return 
1
    } 
}else{
    function 
compare0($x$y) { 
        if ( 
$x[0] == $y[0] ) return 0
        else if ( 
$x[0] < $y[0] ) return 1
        else return -
1
    } 
    function 
compare1($x$y) { 
        if ( 
$x[1] == $y[1] ) return 0
        else if ( 
$x[1] < $y[1] ) return 1
        else return -
1
    } 
    function 
compare2($x$y) { 
        if ( 
$x[2] == $y[2] ) return 0
        else if ( 
$x[2] < $y[2] ) return 1
        else return -
1
    } 

}

##################################################
#    We get the information here
##################################################

$i 0;
while(
$file=$directory->read()) {
    
$file strtolower($file);
    
$ext strrchr($file'.'); 
    if(!
in_array($ext,$allowed_ext)){
        
// dump
    
}else {
        
$temp_info stat($file);
        
$new_array[$i][0] = $file;
        
$new_array[$i][1] = $temp_info[7];
        
$new_array[$i][2] = $temp_info[9];
        
$new_array[$i][3] = date("F d, Y"$new_array[$i][2]);
        
$i $i 1;
    }
}
$directory->close();

##################################################
# We sort the information here
#################################################

switch ($sort_what) {
    case 
0:
            
usort($new_array"compare0");
    break;
    case 
1:
            
usort($new_array"compare1");
    break;
    case 
2:
            
usort($new_array"compare2");
    break;
}

###############################################################
#    We display the infomation here
###############################################################

$i2 count($new_array);
$i 0;
echo 
"<table border=1>
                <tr>
                    <td width=150> File name</td>
                    <td width=100> File Size</td>
                    <td width=100>Last Modified</td>
                </tr>"
;
for (
$i=0;$i<$i2;$i++) {
    if (!
$do_link) {
        
$line "<tr><td align=right>" 
                        
$new_array[$i][0] . 
                        
"</td><td align=right>" 
                        
number_format(($new_array[$i][1]/1024)) . 
                        
"k";
        
$line $line  "</td><td align=right>" $new_array[$i][3] . "</td></tr>";
    }else{
        
$line '<tr><td align=right><A HREF="' .  
                        
$new_array[$i][0] . '">' 
                        
$new_array[$i][0] . 
                        
"</A></td><td align=right>";
        
$line $line number_format(($new_array[$i][1]/1024)) . 
                        
"k"  "</td><td align=right>" 
                        
$new_array[$i][3] . "</td></tr>";
    }
    echo 
$line;
}
echo 
"</table>";


?>