Vraag & Antwoord

Webprogrammeren & scripting

[php] Directory lijst en sorteren op 'filemtime'

Anoniem
weatherboys
2 antwoorden
  • Hallo,

    Ik wil een directory uitlezen en vervolgens de lijst sorteren op lastmodified time. Daarvoor lijkt filemtime het meest geschikt, maar met onderstaand script krijg ik dan de volgende foutmelding:

    "Warning: filemtime(): Stat failed for 0 (errno=2 - No such file or directory) in /webdata/INFO/htdocs/wa/cwk/index_test2.php on line 71
    "

    * deze melding krijg ik nog 20 keer (net zo vaak als er files zijn) te zien *


    Het script dat ik gebruik werkte wel met usort maar bij maandovergangen ging dat dan mis omdat de filenamen deels bestaan uit een dagnummer (bv. pwhi0100.pdf, pwhi3000.pdf (waarbij in dit geval 30 slaat op de 30e v/d maand en 01 op de 1e v/d maand)). Door nu te willen sorteren op lastmodified werkt mijn script niet meer.

    Het script:
    <?php

    $itemnr = 0;
    $productname = 'PWHI';
    $listname = 'TEST';
    $url_base = 'http://www.mijndomein.nl/data/printoutput/';
    $slash = '/';
    $url = $url_base.$productname.$slash;
    $form_linkname = $productname;
    $formname = 'form_'.$productname;
    $dir = opendir("/webdata/htdocs/data/printoutput/".$productname.$slash);

    function RemoveExtension($strName)
    {
    $ext = strrchr($strName, '_'.$productname.'.');

    if($ext !== false)
    {
    $strName = substr($strName, 0, -strlen($ext));
    }
    return $strName;
    }

    while (false !== ($file = readdir($dir)))
    {
    if (($file !== ".";) && ($file !== "..";))
    {
    list($filename, $ext) = explode(".", $file);
    list($main, $sub, $include) = explode("/", $PHP_SELF);

    if ($ext <> "php";) {

    $lijst[$itemnr] = RemoveExtension($file);
    $lijst[$itemnr] = filemtime($itemnr);
    $itemnr++;
    }
    }
    }

    sort($lijst);
    print "<form class=form_index name=\"$formname\">
    <select class=index name=$form_linkname onChange=parent.printoutput.location=document.$formname.$form_linkname.options[document.$formname.$form_linkname.selectedIndex].value>";
    print "<option value=\wa\cwk\printoutput.html>$listname</option>";
    for($i=0;$i<sizeof($lijst);$i++)
    {
    print "<option value=\"$url".$lijst[$i]."_".$productname.".".$ext."\">".$lijst[$i]."</option>";
    }
    print '</select>
    </form>';
    ?>

    Heeft iemand een tip voor mij! :wink:
  • [quote:0e7f994dcb="weatherboys"]
    "Warning: filemtime(): Stat failed for 0 (errno=2 - No such file or directory) in /webdata/INFO/htdocs/wa/cwk/index_test2.php on line 71
    "

    * deze melding krijg ik nog 20 keer (net zo vaak als er files zijn) te zien *

    [code:1:0e7f994dcb]
    $itemnr = 0;


    $lijst[$itemnr] = RemoveExtension($file);
    $lijst[$itemnr] = filemtime($itemnr);
    $itemnr++;

    [/code:1:0e7f994dcb]
    [/quote:0e7f994dcb]
    Bovenstaande zegt genoeg…

    Ik heb zo ff niet goed naar de sortering gekeken, maar volgens mij is daar ook iets mis mee.

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.