[PHP]Load $var_filename

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
Hi,

Er worden bij ons elk uur performance charts van een bepaald systeem gemaakt
en verwerkt in een grafiek (*.jpg). Deze charts worden opgeslagen met de volgende
filename "year-month-day_plaatje.jpg" en allemaal in een apparte map "/year/month/day/%filename%.

Nu willen wij één webpagina hebben die constant het nieuwste plaatje laat
zien, dus die zelf via een variable o.i.d. het nieuwste bestand ophaald.

Is dit mogelijk? :?

Ik vind verschillende manier om tijd en datum aan een filename toe te voegen middels PHP maar
ik wil dat hij zelf een bestand leest op basis van een bepaalde date format.

Zoiets als file = '$date(_plaatje.jpg)'; 8)7

Mijn kennis op PHP gebied is zeer basis dus ik kom hier niet helemaal uit :(

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

  • Morax
  • Registratie: Mei 2002
  • Laatst online: 00:30
Dan moet je dus een stuk code schrijven dat eerst de map zoekt met het hoogste jaartal, binnen die map zoek je naar de map met het hoogste maandnummer, en binnen die map zoek je weer naar de map met het hoogste dagnummer. En aan de hand van de namen van de mappen weet je dus het jaar, maand en de dag om de bestandsnaam te kunnen samenstellen. Ik zie het probleem niet :?

What do you mean I have no life? I am a gamer, I got millions!


Acties:
  • 0 Henk 'm!

Verwijderd

Je moet de basis kennis hebben om met strings te werken en verder deze functie: http://www.php.net/manual/en/function.date.php

Als je hier niet uitkomt kun je beter iemand inhuren of rustig de tijd nemen om PHP te leren.

Acties:
  • 0 Henk 'm!

  • Japius
  • Registratie: April 2003
  • Laatst online: 30-08 20:57
Iets als
PHP:
1
2
3
4
5
$year = date('Y');
$month = date('m');
$day = date('d');

$file = '/'.$year.'/'.$month.'/'.$day.'/'.$year.'-'.$month.'-'.$day.'_plaatje.jpg';

?

Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
Waarom het plaatje een date('Y-m-d') geven als je het ook zo al in de mapstructuur opslaat? Geef het dan gewoon een timestamp mee, zodat het makkelijk te sorteren valt. Vervolgens ga je met PHP naar de huidige Y-m-d map toe, stopt alle filenames in een array en d.m.v. een rsort() op je array haal je de laatste (dus met de hoogste timestamp) naar plek 0 in de array. Dat is dan dus de nieuwste en die wil je weergeven. In plaats van een timestamp kun je natuurlijk ook alleen de H weergeven, als je dat makkelijker vind, zolang het nog logisch terug te vinden is.

PHP:
1
2
3
// Nieuwe grafieken erin stoppen
$filename = time().".jpg";
file_put_contents(date('/Y/m/d/').$filename,$data); // Waar $data de bastandsinhoud van je grafiek is.


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
// Laatste grafiek ophalen
$dir = date('/Y/m/d/');
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            $files[] = $file;
        }
        closedir($dh);
    }
}

rsort($files);
echo 'Nieuwste grafiek:<br><img src="'.date('/Y/m/d/').$files[0].'">';


Heb het nog niet gedebugged e.d., dat mag je zelf doen, heb het even snel in elkaar geflansd om je een schop in de goede richting te geven ;)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Bitage schreef op donderdag 06 augustus 2009 @ 09:15:
Waarom het plaatje een date('Y-m-d') geven als je het ook zo al in de mapstructuur opslaat? Geef het dan gewoon een timestamp mee, zodat het makkelijk te sorteren valt.
Y-m-d is net zo makkelijk te sorteren hoor :P
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
// Laatste grafiek ophalen
$dir = date('/Y/m/d/');
if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
        while (($file = readdir($dh)) !== false) {
            $files[] = $file;
        }
        closedir($dh);
    }
}

rsort($files);
echo 'Nieuwste grafiek:<br><img src="'.date(/Y/m/d/).$files\[0].'">';


Heb het nog niet gedebugged e.d., dat mag je zelf doen, heb het even snel in elkaar geflansd om je een schop in de goede richting te geven ;)
Je checked wel of de directory bestaat, maar indien deze niet bestaat dan ga je wel verder ipv in een andere directory te kijken. Het kan immers altijd voorkomen dat het process dat de plaatjes maakt niet gewerkt heeft. En dus is de oplossing van Morax in deze de beste en minst fout gevoelige.

Acties:
  • 0 Henk 'm!

  • UniPer
  • Registratie: April 2003
  • Laatst online: 17-09 11:29
Bedankt voor de snelle reacties, ik denk dat ik een eind ga komen met deze voorbeelden,
ik ga eens even spelen en zodra ik het werkend heb laat ik het weten :)

Do not argue with an idiot. He will drag you down to his level and beat you with experience.


Acties:
  • 0 Henk 'm!

  • Bitage
  • Registratie: April 2006
  • Laatst online: 19-05-2024
Erkens schreef op donderdag 06 augustus 2009 @ 09:19:

[...]

Je checked wel of de directory bestaat, maar indien deze niet bestaat dan ga je wel verder ipv in een andere directory te kijken. Het kan immers altijd voorkomen dat het process dat de plaatjes maakt niet gewerkt heeft. En dus is de oplossing van Morax in deze de beste en minst fout gevoelige.
Nouja, zoals ik al zei:
;) Je kan natuurlijk ook nog zeggen dat ik controleer of het een . of een .. is, want die geeft een dir handle ook terug als het goed is, maargoed...

Verder ben ik het er wel mee eens dat Morax' idee het beste is hoor, maar ik had zonder te kijken of er al nieuwe reacties waren even wat in elkaar geflanns en ben toen snel naar mijn werk vertrokken. O-)

[ Voor 30% gewijzigd door Bitage op 06-08-2009 12:43 ]


Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Bitage schreef op donderdag 06 augustus 2009 @ 12:30:
[...]

Nouja, zoals ik al zei:
[...]

;)
Dan lijkt het me verstandig om dat eens te gaan doen ;)

Daarnaast: Waar hoort mijn topic? dus PRG

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.

Pagina: 1