[PHP] Problemen met een for lus

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb de volgende code:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?
    
function directory($dir,$filters){
    $handle=opendir($dir);
    $files=array();
    if ($filters == "all"){
        while(($file = readdir($handle))!==false){$files[] = $file;}}
    if ($filters != "all"){
        $filters=explode(",",$filters);
        while (($file = readdir($handle))!==false) {
            for ($f=0;$f<sizeof($filters);$f++):
                $system=explode(".",$file);
                if ($system[1] == $filters[$f]){$files[] = $file;}
            endfor;
        }
    }
    closedir($handle);
    return $files;
}

$files = directory(".","all");
krsort($files);
for($i=0;$i<10;$i++) { // DEZE REGEL!
foreach($files as $file){
    
    if ($file != "." && $file != ".." && $file != "show.php") { 
        
        echo "[img]\"/msgstore/$file/thumbs/part_0.png\"[/img]<br><br>\n"; 
    }
     
    }
    }

?>


En nu wil ik dus de 10 laatste plaatjes laten zien, maar ik heb al geprobeerd de for lus(regel 23) op een aantal plaatsen te zetten, maar ik krijg niet het gewenste resultaat, of ik krijg 10 keer dezelfde foto's of gewoon het normale aantal!
Heb al eens gezocht op php.net en via google alsmede hier maar kan hier niets over vinden. Het ligt gewoon aan de plaats van waar die for lus wordt neer gezet.

edit: Ik gebruik ksort, dus ik zet de nieuwste boven aan en wil dus de laatste 10 nieuwe laten zien!

En dan nog een vraag over hetzelfde script. Hoe kan ik bv bij foto 11 beginnen en dan tot foto 20? Daar breek ik me ook al een dag mijn hoofd over maar ik kan er helemaal niets over vinden! :( (misschien gebruik ik de verkeerde sites en trefwoorden!!)

Alvast bedankt!

[ Voor 19% gewijzigd door Verwijderd op 31-08-2003 11:20 . Reden: ksort erbij gezet! ]


Acties:
  • 0 Henk 'm!

  • Patrickvs
  • Registratie: Juli 2000
  • Laatst online: 08-02-2022
Misschien kun je die for each constructie weghalen en gewoon de for lus gebruiken en dan de juiste index aanwijzen in de array $files.

PHP:
1
2
3
4
5
6
7
8
9
for($i=0;$i<10;$i++) { // DEZE REGEL! 
      
    if ($files[$i]!= "." && $files[$i] != ".." && $files[$i] != "show.php") { 
         
        echo "[img]\"/msgstore/$files[$i]/thumbs/part_0.png\"[/img]<br><br>\n"; 
    } 
      
 
}


Zoiets?

Acties:
  • 0 Henk 'm!

  • pistole
  • Registratie: Juli 2000
  • Laatst online: 17-09 21:27

pistole

Frutter

1. for (...) en dan foreach(...)? Dus je gaat 10 keer dezelfde array door? Is dat wat je wilt?
2. use tabs
3. bij foto 11 beginnen is hetzelfde als de eerste 10 foto's overslaan. Code kan je dan vast zelf verzinnen

Ik frut, dus ik epibreer


Acties:
  • 0 Henk 'm!

  • Helmet
  • Registratie: Januari 2002
  • Laatst online: 21-08 15:00
PHP:
1
2
3
4
5
6
7
8
9
<?
 for ($i=10;$i<20;$i++
{
 if ($files[$i]!= "." && $files[$i] != ".." && $files[$i] != "show.php") 
 {           
   echo "[img]\"/msgstore/$files[$i]/thumbs/part_0.png\"[/img]<br><br>\n"; 
 } 
}
?>


ik zie het probleem niet echt :s maar dat kan wel aan mij liggen
verder zou je met een get variabele START en BIJV stop kunnen aantonen waar hij moet beginnen en hoeveel items hij neemt

[ Voor 44% gewijzigd door Helmet op 31-08-2003 11:29 ]

Icons are overrated


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-P@tRiCk- schreef op 31 August 2003 @ 11:21:
Misschien kun je die for each constructie weghalen en gewoon de for lus gebruiken en dan de juiste index aanwijzen in de array $files.

PHP:
1
2
3
4
5
6
7
8
9
for($i=0;$i<10;$i++) { // DEZE REGEL! 
      
    if ($files[$i]!= "." && $files[$i] != ".." && $files[$i] != "show.php") { 
         
        echo "[img]\"/msgstore/$files[$i]/thumbs/part_0.png\"[/img]<br><br>\n"; 
    } 
      
 
}


Zoiets?
Nu werkt het zoals het zou moeten alleen, nu werkt de krsort dus niet meer?!
Wil graag namelijk sorteren op datum en dan de nieuwste als eerste nemen!

Is er ook een mogelijkheid om de . en .. al voor de array eruit te filteren want nu geeft ie de eerste serie van 10 weer als 8 met . en ..

[ Voor 18% gewijzigd door Verwijderd op 31-08-2003 11:32 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nu heb ik al een unset gebruikt om de eerste 2 array's eruit te kieperen (. en ..)
en dan doe ik een sizeof en dan zegt ie ook mooi dat ie dan 2 array's minder heeft maar
dan zie ik als ik de images print nog steeds de . en .. verschijnen?!
Ik niet snap!


Mmm nu gooit ie de . en .. ook heel mooi weg maar dan geeft ie van de eerste serie er nog maar 8 weer en niet 10!?! Moet ik dan nu opnieuw de array's indexeren?
Dus dat 2 dan 0 wordt en 3 wordt dan 1 etc.??

[ Voor 32% gewijzigd door Verwijderd op 31-08-2003 11:54 ]


Acties:
  • 0 Henk 'm!

  • alienfruit
  • Registratie: Maart 2003
  • Laatst online: 15-09 16:19

alienfruit

the alien you never expected

Klopt toch hij haalt die . en .. weg dus 10 - 2 :p

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?
 for ($i=10;$i<20;$i++)
{
 if ($files[$i]!= "." && $files[$i] != ".." && $files[$i] != "show.php") 
 {           
   echo "[img]\"/msgstore/$files[$i]/thumbs/part_0.png\"[/img]<br><br>\n"; 
 } 
 else
 {
  $i--;
  }
}
?>


Zoiets?

[ Voor 23% gewijzigd door Grijze Vos op 31-08-2003 16:45 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info

Pagina: 1