[php] Raar switch probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
Ik heb een functie die een normale nederlandse maand uit een nummer terug geeft (01 = januari etc).

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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
function getDutchMonth($maand) {
                    switch($maand) {
                                    case 01:
                                        $datum_maand = "januari";
                                    break;

                                    case 02:
                                        $datum_maand = "februari";
                                    break;

                                    case 03:
                                        $datum_maand = "maart";
                                    break;

                                    case 04:
                                        $datum_maand = "april";
                                    break;

                                    case 05:
                                        $datum_maand = "mei";
                                    break;

                                    case 06:
                                        $datum_maand = "juni";
                                    break;

                                    case 07:
                                        $datum_maand = "juli";
                                    break;

                                    case 08:
                                        $datum_maand = "augustus";
                                    break;

                                    case 09:
                                        $datum_maand = "september";
                                    break;

                                    case 10:
                                        $datum_maand = "oktober";
                                    break;

                                    case 11:
                                        $datum_maand = "november";  
                                    break;

                                    case 12:
                                        $datum_maand = "december";
                                    break;

                
                                    default:
                                        $datum_maand = "onbekende maand";
                                    break;
                            }
                            
                            return $datum_maand;
}


Nu gaat dat voor alle maanden goed behalve 08 (aug) en 09 (september)
Ik snal er werkelijk geen hout van

Ik heb even een testje gedaan

de timestamp = 983475000
de maand = 03
output maart

de timestamp = 1030905000
de maand =09
output onbekende maand :(

Ik gebruik daarvoor de volgende code

code:
1
2
3
4
$maand2 = date("m", $_POST['maand']);
echo("de timestamp = ".$_POST['maand']."<br>");
echo("de maand =".$maand2."<br>");
echo("Output".getDutchMonth($maand2));


Isser iemand die mij op een schoonheidsfoutje kan betrappen :P

[ Voor 12% gewijzigd door BierPul op 18-04-2003 14:23 ]

Ja man


Acties:
  • 0 Henk 'm!

  • Rotjeknor
  • Registratie: April 2001
  • Laatst online: 01-04-2023
Doe dit eens:
PHP:
1
2
$maand = "08";
echo("Output".getDutchMonth($maand));

Ook Knor is aangestoken met het ligfietsvirus!


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
* BierPul wordt gek ---> onbekende maand :(

Al is dat niet zo gek aangezien ik hem daar als een string aanbied als ik de "" weghaal pakt hij hem wel op als int en geeft ie netjes augustus :)

[ Voor 63% gewijzigd door BierPul op 18-04-2003 14:27 ]

Ja man


Acties:
  • 0 Henk 'm!

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07 12:07
kun je geen propere conversie op die string zetten (mijn PHP dagen zijn al wat oud maar je kunt vast tegen PHP zeggen dat "09" is in feite 9 (integer value) en dan al je spul in een array zetten:

dutchMonths = ["januari",..., ,]; //ie Array Syntax ken ik niet voor PHP

$maand2 = toInteger(date(...)); //misschien doet date()+0 het wel :)

end dan echo "output".dutchMonths[$maand2];

da ineens een paar tientallen regels minder en is nog sneller ook...

edit:
$monthNames = array("januari","feb",....);
$maand = (int) date(....);
echo "MonthName".$monthNames[$maand];

[ Voor 16% gewijzigd door hobbit_be op 18-04-2003 14:30 ]


Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13:04
Ten eerste zou ik quotes om de case-statements heenzetten.

Ten tweede: waarom niet in een array?

$maand[1] = 'januari';
$maand[2] = 'februari';
...

Dan kan je het aanroepen met echo $maand[date('m')];

Maar het blijft idd erg raar dat alles werkt behalve de 8 en 9...

[ Voor 22% gewijzigd door sjroorda op 18-04-2003 14:27 ]


Acties:
  • 0 Henk 'm!

Verwijderd

setlocale en strftime ??

setlocale (LC_TIME, 'nl_NL');
strftime ("%A %d %B %Y @ %H:%M",$row['tijd']);

en dan krijg ik wel degelijk nederlandstalige namen voor m'n maanden en dagen.
is een alternatief....misschien niet wat je had gewenst..

Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
sjroorda schreef op 18 April 2003 @ 14:26:
Maar het blijft idd erg raar dat alles werkt behalve de 8 en 9...
Thnx voor de tip is inderdaad handiger maar dan blijft het inderdaad erg vaag :/

Ja man


Acties:
  • 0 Henk 'm!

  • BierPul
  • Registratie: Juni 2001
  • Laatst online: 12-09 14:07

BierPul

2 koffie graag

Topicstarter
De array oplossing is gelukt... thnx :D

Ja man


Acties:
  • 0 Henk 'm!

  • Morrar
  • Registratie: Juni 2002
  • Laatst online: 08:20
Is het niet gewoon dat getallen met een 0 als octaal worden opgevat? Tot 8 gaat het goed omdat er geen verschil octaal <-> int is :)

Acties:
  • 0 Henk 'm!

Verwijderd

Als wat jij daar typte directe output van je script is dan valt mij op dat:

de maand = 03
de maand =09

(spatie?)
(of heb je dit zelf getypt?)

Acties:
  • 0 Henk 'm!

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 13:04
Morrar schreef op 18 april 2003 @ 20:12:
Is het niet gewoon dat getallen met een 0 als octaal worden opgevat? Tot 8 gaat het goed omdat er geen verschil octaal <-> int is :)
_/-\o_
Pagina: 1