[PHP] mktime en datums in het "verleden"

Pagina: 1
Acties:
  • 34 views sinds 30-01-2008

Acties:
  • 0 Henk 'm!

33999

Topicstarter
Ik probeer een functie te maken die uiteindelijk de huidige datum en de data van de mogelijk vorige dagen van de werkweek weergeeft in een listbox.
Dus op maandag zie ik maandag, op dinsdag zie ik maandag en dinsdag, op woensdag zie ik maandag, dinsdag, woensdag etc.

Toch wil dit niet helemaal lukken, ik heb de volgende code gemaakt:

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
35
36
37
38
39
40
41
42
$dagnr = date("w", mktime(0, 0, 0)); // geeft het huidige "dagnummer"
 //van de week

function Get_Dates($dagnr) {
        
            if ($dagnr <= 5 and $dagnr > 0){ // kijk of het geen
 //zondag (0) of zaterdag (6) betreft.

                switch($dagnr) {

                case 1: // is het maandag, dan alleen maandag weergeven
                    print date("l, j F Y", mktime(0, 0, 0));
                    break;
                case 2: // is het dinsdag, dan maandag en dinsdag weergeven
                    print date("l, j F Y", mktime(0, 0, 0));
                    print date("l, j F Y", mktime(0, 0-1, 0));
                    break;
                case 3: // is het woensdag, dan ma, di, wo weergeven
                    print date("l, j F Y", mktime(0, 0, 0));
                    print date("l, j F Y", mktime(0, 0-1, 0));
                    print date("l, j F Y", mktime(0, 0-2, 0));
                    break;
                case 4: // is het do, dan ma, di, wo, do weergeven
                    print date("l, j F Y", mktime(0, 0, 0));
                    print date("l, j F Y", mktime(0, 0-1, 0));
                    print date("l, j F Y", mktime(0, 0-2, 0));
                    print date("l, j F Y", mktime(0, 0-3, 0));
                    break;
                case 5: // is het vr, dan ma, di, wo, do, vr weergeven
                    print date("l, j F Y", mktime(0, 0, 0));
                    print date("l, j F Y", mktime(0, 0-1, 0));
                    print date("l, j F Y", mktime(0, 0-2, 0));
                    print date("l, j F Y", mktime(0, 0-3, 0));
                    print date("l, j F Y", mktime(0, 0-4, 0));
                    break;
                }
            }
            
        else {
            print("Zaterdag en Zondag tellen niet mee");
        }
    }


Als output voor bijv a.s woensdag, krijg ik keurig woensdag en dinsdag, maar maandag is een herhaling van dinsdag. Heeft iemand enig idee wat ik fout doe?

[ Voor 8% gewijzigd door 33999 op 22-11-2004 22:30 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

Jij snapt iets moois van switch statements niet. :)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Get_Dates($dagnr) {
        
          switch($dagnr) {

          case 5:
              print date("l, j F Y", mktime(0, -4, 0));
          case 4:
              print date("l, j F Y", mktime(0, -3, 0));
          case 3:
              print date("l, j F Y", mktime(0, -2, 0));
          case 2:
              print date("l, j F Y", mktime(0, -1, 0));
          case 1:
              print date("l, j F Y", mktime(0, 0, 0));
              break;
          default:
              print("Zaterdag en Zondag tellen niet mee");
        }
}


Zo zou je moeten krijgen wat je zoekt, maar wel in omgekeerde volgorde. Als je het in de goeie volgorde hebben wil dan kun je eventueel in plaats van printen de zooi in een array gooien, en die reversen.

edit:
De fout in jouw code zit hem in de woensdag, waar je dezelfde regels hebt als bij de donderdag.


(Overigens is echo sneller dan print. ;))

[ Voor 32% gewijzigd door NMe op 22-11-2004 22:25 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

33999

Topicstarter
Helaas :)

Hetzelfde probleem maar dan omgekeerd;
Sunday, 21 November 2004Sunday, 21 November 2004Sunday, 21 November 2004Monday, 22 November 2004

Ook was het niet de bedoeling dat Sunday (0) mee zou worden genomen :)

/edit
De dinsdag aangepast, maar had niet echt te maken met het probleem.
Toch scherp gezien ;)

[ Voor 19% gewijzigd door 33999 op 22-11-2004 22:30 ]


Acties:
  • 0 Henk 'm!

  • muba
  • Registratie: April 2002
  • Laatst online: 19-10-2013

muba

Prince of Persia!

Ben zelf geen PHP'er (ben van het Perl kamp :) ), dus wellicht een FAQ, maar waarom is echo sneller dan print?

Reporter: Mister Gandhi, what do you think of western civilisation?
Gandhi: I think it would be a good idea


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

NMe84 schreef op maandag 22 november 2004 @ 22:22:
Zo zou je moeten krijgen wat je zoekt, maar wel in omgekeerde volgorde. Als je het in de goeie volgorde hebben wil dan kun je eventueel in plaats van printen de zooi in een array gooien, en die reversen.
waarom zet je die case's dan niet meteen in de juiste volgorde :P
MUBA schreef op maandag 22 november 2004 @ 22:29:
Ben zelf geen PHP'er (ben van het Perl kamp :) ), dus wellicht een FAQ, maar waarom is echo sneller dan print?
is het niet

[edit]
hmm, misschien wel, maar niet merkbaar iig, print returned een int en echo void :)

[ Voor 34% gewijzigd door Erkens op 22-11-2004 22:31 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

computeraap: Ik zie net dat je mktime niet goed gebruikt. Had je zelf in de manual ook kunnen lezen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function Get_Dates($dagnr) {
        
          switch($dagnr) {

          case 5:
              print date("l, j F Y", mktime(date("m"), date("d") - 4, date("Y")));
          case 4:
              print date("l, j F Y", mktime(date("m"), date("d") - 3, date("Y")));
          case 3:
              print date("l, j F Y", mktime(date("m"), date("d") - 2, date("Y")));
          case 2:
              print date("l, j F Y", mktime(date("m"), date("d") - 1, date("Y")));
          case 1:
              print date("l, j F Y", mktime(date("m"), date("d"), date("Y")));
              break;
          default:
              print("Zaterdag en Zondag tellen niet mee");
        }
}


MUBA: Moment, ik zoek het op in de manual.
Gevonden! *klik*
Erkens schreef op maandag 22 november 2004 @ 22:30:
waarom zet je die case's dan niet meteen in de juiste volgorde :P
Omdat dat ingewikkeldere code vereist, en daar ben ik te lui voor. :P

[ Voor 54% gewijzigd door NMe op 22-11-2004 22:39 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

NMe84 schreef op maandag 22 november 2004 @ 22:31:
Omdat dat ingewikkeldere code vereist, en daar ben ik te lui voor. :P
want? ik snap niet waarom je het omdraait is nergens voor nodig :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

Erkens schreef op maandag 22 november 2004 @ 22:33:
[...]

want? ik snap niet waarom je het omdraait is nergens voor nodig :)
Omdat ie bij case 5 alles onderliggende cases doorloopt (geen break tot in case 1), en andersom kan dat niet, omdat hij niet zonder break moet doorgaan als 1 bovenaan zou staan. :P Dit betekent weer dat je die date functie moet herhalen, wat neerkomt op de code uit de topicstart. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

NMe84 schreef op maandag 22 november 2004 @ 22:35:
[...]

Omdat ie bij case 5 alles onderliggende cases doorloopt (geen break tot in case 1), en andersom kan dat niet, omdat hij niet zonder break moet doorgaan als 1 bovenaan zou staan. :P Dit betekent weer dat je die date functie moet herhalen, wat neerkomt op de code uit de topicstart. :P
maandag avond 8)7 :*

Acties:
  • 0 Henk 'm!

  • Xenon
  • Registratie: Januari 2001
  • Laatst online: 14-07 09:50
PHP:
1
int mktime ( int hour, int minute, int second, int month, int day, int year [, int is_dst])


Sinds wanneer mag je maand, dag en jaar weglaten?

werk dan best met

PHP:
1
$time = mktime(0,0,0,date("m"),date("d"),date("Y"));

[ Voor 50% gewijzigd door Xenon op 22-11-2004 22:43 ]

ProtocoLAN.be: De beste LAN van de Maaskant


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 14-07 21:33

NMe

Quia Ego Sic Dico.

Xenon schreef op maandag 22 november 2004 @ 22:41:
Sinds wanneer mag je maand, dag en jaar weglaten?
Mag ik daar Erkens voor quoten?
8)7

Ff aanpassen in mijn post.

[ Voor 6% gewijzigd door NMe op 22-11-2004 22:43 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 18-07 12:07

Creepy

Tactical Espionage Splatterer

Compiteraap: zie ook: P&W FAQ - Leer **** debuggen!! en daarnaast de PHP manual. Met een beetje zoekwerk is hier vast zelf wel uit te komen :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.

Let op:
[topic=741020///#debug]P&W FAQ - Leer **** debuggen!![/]