login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Sorteren op datum

Offline Frederic - 20/05/2005 17:26
Avatar van FredericPHP ver gevorderde Ik gebruik sinds kort volgend scriptje om alle bestanden in een map te tonen ($dir wordt hoger gedeclareert):
  1. <?php
  2. if ($handle = opendir($dir)) {
  3. while (false !== ($bestand = readdir($handle))) {
  4. $extentie = substr($bestand, -4, -3);
  5. if(($bestand != ".") AND ($bestand != "..") AND ($extentie == ".")){
  6. echo "<li>";
  7. echo "&nbsp;<b>&raquo;</b>&nbsp;<a href=\"".$dir.$bestand."\" target=\"_blank\">".$bestand." ".echo date ("d F Y - H:i:s", filemtime($dir.$bestand))."</a></li>";
  8. }
  9. }
  10. }
  11. ?>

Nu, is het misschien mogelijk om de bestanden te ordenen volgens
  1. date ("d F Y - H:i:s", filemtime($dir.$bestand))
, want nu komen ze gewoon willekeurig in de lijst (vervelend). Iemand enig idee hoe ik dit voor mekaar krijg. Ik heb al eens gezocht bij arrays, maar vind niet direct hoe alles in een array te krijgen + bij vele bestanden, gaat het dan niet traag worden?

6 antwoorden

Gesponsorde links
Offline prorsoft - 20/05/2005 18:10 (laatste wijziging 20/05/2005 18:24)
Avatar van prorsoft PHP gevorderde nee hoor, dat doe ik ook;
  1. <?php
  2. if ($handle = opendir($dir)) {
  3. while (false !== ($bestand = readdir($handle))) {
  4. $extentie = substr($bestand, -4, -3);
  5. if(($bestand != ".") && ($bestand != "..") && ($extentie == ".")){
  6. $bestanden[]=$dir.$bestand;
  7. $bestanden2[]=$bestand;
  8. $bestanden3[]=filemtime($dir.$bestand);
  9. }
  10. }
  11. asort($bestanden3); # sorteren maar de indexen behouden om de andere $bestanden vars op te kunnen roepen
  12. foreach($bestanden3 as $key=>$value)
  13. {
  14. echo "<li>";
  15. echo "&nbsp;<b>&raquo;</b>&nbsp;<a href=\"".$bestanden[$key]."\" target=\"_blank\">".$bestanden2[$key]." ".date ("d F Y - H:i:s", $value)."</a></li>";
  16. }
  17. }
  18. ?>

en waarom stond die echo daar midden in de zin?:s

PS. voor aflopend sorteren moet je op r.11 arsort() i.p.v. asort() gebruiken.
Offline ElCheapo - 20/05/2005 20:17 (laatste wijziging 20/05/2005 20:18)
Avatar van ElCheapo PHP beginner
Citaat:
Als het zo ook werkt, wat zeur je dan??
werken betekent niet dat het goed is.

Citaat:
2.gebruik i.p.v. 'foreach', for of while(list() = each()) principe
argumenten hiervoor zijn???

Citaat:
verder wel goed.
zou ik niet zeggen. waarom 3 arrays???

doe gewoon zo:
  1. <?php
  2. if($handle = opendir($dir))
  3. {
  4. while(($bestand = readdir($handle)) !== false)
  5. {
  6. if($bestand != "." AND $bestand != "..")
  7. {
  8. $bestanden[filemtime($dir.$bestand)] = $bestand;
  9. }
  10. }
  11.  
  12. ksort($bestanden);
  13.  
  14. foreach($bestanden AS $tijd => $bestand)
  15. {
  16. echo '<li>&nbsp;<b>&raquo;</b>&nbsp;<a href="'.$dir.$bestand.'" target="_blank">'.$bestand.' '.$tijd.'</a></li>';
  17. }
  18. }
  19. ?>
Offline Legolas - 20/05/2005 20:23
Avatar van Legolas Onbekend @ElCheapo:
foreach is erg langzaam!
vandaar.
Offline nemesiskoen - 20/05/2005 21:20 (laatste wijziging 20/05/2005 22:58)
Avatar van nemesiskoen Gouden medaille

PHP expert
foreach is gemaakt om arrays leeg te halen... het vertraagt de pagina enkele miliseconden... dit betekent dat als je duizend foreach loops op 1 pagina hebt staan de pagina 1 seconde trager laad...

<vinTage>
Citaat:
vintTage edit : onderstaande is niet echt meer van belang omdat vin een hoop brol heeft verwijderd, en idd ik ben/was het eens met bigbug en nemesiskoen. het woord is weer aan koen ^^
</vinTage>

een reactie als deze:
Citaat:
Ooit van het editknopje gehoord.
onder je puntenaantal dat ondertussen weer 1 punt is gestegen ()
en dan ook nog 's 2 onzinvolle re's. ff kappern hiermee


vind ik onnodig... zeker als je kijkt dat BigBug hier al is van het begin.. en zelfs van V1 voor zover ik mij kan herineren (en 'nog maar' 1500 punten heeft) en jij hebt rond de 1000 punten bij een geraapt op 3 maanden, waarvan je enkele weken afwezig bent geweest voor die Elfen Designs of wat was het?

dus jij plukt punten uit bomen die hoger zijn voor jou grootte... BigBug vangt alleen punten die in zijn richting komen geblazen...
--> om het even poëtisch voor te stelle

let wel: ik heb niets tegen jou Legolas, maar kvind wel dat BigBug groot gelijk heeft: het probleem is opgelost, ga hier dan niet verder op in. En voor een miliseconde sneller een pagina te laden vind ik een post onnodig als ik mag denken volgens jou theorie over 'onnodige posts'.
Offline Frederic - 20/05/2005 22:15
Avatar van Frederic PHP ver gevorderde Hoe moet ik dit nu aanpassen om het sneller/efficienter te krijgen?
  1. <?php if ($handle = opendir($dir)) {
  2. while (false !== ($bestand = readdir($handle))) {
  3. $extentie = substr($bestand, -4, -3);
  4. if(($bestand != ".") && ($bestand != "..") && ($extentie == ".")){
  5. $bestandsnaam[]=$bestand;
  6. $bestand_datum[]=filemtime($dir.$bestand);
  7. }
  8. }
  9. asort($bestand_datum); # sorteren maar de indexen behouden om de andere $bestanden vars op te kunnen roepen
  10. foreach($bestand_datum as $nr=>$value)
  11. {
  12. echo "<li><a href=\"javascript:OpenVenster('gebruikers/bestandsinfo.php?bestand=".$bestandsnaam[$nr]."&gebruiker=".$_SESSION['gebruiker']."');\"><img src=\"afbeeldingen/klein/bestandsinfo.gif\" alt=\"Bestandsinfo\" /></a>";
  13. echo "&nbsp;<a href=\"index.php?Pagina=persoonlijke_bestanden&actie=wis&bestand=".$bestandsnaam[$nr]."\" onclick=\"return confirmLink(this, '--".$bestandsnaam[$nr]."-- wil verwijderen?')\"><img src=\"afbeeldingen/klein/wis.gif\" alt=\"Verwijderen\" /></a>";
  14. echo "&nbsp;<b>&raquo;</b>&nbsp;<a href=\"".$dir.$bestandsnaam[$nr]."\" target=\"_blank\">".$bestandsnaam[$nr]."</a></li>";
  15. }
  16. }
  17. ?>
Offline Thomas - 21/05/2005 11:53 (laatste wijziging 21/05/2005 11:53)
Avatar van Thomas Moderator foreach($bestand_datum as $nr=>$value)
->
for($i = 0; $i < sizeif($bestand_datum); $i++)

En dan i.p.v. $bestandsnaam[$nr] $bestandsnaam[$i] gebruiken.

Het niet echo'en van statische HTML lijkt mij het eea ook wat sneller maken...
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.312s