Avatar billede kingrex666 Nybegynder
16. maj 2006 - 23:38 Der er 12 kommentarer og
1 løsning

dato script

hej alle


jeg her dett script

  <? clearstatcache();

$lastdate = 0;

$basedir = '/siten/til/min/site';

$dirs = array("image/boplads");
    $skip = array("image/boplads/thumbs","image/boplads/thumbz");

reset ($dirs);

foreach ($dirs as $dir)
{
  $fullpath = $basedir . $dir;
  if ($handle = opendir($fullpath))
  {
    while (false !== ($file = readdir($handle)))
    {
        if(in_array($file,$skip))
        {
            continue;
        }
     
      if (file_exists($file))
          $filedate = filemtime($file);
   
      if ($filedate > $lastdate)
          $lastdate = $filedate;
    }
    closedir($handle);
  }
}
echo date("F d Y", $lastdate);
?>



men det virker ikke ... det eneste den udskriver er datoen

January 01 1970


hmm ... er der mon et klogt hovede der hurtigt kan se hvad der er galt...


/rasmus
Avatar billede viper_killerguy Nybegynder
17. maj 2006 - 00:20 #1
$fullpath = $basedir . $dir; mangler en / ex:  $fullpath = $basedir.'/'.$dir;

samt når du checker på filen skal du bruge $fullpath.$file ex: $filedate = filemtime($fullpath.$file);
Avatar billede jakobdo Ekspert
17. maj 2006 - 08:52 #2
Det ligner viper_killerguy har fat i den lange ende.
Men når du løber ind i problemer, så start evt med at udskrive dine variabler, og se hvad de indeholder. Så ville du selv kunne have fundet fejlen som viper_killerguy fandt her.

DEBUG styrer hele vejen...
Avatar billede kingrex666 Nybegynder
17. maj 2006 - 17:42 #3
hej ... tak for det hurtige svar...

jeg har gjort sådan ::

  <? clearstatcache();

$lastdate = 0;

$basedir = '/customers/bifrost-vikinger.dk/bifrost-vikinger.dk/httpd.www';

$dirs = array("./image/boplads");
    $skip = array("./image/boplads/thumbs","./image/boplads/thumbz");

reset ($dirs);

foreach ($dirs as $dir)
{
  $fullpath = $basedir.'/'.$dir;
  if ($handle = opendir($fullpath))
  {
    while (false !== ($file = readdir($handle)))
    {
        if(in_array($file,$skip))
        {
            continue;
        }
     
      if (file_exists($file))
          $filedate = filemtime($fullpath.$file);
   
      if ($filedate > $lastdate)
          $lastdate = $filedate;
    }
    closedir($handle);
  }
}
echo date("F d Y", $lastdate);
?>



men det ser ikke ud til at virke ?????

hvad jeg gjort galt
Avatar billede kingrex666 Nybegynder
17. maj 2006 - 17:46 #4
og ja jeg har fjernet  ...  ./  foran arrayerne

:))
Avatar billede jakobdo Ekspert
18. maj 2006 - 07:50 #5
Er det meningen du skal lave en recursiv funktion, som løber mappen: /image/boplads og alle undermapper igennem, undtagen image/boplads/thumbs og image/boplads/thumbz ??
Avatar billede jakobdo Ekspert
18. maj 2006 - 07:54 #6
Hvis ja, prøv at brug denne kode:
Copy/Paste fra: http://dk.php.net/glob -> Deviant - 05-Apr-2005 01:53

<?php
/**
* Recursive version of glob
*
* @return array containing all pattern-matched files.
*
* @param string $sDir      Directory to start with.
* @param string $sPattern  Pattern to glob for.
* @param int $nFlags      Flags sent to glob.
*/
function globr($sDir, $sPattern, $nFlags = NULL)
{
$sDir = escapeshellcmd($sDir);
// Get the list of all matching files currently in the
// directory.
$aFiles = glob("$sDir/$sPattern", $nFlags);
// Then get a list of all directories in this directory, and
// run ourselves on the resulting array.  This is the
// recursion step, which will not execute if there are no
// directories.
foreach (glob("$sDir/*", GLOB_ONLYDIR) as $sSubDir)
{
  $aSubFiles = rglob($sSubDir, $sPattern, $nFlags);
  $aFiles = array_merge($aFiles, $aSubFiles);
}
// The array we return contains the files we found, and the
// files all of our children found.
return $aFiles;
}
?>
Avatar billede kingrex666 Nybegynder
22. maj 2006 - 15:55 #7
jakobdo:

jeg kan ikke lige gennemskue det script som du har lagt op ... og jeg kan ikke se hvor jeg skriver min billede/mappe sti ind henne....

meningen med mi script var at fortælle siden hvilken sti den skal læse ig derefter skpringe bestemte mapper over i selve den forudbestemte mappe/sti.

derefter kan jeg køre scriptet op til flere gange på samme side men med forskellige stier og mapper.

selve scriptet skal læse og udskrive den sidste ny dato på filer i mapperne.

så ja det er  nok som du spørger om men stadig kan jeg ikke lige gennemskuet "recusive" scriptet


/rasmus
Avatar billede jakobdo Ekspert
22. maj 2006 - 16:15 #8
Ideen med rekursiv er at den tager en mappe, læser indholdet, er der en mappe i mappen, så læser den denne mappe, filer og undermapper igen osv...
Men jeg forstår måske ikke helt hvad det er du ønsker.
Avatar billede kingrex666 Nybegynder
25. maj 2006 - 13:15 #9
det jeg vil have er :::

jeg fortæller hvilken mappen scriptet skal læse. (jeg bestemmer hvilken mappe) så skal scriptet læse den mappe jeg siger, og heri skal scriptet kun læse de filer der ligge i mappen og springe undermapper over og hvis der er filer i undermapper skal den helle ikke læse disse. Så skal scriptet udskrive datoen for den nyeste fil i mappen.


scriptet gør også datte men lige så snart jeg fortæller at den skal skibbe undermapper udskriver den January 01 1970
!!!!

jeg kan få det til at virke hvis jeg bare skal læse datoer i en bestemt mappe og ikke have noge begrænsninger...ex. at springe under og filer heri, over.

her er det script som virker:::

<? clearstatcache();
        $lastdate = 0;

$basedir = '/customers/2kokke.dk/2kokke.dk/httpd.www/';


$dirs = array("mad", "js", "css", "Menu");
reset ($dirs);

foreach ($dirs as $dir) {
  $fullpath = $basedir . $dir;
  if ($handle = opendir($fullpath)) {
    while (false !== ($file = readdir($handle))) {
      if (file_exists($file)) $filedate = filemtime($file);
      if ($filedate > $lastdate) $lastdate = $filedate;
    }
    closedir($handle);
  }
}

echo date("F d Y H:i:s.", $lastdate);

?>


/rasmus
Avatar billede jakobdo Ekspert
25. maj 2006 - 17:07 #10
Du skriver den kun skal tage filerne i mappen og ikke undermapper eller filer heri.

Hvis det kun er filerne, så kan du bruge denne:

<?php
//http://www.eksperten.dk/spm/709838

function newestFile($dir="")
{
    $newestFile = NULL;
    foreach(glob($dir . "*.*") as $filename)
    {
        $thisFileTime = filemtime($filename);
       
        if($thisFileTime > $newestFile)
        {
            $newestFile = $thisFileTime;
        }
    }
    return $newestFile;
}

echo date ("F d Y H:i:s.", newestFile());

?>
Avatar billede kingrex666 Nybegynder
19. juni 2006 - 17:42 #11
fedt nok.....

smid et svar jakobdo

det var lige vad den skulle ... TAK
Avatar billede jakobdo Ekspert
19. juni 2006 - 17:54 #12
Svar!
Avatar billede jakobdo Ekspert
06. august 2006 - 08:33 #13
Takker for point.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester