Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Kuvalaskuri

Sivun loppuun

Suominen90 [30.07.2005 18:13:35]

#

Pitäis saada sivuille kuvamäärälaskuri. Oon yrittäny tehdä sitä niin että käy globilla kaikki kansiot läpi ja countilla lasken kuvat muttei ole onnistunut.
Kansiot on näin
profile -- käyttäjien kansiot on täällä esim. profile/Xuvo
Käyttäjillä on omia kansioita esim. profile/Xuvo/Kuvia

Eli nyt pitäis saada laskettua paljon on kuvia käyttäjillä yhteensä

kayttaja-2791 [30.07.2005 21:17:54]

#

Jos laitat sen koodin mikä ei onnistunut niin katsotaan mikä siinä on mennyt pieleen.

Mazuli [30.07.2005 21:41:04]

#

no yksinkertaisesti vaikka näin

<?
/*toimii php 5*/
$kuvat = scandir("/profile/xuvo/kuvia");
$maara = count($kuvat) - 2;

/*ainakin php 4*/
$kansio = opendir("/profile/xuvo/kuvia");
while(readdir($kansio)) $i++;
$i -= 2;

?>

nuo edellyttää ettei kansiot sisällä muita kuin haluttuja kuvia

Suominen90 [30.07.2005 23:15:57]

#

No toimiiko toi

<?php
$kuvat = scandir("/profile");
$maara = count($kuvat) - 2;
?>

Tolleen että se ettis kaikki käyttäjät ja käyttien kansiot

Mazuli [31.07.2005 08:35:57]

#

hups ei tullut luettua kunnolla viestiä ;)
eli silloin sun pitää käydä läpi kaikki kansion sisältämät
kansiot eli jotenkin

<?

/*haetaan profile kansion sisältö taulukkoon*/
$kansiot = scandir("/profile");
/*käydään taulukko läpi, mutta jätetään kaksi ekaa pois(. ja ..)*/
for($i = 2; $i < count($kansiot);$i++)
{
   /*jos arvo on kansio niin scannataan taas ja lisätään sen määrä
     määrään mutta vähennetään taas kaksi (. ja ..)               */
   if(is_dir($kansiot[$i]))
      $maara += scandir($kansiot[$i]) - 2;
   /*muuten lisätään määrän arvoa yhdellä*/
   else
      $maara++;
}


?>

toi siis olettaa että kansio profile sisältää vain käyttäjien kansioita tai kuvia ja et käyttäjän kansio sisältää vain kuvia

Suominen90 [31.07.2005 09:39:25]

#

No pitää vähän muokata tota että saan toimii niin että käyttäjien kansiot sisältää kansioita.
Omat taidot ei taida riittää

arcatan [31.07.2005 09:48:03]

#

<?

function laske_tiedostot($dir) {
  /*haetaan profile kansion sisältö taulukkoon*/
  $kansiot = scandir($dir);
/*käydään taulukko läpi, mutta jätetään kaksi ekaa pois(. ja ..)*/
  for($i = 2; $i < count($kansiot);$i++)
  {
     /*jos arvo on kansio niin scannataan taas ja lisätään   sen määrä
     määrään mutta vähennetään taas kaksi (. ja ..)               */
     if(is_dir($kansiot[$i]))
        $maara += laske_tiedostot($dir . "/" . $kansiot[$i]);
   /*muuten lisätään määrän arvoa yhdellä*/
   else
      $maara++;
  }

  return $maara;
}

echo "Tiedostoja: " . laske_tiedostot("profile");

?>

Homman pitäisi hoitua tällä rekursiivisellä funktiolla. En tosin ole testannut.

Suominen90 [31.07.2005 10:55:16]

#

Sanoo tiedostoja 2 vaikka niitä on 4 eli ei mee kansioita läpi.
Huomasin että se laskee kansioiden määrän.

folio [31.07.2005 13:15:56]

#

Rekursiivinen glob:

function globr($dir, $pattern, $flags = NULL)
{
  $files = glob("$dir/$pattern", $flags);
  foreach( glob("$dir/*", GLOB_ONLYDIR) as $subdir )
  {
   $files = array_merge($files, globr($subdir, $pattern, $flags));
  }
  return $files;
}

$dir     = 'profile/xuvo';         // hakemisto
$pattern = '{*.gif,*.jpg,*.jpeg}'; // huomioitavat tiedostopäätteet

$files = globr($dir, $pattern, GLOB_BRACE);

echo '<pre>yhteensä ',count($files), " tiedosto(a).\n\n";
print_r($files);

Suominen90 [31.07.2005 13:24:24]

#

Kiitos tuo toimii niinkuin pitää

Niin voisin tähän samaan pistää kysymyksen miten saan tehtyä satunnainen kuva toiminnon kuvat on samallalailla kansioissa kuin tuossa kuva määrä laskurissa


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta