login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Laatste bestand in map openen? (Opgelost)

Offline cowb - 15/01/2011 16:04 (laatste wijziging 15/01/2011 16:05)
Avatar van cowbLid Hi all,

Ik ben bezig met één of ander uploaden/reed script. En ik zou in een specifieke map, bijvoorbeeld één met afbeeldingen. De laatst toegevoegde foto er willen uithalen...
Hoe moet ik iets dergelijk verwezenlijken?
Ik heb dit al, maar nu zit ik vast...

  1. <?php
  2. $d = opendir("images");
  3. while ($bestanden = readdir($d)) {
  4. if(file_exists($bestanden)) {
  5. // via dit filemtime($bestanden) checken wat het recentst is. Maar hoe?
  6. }
  7. }
  8. ?>

12 antwoorden

Gesponsorde links
Offline lolll - 15/01/2011 16:23 (laatste wijziging 15/01/2011 17:11)
Avatar van lolll Lid Ik denk dat het zoiets zou moeten zijn:
  1. <?php
  2. $d = opendir("images");
  3. $fileinfo = new Array();
  4. $fileinfo['tijd'] = 0;
  5. while ($bestand = readdir($d)) {
  6. if(file_exists($bestand)) {
  7. if(filemtime($bestand)>$fileinfo['time']){
  8. $fileinfo['name'] = $bestand;
  9. $fileinfo['time'] = $filemtime($bestand);
  10. }
  11. }
  12. }
  13. ?>


Ik heb de code zelf niet getest, maar in principe zou ze wel moeten werken.

Lolll

EDIT:
De uitleg vergeten:
$fileinfo slaagt de gegevens van het laatst opgeslagen bestand op, doordat in de while functie wordt gecontroleerd of er nog een eerder bestand is.
Hierdoor zal $fileinfo tegen het einde van de loop het recentste bestand bevatten. Je kan deze naam achteraf oproepen door $fileinfo['name'] aan te spreken. Ik hoop dat het een beetje duidelijk is.
Offline cowb - 15/01/2011 16:29 (laatste wijziging 15/01/2011 16:35)
Avatar van cowb Lid Ik kan niet 100% volgens...

Dus als ik mijn bestandsnaam wil printen dan moet ik gewoon het volgende doen...

  1. <?php
  2. $d = opendir("images");
  3. $fileinfo = new Array();
  4. $fileinfo['tijd'] = 0;
  5. while ($bestand = readdir($d)) {
  6. if(file_exists($bestand)) {
  7. if(filemtime($bestand)>$fileinfo['time']){
  8. $fileinfo['name'] = $bestand;
  9. $fileinfo['time'] = $filemtime($bestand);
  10. }
  11. }
  12. }
  13.  
  14. echo $fileinfo['name'];
  15. ?>

Ik krijg dan volgende error op het scherm...
Parse error: syntax error, unexpected T_ARRAY, expecting T_STRING or T_VARIABLE or '$' in /home/creative/public_html/subdomeinen/cam/image.php on line 3

Geen idee wat dit betekend. Jij?
Offline Abbas - 15/01/2011 16:35
Avatar van Abbas Gouden medaille

Crew .NET
Codetags gebruiken in het vervolg aub! 
Offline Hend - 15/01/2011 16:38
Avatar van Hend Lid $fileinfo geen array zijn, maar het moet een string of een variabele zijn.
Offline Joost - 15/01/2011 16:57 (laatste wijziging 15/01/2011 16:58)
Avatar van Joost PHP expert
  1. <?php
  2. $d = opendir("images");
  3. $fileinfo = array();
  4. $fileinfo['tijd'] = 0;
  5. while ($bestand = readdir($d)) {
  6. if(file_exists($bestand)) {
  7. if(filemtime($bestand)>$fileinfo['time']){
  8. $fileinfo['name'] = $bestand;
  9. $fileinfo['time'] = $filemtime($bestand);
  10. }
  11. }
  12. }
  13.  
  14. echo $fileinfo['name'];
  15. ?>

Array is geen klasse die je kan instantiëren Zie de verandering op regel 3
Bedankt door: lolll
Offline lolll - 15/01/2011 17:07 (laatste wijziging 15/01/2011 17:10)
Avatar van lolll Lid ow ja, dat heb ik even verward met een andere taal waarschijnlijk.
Nu zou de code wel moeten werken. Thx voor de tip Joost.

EDIT:
Nog een kleine fout in mijn eerste bericht. Code is zo goed normaal:
  1. <?php
  2. $d = opendir("images");
  3. $fileinfo = array();
  4. $fileinfo['tijd'] = 0;
  5. while ($bestand = readdir($d)) {
  6. if(file_exists($bestand)) {
  7. if(filemtime($bestand)>$fileinfo['time']){
  8. $fileinfo['name'] = $bestand;
  9. $fileinfo['time'] = filemtime($bestand);
  10. }
  11. }
  12. }
  13.  
  14. echo $fileinfo['name'];
  15. ?>
Offline cowb - 15/01/2011 17:18
Avatar van cowb Lid Ik heb het even getest... Maar voor zover ik zie doet het niks...
http://cam.creativethree.be/image.php

Boomstructuur van mijn mappen...

Website
|- images (map)
|- image.php

En natuurlijk zit in image.php de code zoals u ze hier op de site ziet staan bij loll.
Offline lolll - 15/01/2011 17:49
Avatar van lolll Lid Ik weet niet of het daar aan ligt, maar op php.net staat dat je zo een map moet doorlopen:
  1. while (false !== ($bestand = readdir($d))) {
  2. //rest van code zoals hierboven.
  3. }


Als het nog niet lukt post je nog maar eens, ik zoek ondertussen nog wat verder.

Lolll
Offline cowb - 15/01/2011 17:55
Avatar van cowb Lid Er is nog steeds niks te zien jammer genoeg.
Aan wat zou dit kunnen liggen?
Offline lolll - 15/01/2011 18:17 (laatste wijziging 16/01/2011 13:06)
Avatar van lolll Lid EDIT:

Ik heb de werkende code gevonden:
  1. <?php
  2. $dir = "images/";
  3. $dh = opendir($dir);
  4. $fileinfo = array();
  5. $fileinfo['tijd'] = 0;
  6. while (($file = readdir($dh)) !== false) {
  7. if(file_exists($dir . $file) && $file!='.' && $file !='..') {
  8. if(filemtime($dir . $file)>$fileinfo['time']){
  9. $fileinfo['name'] = $dir . $file;
  10. $fileinfo['time'] = filemtime($dir . $file);
  11. }
  12. }
  13. }
  14. closedir($dh);
  15.  
  16. echo $fileinfo['name'];// geeft het pad + de naam van het bestand weer t.o.v het php script. bv. images/image0223.gif
  17. ?>


De fout was, dat readdir enkel de bestandsnaam geeft van het bestand. En dus gaat filemtime zoeken naar die bestandsnaam in de map waar het php script staat. Met het pad naar de bestandsnaam eraan toe te voegen lukt het dus wel.
Met dank aan: wellho.net.

Ik hoop dat hiermee je probleem is opgelost.

Lolll
Offline Sitebase - 16/01/2011 14:06
Avatar van Sitebase PHP expert Of als je de code een 25% sneller wilt laten gaan dan kan je het volgende gebruiken:

  1. $dir = "images/*";
  2. $fileinfo['time'] = 0;
  3. foreach (glob($dir) as $filename) {
  4. $filetime = filemtime($filename);
  5. if($filetime > $fileinfo['time']){
  6. $fileinfo['name'] = $filename;
  7. $fileinfo['time'] = $filetime;
  8. }
  9. }
  10. echo $fileinfo['name'];
Bedankt door: cowb, lolll
Offline cowb - 16/01/2011 18:23
Avatar van cowb Lid Bedankt voor jullie hulp. Nu werkt het perfect!  
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.432s