[PHP] iteratie van huidige week tot huidige week -10

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 17-09 12:53
Ik probeer een lijst te maken van de huidige week, en de 10 weken die daarvoor vallen. zoals (1,52,51,50,49,48,47,46,45)

aangezien niet ieder jaar het zelfde aantal weken bevat, valt een statische array al snel af.

Ik ben niet echt een enorme held in PHP (ben zelf meer fan van .NET) maar moet dit toch echt werkend krijgen voor het einde van het jaar.

In mijn eerste opzet, itereerde ik van de huidige week tot de huidige week -10

Dit resulteerde vandaag helaas in een lijst van 0 tot -9.

Is er een efficiente manier om dit op te lossen?

Acties:
  • 0 Henk 'm!

  • Thijsmans
  • Registratie: Juli 2001
  • Laatst online: 09:24

Thijsmans

⭐⭐⭐⭐⭐ (5/5)

http://nl3.php.net/date
check W :)

/edit: * Thijsmans schijnt het probleem niet te begrijpen :?

[ Voor 45% gewijzigd door Thijsmans op 29-12-2003 13:34 ]

Privacy-adepten vinden op AVGtekst.nl de Nederlandse AVG-tekst voorzien van uitspraken en besluiten.


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12:47

killercow

eth0

ik gebruik altijd de data functies van mysql hiervoor,
gewoon even een select doen met daarin een date_sub(10,week) en dan daarvan het weeknummer (week) vragen. zie de mysql documentatie voor meer info.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 17-09 12:53
killercow schreef op 29 december 2003 @ 13:32:
ik gebruik altijd de data functies van mysql hiervoor,
gewoon even een select doen met daarin een date_sub(10,week) en dan daarvan het weeknummer (week) vragen. zie de mysql documentatie voor meer info.
met de select functies van mysql krijg je maar 1 rij terug, terwijl ik er 10 nodig heb...

Acties:
  • 0 Henk 'm!

  • ramonp
  • Registratie: Januari 2001
  • Nu online
PhoneTech schreef op 29 december 2003 @ 13:30:
[...]

aangezien niet ieder jaar het zelfde aantal weken bevat, valt een statische array al snel af.

[..]
Kan je mij een jaartal noemen dat géén 52 weken heeft :?

Of bedoel je dat de dagen anders zijn in een week in vergelijking met een ander jaar?

Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

[13:35] <@Curry> waarom vraag je niet gewoon de weeknumber op van vandaag
[13:35] <@Curry> en vervolgens today - 7
[13:35] <@Curry> en vervolgens today - 14
[13:35] <@Curry> en vervolgens today - 21
[13:35] <@Curry> etc
[13:35] <PhoneTech> Curry> Das wel een goeie ja
[13:35] <@Curry> of liever gezegd, dat alleen doen als nextweek week 1 is
[13:36] <@Curry> daar had je nog niet over nagedacht?
[13:36] <@Curry> hersenen ook op vakantie? :P
[13:36] <PhoneTech> Nee...
[13:36] <PhoneTech> juist

:Y)

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 12:47

killercow

eth0

PhoneTech schreef op 29 december 2003 @ 13:35:
[...]


met de select functies van mysql krijg je maar 1 rij terug, terwijl ik er 10 nodig heb...
dan doe je toch een select met meerdere van die clousules?
code:
1
select week( now()-date_sub(10,week)), week(now()-date_sub(9,week)), week( now()-date_sub(8,week))

oid.

openkat.nl al gezien?


Acties:
  • 0 Henk 'm!

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 17-09 12:53
code:
1
2
3
4
5
for($i = 0; $i < ($NumberOfRowsHistory*7); $i = $i + 7)
        {
            echo date("d-m-Y")-$i;
            echo "\n";          
        }


Hmm...Volgens mijn komen mijn hersenen ook nooit meer terug...want krijg nu deze output:
29
22
15
8
1
-6
-13
-20
-27
-34
-41
-48
-55
-62
-69
-76
-83
-90
-97
-104

Acties:
  • 0 Henk 'm!

  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 09:24
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$intDay = date("d");
$intMonth = date("m");
$intYear = date("Y");
$intWeeksBack = 10;

for($intCounter = 0, $intMultiplier = 0; $intCounter < $intWeeksBack; $intCounter++, $intMultiplier = $intCounter * 7) {
        $intWeekNr = date("W", mktime(0, 0, 0, $intMonth, $intDay - $intMultiplier, $intYear));
        echo "$intWeekNr<br />";
}
?>


volgens mij moet dat wel werken :)

[ Voor 16% gewijzigd door SilentThunder op 29-12-2003 14:04 ]

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


Acties:
  • 0 Henk 'm!

  • PhoneTech
  • Registratie: Mei 2000
  • Laatst online: 17-09 12:53
SilentThunder schreef op 29 december 2003 @ 14:01:
PHP:
1
2
3
4
5
6
7
8
9
10
11
<?
$intDay = date("d");
$intMonth = date("m");
$intYear = date("Y");
$intWeeksBack = 10;

for($intCounter = 0, $intMultiplier = 0; $intCounter < $intWeeksBack; $intCounter++, $intMultiplier = $intCounter * 7) {
        $intWeekNr = date("W", mktime(0, 0, 0, $intMonth, $intDay - $intMultiplier, $intYear));
        echo "$intWeekNr<br />";
}
?>


volgens mij moet dat wel werken :)
Het daarnet iets soort gelijks gemaakt:

PHP:
1
2
3
4
5
6
for($i = 0; $i < ($NumberOfRowsHistory*7); $i = $i + 7)
{
    $w = mktime (0, 0, 0, date("m") , date("d") - $i,    date("Y"));
    echo date("W",$w);
    echo "\n";          
}


Dit werkt ook nog..en is iets schoner/netter

[ Voor 61% gewijzigd door PhoneTech op 29-12-2003 14:12 ]


Acties:
  • 0 Henk 'm!

  • SilentThunder
  • Registratie: September 2001
  • Laatst online: 09:24
PhoneTech schreef op 29 december 2003 @ 14:10:
[...]


Het daarnet iets soort gelijks gemaakt:

PHP:
1
2
3
4
5
6
for($i = 0; $i < ($NumberOfRowsHistory*7); $i = $i + 7)
{
    $w = mktime (0, 0, 0, date("m") , date("d") - $i,    date("Y"));
    echo date("W",$w);
    echo "\n";          
}


Dit werkt ook nog..en is iets schoner/netter
Mwah, over netter kunnen we discussiëren. Jouw code haalt in de loop namelijk elke keer weer de datum elementen op, terwijl dat eigenlijk niet nodig is. :)

Canon EOS 40D | Canon EF-S 10-22mm F/3.5-4.5 USM | Tamron 17-50mm F/2.8 | Canon EF 50mm F/1.8 II | Canon EF 70-200mm F/4L IS USM | Speedlite 430EX


Acties:
  • 0 Henk 'm!

  • curry684
  • Registratie: Juni 2000
  • Laatst online: 06-09 00:37

curry684

left part of the evil twins

ramonp schreef op 29 december 2003 @ 13:35:
[...]
Kan je mij een jaartal noemen dat géén 52 weken heeft :?

Of bedoel je dat de dagen anders zijn in een week in vergelijking met een ander jaar?
52*7 = 364

Natuurkundig telt een jaar afgerond 365,25 dagen, oftewel 365 per jaar en eens per 4 jaar 366 (schrikkeljaar).

Je hebt dus gemiddeld eens in de 5-6 jaar een jaar met 53 weken, wat afhankelijk is van de methode om weeknummers te genereren. De meest gangbare is om de eerste week met 4 dagen van het jaar tot week 1 te bombarderen, en om de week te laten beginnen met de maandag. In die combinatie telt 2004 dus een week 53.

Professionele website nodig?


Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

curry684:
Je hebt dus gemiddeld eens in de 5-6 jaar een jaar met 53 weken, wat afhankelijk is van de methode om weeknummers te genereren. De meest gangbare is om de eerste week met 4 dagen van het jaar tot week 1 te bombarderen, en om de week te laten beginnen met de maandag. In die combinatie telt 2004 dus een week 53.
... en daarom kun je ipv date beter strftime gebruiken die wat meer ruimte biedt voor de verschillende "gebruikelijkheden" ;)
%U - week number of the current year as a decimal number, starting with the first Sunday as the first day of the first week

%V - The ISO 8601:1988 week number of the current year as a decimal number, range 01 to 53, where week 1 is the first week that has at least 4 days in the current year, and with Monday as the first day of the week. (Use %G or %g for the year component that corresponds to the week number for the specified timestamp.)

%W - week number of the current year as a decimal number, starting with the first Monday as the first day of the first week
Phonetech en SilentThunder doen een beetje moeilijk O-)
Ik zou overigens weten waarom je elke iteratie mktime nodig hebt :? Ik dacht ik post mijn voorbeeldje maar niet, maar als we het dan toch over netjes hebben, doe ik 't toch :+

PHP:
1
2
3
4
5
6
7
define ( 'SECONDS_PER_WEEK', 3600 * 24 * 7 );
$currentTime = time ();
$weekNumbers = array ();
for ( $i = 9; $i >= 0; $i -- ) {
   $weekNumbers[]= strftime ( '%V', $currentTime - $i * SECONDS_PER_WEEK );
}
print_r ( $weekNumbers );

[ Voor 1% gewijzigd door drm op 29-12-2003 14:49 . Reden: typo |:( ]

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1