[PHP] Bestanden tellen in een directory

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 22-11-2024
Mensen, ik heb een simpel fotopagina script geschreven, maar nu heb ik een vraagje. Eerst zal ik uitleggen wat ik heb.

De PHP-code stuurt een query naar de MySQL db om daar het aantal foto's te tellen. Maar omdat ik eerst de bestanden upload en daarna pas elke foto + info (onderschrift) invoer in de db (zou ik eigenlijk een uploadscriptje voor moeten schrijven!), zoekt hij aanvankelijk dus naar foto's die er niet zijn. Ik zal een voorbeeld geven:

PHP:
1
2
3
4
5
<?
$query = "SELECT COUNT(*) AS 'aantal' FROM pics_pics WHERE ref_id = '" . $_GET['id'] . "'";
$result = mysql_query($query) or die("Error?");
list($aantal) = mysql_fetch_row($result);
?>


Er zullen er weinig zijn die dit niet snappen. B)
Wanneer de foto-info nog niet in de db staat dan valt er weinig te tellen natuurlijk. Daarom wil ik ze tellen vanuit de map waarin ze staan, dus zoiets:

PHP:
1
2
3
4
<?
$map = "images/pics/" . $mapnaam . "/";
$aantal = _telfunctie_($map);
?>


Maar is er een functie die dit (samen met andere directory informatie) retourneert, al dan niet in een array? Ik heb me suf gezocht op PHP.net maar ik kan het echt niet vinden. Een hele zooi filesystem functies, maar niet dit. Ook hier gezocht, ook zonder succes.

Anyone? :?

[ Voor 6% gewijzigd door JaFFoG op 16-01-2004 01:13 ]

Bla


Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
PHP:
1
2
3
4
5
6
7
8
9
10
$handle=opendir('dirname');
$i = 0;
while (false!==($file = readdir($handle)))
        {
        if ($file != "." && $file != "..")
                {
                $i++;
                }
        }
$aantalfiles = $i;

Is ff het enige wat ik kan bedenken. Maar ik ben dronken... dus

Acties:
  • 0 Henk 'm!

  • rb338
  • Registratie: Januari 2001
  • Laatst online: 05-01 12:58
Ik zou idd gewoon ff een upload script schrijven. Zoveel werk kost 't niet en verder wordt 't er alleen maar makkelijker op :)

Acties:
  • 0 Henk 'm!

  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 22-11-2024
Skaah schreef op 16 januari 2004 @ 01:18:
PHP:
1
2
3
4
5
6
7
8
9
10
$handle=opendir('dirname');
$i = 0;
while (false!==($file = readdir($handle)))
        {
        if ($file != "." && $file != "..")
                {
                $i++;
                }
        }
$aantalfiles = $i;

Is ff het enige wat ik kan bedenken. Maar ik ben dronken... dus
Aangeschoten hier :9
Anders was ik er misschien zelf wel opgekomen O-)
rb338 schreef op 16 januari 2004 @ 01:19:
Ik zou idd gewoon ff een upload script schrijven. Zoveel werk kost 't niet en verder wordt 't er alleen maar makkelijker op :)
Maar ik vind FTP'en zo leuk! :7 :P

[ Voor 26% gewijzigd door JaFFoG op 16-01-2004 01:21 ]

Bla


Acties:
  • 0 Henk 'm!

  • Sosabowski
  • Registratie: Juni 2003
  • Laatst online: 18-09 21:03

Sosabowski

nerd

PHP:
1
2
3
4
5
6
7
8
9
10
  $i = 0;
  if ($handle = opendir("../bestanden/")) { 
    echo "bestanden gevonden! <br>";
    while (false !== ($file = readdir($handle))) {  
     if (  ($file != ".") && ($file != "..")) {  
       $i++;
     }//if
    }//while
    closedir($handle);  
   echo $i . " bestanden gevonden!!";

volgens mij zoek jij zo iets. Is prima te vinden op PHP.net btw.

[ Voor 11% gewijzigd door Sosabowski op 16-01-2004 01:22 ]

The whole problem with the world is that fools and fanatics are always so certain of themselves, and wiser people so full of doubts. -- Bertrand Russell


Acties:
  • 0 Henk 'm!

  • JaFFoG
  • Registratie: Januari 2003
  • Laatst online: 22-11-2024
Ah ja, heb ook al iets gevonden (wat vaag dat ik dat eerst niet vond). Met de volgende functie kan je het aantal bestanden van een bepaald type tellen in een dir...

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?
$result = CountFiles("./images", "jpg");
if($result === false) die("dir does not exist!");

function CountFiles($dir, $type)
{
if(!($dh =@opendir("$dir")))
  return false; // directory does not exist
  
// read the directory contents searching for "type" files
// and count how many are found:
  $files = 0;
  while ( ! ( ($fn = readdir($dh)) === false ) )
   {
   $f = strrev($fn);
   $ext = substr($f, 0, strpos($f,"."));
   $f_ext = strrev($ext);
   if(( strcasecmp($f_ext, $type) == 0 )) $files++;
   }
  closedir($dh);
  return $files;
} 
?>


Maargoed, thnx voor de reacties! _/-\o_

[ Voor 7% gewijzigd door JaFFoG op 16-01-2004 01:28 ]

Bla


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
misschien een idee, ik ben net zelf ook een fotoalbum script aan het maken. Ik laat alle files in een array zetten door een functie die de directory doorloopt. met de functie count() kan je het aantal tellen :)
Pagina: 1