Ionutz Cosmin
Ionutz Cosmin

Reputation: 29

limit results on php script search files in folder

I do not have much experience with php. I have one good script. It searches files in a folder by the name of the file, example pdf file. It works, but I need to limit the number of results because when I search for pdf for example it shows me all pdf files, I do not have a limit on the results. I need to limit this to only 15 results.

And another question: is it possible to add the message "file not found" to the results if nothing was found?


    <?php
    $dir = 'data'; 
    $exclude = array('.','..','.htaccess'); 
    $q = (isset($_GET['q']))? strtolower($_GET['q']) : ''; 
    $res = opendir($dir); 
    while(false!== ($file = readdir($res))) { 
        if(strpos(strtolower($file),$q)!== false &&!in_array($file,$exclude)) { 
            echo "<a href='$dir/$file'>$file</a>"; 
            echo "<br>"; 
        } 
    } 
    closedir($res); 
    ?>

Upvotes: 1

Views: 136

Answers (1)

Emma
Emma

Reputation: 27743

You might just want to add a counter either before the if or inside the if statement, however you wish, and your problem may be solved:

Counter Before if

$dir = 'data';
$exclude = array('.', '..', '.htaccess');
$q = (isset($_GET['q'])) ? strtolower($_GET['q']) : '';
$res = opendir($dir);
$c = 0; // counter
while (false !== ($file = readdir($res))) {
    $c++; // add 1
    if (strpos(strtolower($file), $q) !== false && !in_array($file, $exclude)) {
        echo "<a href='$dir/$file'>$file</a>";
        echo "<br>";
    }
    if ($c > 15) {break;} // break
}
closedir($res);

Counter Inside if

$dir = 'data';
$exclude = array('.', '..', '.htaccess');
$q = (isset($_GET['q'])) ? strtolower($_GET['q']) : '';
$res = opendir($dir);
$c = 0; // counter
while (false !== ($file = readdir($res))) {
    if (strpos(strtolower($file), $q) !== false && !in_array($file, $exclude)) {
        $c++; // add 1
        echo "<a href='$dir/$file'>$file</a>";
        echo "<br>";
        if ($c > 15) {break;} // break
    }
}
closedir($res);

Upvotes: 1

Related Questions