[PHP/MYSQL] Maand namen in het nederlands

Pagina: 1
Acties:
  • 296 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hoi,

Ik heb in een MYSQL tabel wat datums staan, nu kan ik deze met php en mysql laten zien in verschillende formaten, dat is niet zo'n probleem. Alleen wanneer ik de namen laat zien zijn deze engels, setlocale en al die dingen geprobeerd maar dat werkt niet. Nu wil ik een array maken maar ik snap niet echt goed hoe dat moet.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
                        <?php
                            
                            //setlocale(LC_TIME,"dutch");

                            mysql_select_db("brick");
                            
                            $result = mysql_query("SELECT nr, plaats, cafe, DATE_FORMAT(datum,'%e') as dag,DATE_FORMAT(datum,'%c') as maand FROM optredens ORDER BY datum", $db);
                            
                            $maandnamen = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli','augustus', 'september', 'oktober', 'november','december');
                            

                            while ($myrow = mysql_fetch_row($result))

                            {
                            printf("<TR align=\"left\"><TD align=\"left\" class=\"headline\">%s&nbsp;%s</TD><TD align=\"right\" class=\"headline\">&nbsp;</TD></TR>", $myrow[3], $myrow[4]);
                            printf("<TR align=\"center\"><TD colspan=\"2\" class=\"data\"><A class=\"data\" HREF=agenda.php?nr=%s>&nbsp;%s&nbsp;</A></TD></TR>\n",
                            $myrow[0], $myrow[1]);
                            printf("<TR align=\"center\"><TD colspan=\"2\" class=\"data\"><A class=\"data\" HREF=agenda.php?nr=%s>&nbsp;%s&nbsp;</A></TD></TR>\n",
                            $myrow[0], $myrow[2]);
                            }                               
                            
                        ?>


hoe zorg ik er nou voor dat $myow[4] (maand) uit de array de bijbehorende maand-naam haalt?

$maand = $maandnamen[myrow[4]] werkt bijvoorbeeld niet.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Verwijderd schreef op 10 mei 2004 @ 13:31:
$maand = $maandnamen[myrow[4]] werkt bijvoorbeeld niet.
$maand = $maandnamen[$myrow[4]]

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

setlocale("nl_NL"); voor Linux en setlocale("nld_nld"); voor Windows. Een voorbeeldje direct uit een van mijn scripts:
PHP:
1
2
3
4
5
6
7
8
9
function NLTime($tijd = FALSE) {

    setlocale(LC_ALL, "nld_nld");
    if (!$tijd)

      return strftime("%A %d %B %Y om %H:%M");
    else
      return strftime("%A %d %B %Y om %H:%M", strtotime($tijd));
}


Bij nieuwere versies van PHP wil dit ook:
PHP:
1
setlocale(LC_ALL, "nl_NL", "nld_nld", "dutch");

[ Voor 22% gewijzigd door NMe op 10-05-2004 13:35 ]

'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 10 mei 2004 @ 13:34:
setlocale("nl_NL"); voor Linux en setlocale("nld_nld"); voor Windows. Een voorbeeldje direct uit een van mijn scripts:
PHP:
1
2
3
4
5
6
7
8
9
function NLTime($tijd = FALSE) {

    setlocale(LC_ALL, "nld_nld");
    if (!$tijd)

      return strftime("%A %d %B %Y om %H:%M");
    else
      return strftime("%A %d %B %Y om %H:%M", strtotime($tijd));
}
moet je er wel even bij zeggen dat dit niet op iedere server werkt ;)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Erkens schreef op 10 mei 2004 @ 13:35:
[...]

moet je er wel even bij zeggen dat dit niet op iedere server werkt ;)
Deed ik, ik noemde Linux en Windows apart. :P Maar idd, de taalfiles moeten wel aanwezig zijn. :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!

Verwijderd

Topicstarter
Erkens schreef op 10 mei 2004 @ 13:32:
[...]

$maand = $maandnamen[$myrow[4]]
PHP:
1
2
3
4
5
6
7
8
9
10
11
$maandnamen = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli','augustus', 'september', 'oktober', 'november','december');
                            
                            

                            while ($myrow = mysql_fetch_row($result))
                            
                            {

                            $maand = $maandnamen[$myrow[4]]

                            printf("<TR align=\"left\"><TD align=\"left\" class=\"headline\">%s&nbsp;%s</TD><TD align=\"right\" class=\"headline\">&nbsp;</TD></TR>", $myrow[3], $maand);


Dit geeft een parse error in de printf regel.

Voor de anderen; de tijd settings enzo werken niet ik kan geen taal bestanden toevoegen de server is freebsd.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

ooit van puntcomma's gehoord :z
leer eens debuggen ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
hehehe bedankt voor de tip

PHP:
1
2
3
4
5
6
7
8
9
10
11
                            $maandnamen = array('januari', 'februari', 'maart', 'april', 'mei', 'juni', 'juli','augustus', 'september', 'oktober', 'november','december');
                            
                            

                            while ($myrow = mysql_fetch_row($result));
                            
                            {

                            $maand = $maandnamen[$myrow[4]];

                            printf("<TR align=\"left\"><TD align=\"left\" class=\"headline\">%s&nbsp;%s</TD><TD align=\"right\" class=\"headline\">&nbsp;</TD></TR>", $myrow[3], $maand);


Geen parse error meer maar wel lege velden

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

zou je overigens iets aan die layout vern*king kunnen doen? even een extra entertje erin ofzo?
dit leest verre van handig namelijk.

Als je lege velden hebt, wat doe je dan? juist kijken waarom? dus eens goed debuggen, welke data heb je, wat komt daaruit, en waarom?

en uiteraard een error_reporting(E_ALL) gebruiken :Y)

[ Voor 10% gewijzigd door Erkens op 10-05-2004 13:59 ]


Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Is dit nu zo'n probleem ? Als je geen locales kan gebruiken, dan maakt je een array aan met 12 waarden die de namen bevatten in de taal die je wil, en aan de hand van het maandnummer kun je dan de naam uit de array vissen. Lijkt me een vrij simpel probleem en vrij simpel op te lossen.

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

igmar schreef op 10 mei 2004 @ 14:34:
Is dit nu zo'n probleem ? Als je geen locales kan gebruiken, dan maakt je een array aan met 12 waarden die de namen bevatten in de taal die je wil, en aan de hand van het maandnummer kun je dan de naam uit de array vissen. Lijkt me een vrij simpel probleem en vrij simpel op te lossen.
Volgens mij heb je dit topic niet echt gelezen, want dat is precies wat TS doet, maar wat hem niet lukt door een simpel debugprobleempje. :)

'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!

Verwijderd

Topicstarter
Erkens schreef op 10 mei 2004 @ 13:59:
zou je overigens iets aan die layout vern*king kunnen doen? even een extra entertje erin ofzo?
dit leest verre van handig namelijk.

Als je lege velden hebt, wat doe je dan? juist kijken waarom? dus eens goed debuggen, welke data heb je, wat komt daaruit, en waarom?

en uiteraard een error_reporting(E_ALL) gebruiken :Y)
Sorry van de lay-out, zal er rekening mee houden.
In de tabel zijn geen lege datum velden.
Verder weet ik niks van error_reporting en debuggen, ik ben net begonnen met php.
Ik ben alleen al 3 dagen bezig met dit probleem dus postte het hier in de hoop dat iemand een oplossing heeft.

Zou het misschien kunnen dat hij die maand als text ziet ipv getal ofzo?
Moet ik die string dan converteren naar een integer ofzo?

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

zelf zou ik geen mysql_fetch_row() gebruiken, maar mysql_fetch_assoc() hierdoor hoef je niet met dat nummertje (4) te werken, maar kan je gewoon $myrow['maand'] gebruiken Wel zo handig :Y)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
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
mysql_select_db("brick");
                            
                            $result = mysql_query("SELECT nr, plaats, cafe, 
DATE_FORMAT(datum,'%e') as dag,DATE_FORMAT(datum,'%c')
 as maand FROM optredens ORDER BY datum", $db);
                            
                            $maandnamen = array('niks', 'januari', 'februari', 'maart',
 'april', 'mei', 'juni', 'juli','augustus', 'september', 'oktober', 'november','december');
                            
                            $maand = $maandnamen[$myrow['maand']];

                            while ($myrow = mysql_fetch_assoc($result))
                            
                            {
                            printf("<TR align=\"left\"><TD align=\"left\" class=\"headline\">
%s&nbsp;%s</TD><TD align=\"right\" class=\"headline\">&nbsp;</TD></TR>
", $myrow['dag'], $maand);
                            printf("<TR align=\"center\"><TD colspan=\"2\" class=\"data\">
<A class=\"data\" HREF=agenda.php?nr=%s>&nbsp;%
s&nbsp;</A></TD></TR>\n", $myrow['nr'], $myrow['plaats']);
                            printf("<TR align=\"center\"><TD colspan=\"2\" class=\"data\">
<A class=\"data\" HREF=agenda.php?nr=%s>&nbsp;%
s&nbsp;</A></TD></TR>\n", $myrow['nr'], $myrow['cafe']);
                            };


Nu geeft hij alles weer behalve de maand :/

[ Voor 28% gewijzigd door Verwijderd op 10-05-2004 16:39 ]


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

waarom staat het dan ook buiten je while |:(

Acties:
  • 0 Henk 'm!

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 19-09 09:34

thomaske

» » » » » »

Verwijderd schreef op 10 mei 2004 @ 15:57:
[...]
Verder weet ik niks van error_reporting en debuggen, ik ben net begonnen met php.
Ik begrijp dat je net begonnen bent met PHP en dat daarom het een en ander nog onduidelijk is. juist daarom is het heel erg leerzaam om te debuggen!

Hier staat wat meer informatie over debuggen. Succes!

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Erkens schreef op 10 mei 2004 @ 16:39:
waarom staat het dan ook buiten je while |:(
hahaha hartstikke bedankt voor de tip nu werkt het :D

Acties:
  • 0 Henk 'm!

  • David
  • Registratie: Februari 2001
  • Laatst online: 20-09 07:23
Erkens schreef op 10 mei 2004 @ 16:08:
zelf zou ik geen mysql_fetch_row() gebruiken, maar mysql_fetch_assoc() hierdoor hoef je niet met dat nummertje (4) te werken, maar kan je gewoon $myrow['maand'] gebruiken Wel zo handig :Y)
Of mysql_fetch_array, die zowel een array met numerieke indexen als een associatieve array returnt. Hoef je niet je hele script om te bouwen.

Dato DUO synth voor twee


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

DiMension schreef op 10 mei 2004 @ 16:49:
[...]


Of mysql_fetch_array, die zowel een array met numerieke indexen als een associatieve array returnt. Hoef je niet je hele script om te bouwen.
je kan het beter meteen duidelijk doen, daarnaast als je fetch_array gebruikt dan sla je dus alle data 2x op, het is maar wat je leuk vind ;)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Erkens schreef op 10 mei 2004 @ 17:02:
[...]

je kan het beter meteen duidelijk doen, daarnaast als je fetch_array gebruikt dan sla je dus alle data 2x op, het is maar wat je leuk vind ;)
offtopic:
Ik snap de reden voor de brede keuzemogelijkheid aan fetch-functies niet. Fetch row, array, assoc, object.... Ik zag toen ik net begon door de bomen het bos niet meer. Op een gegeven moment ben ik gewoon standaard fetch_object gaan gebruiken, meer uit gewoonte dan wat anders.

'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!

  • Steven
  • Registratie: December 2000
  • Laatst online: 05-07 21:17
Het doet gewoon 3 verschillende dingen hoor.

row: Retourneerd een genummerd array met resultaat
array: Retourneerd een array met kolomnamen als sleutel
object: retourneerd een object met de resultaten (zie ik zolang er geen functies inzitten weinig nut van)

Acties:
  • 0 Henk 'm!

  • David
  • Registratie: Februari 2001
  • Laatst online: 20-09 07:23
Steven schreef op 10 mei 2004 @ 19:47:
Het doet gewoon 3 verschillende dingen hoor.
row: Retourneerd een genummerd array met resultaat
array: Retourneerd een array met kolomnamen als sleutel
object: retourneerd een object met de resultaten (zie ik zolang er geen functies inzitten weinig nut van)
Je lijstje is niet helemaal juist.
mysql_fetch_assoc: returnt een associatieve array (een array met kolomnamen als sleutel)
mysql_fetch_array: returnt een array die zowel de items uit mysql_fetch_row als mysql_fetch_assoc bevat. De meest flexibele, maar inderdaad ook de meest resource-vretende.

Dato DUO synth voor twee


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

DiMension schreef op 10 mei 2004 @ 20:01:
[...]

Je lijstje is niet helemaal juist.
mysql_fetch_assoc: returnt een associatieve array (een array met kolomnamen als sleutel)
mysql_fetch_array: returnt een array die zowel de items uit mysql_fetch_row als mysql_fetch_assoc bevat. De meest flexibele, maar inderdaad ook de meest resource-vretende.
Wat ik met mijn vraag bedoelde is: "Waarom hadden ze niet genoeg aan alleen fetch array of row, of desnoods beiden? Waarom 4 functies?" :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!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 14:28
Omdat mysql_fetch_assoc gewoon veel sneller is dan de rest. Ik heb het niet zelf gemeten maar het schijnt zo te zijn.

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

NMe84 schreef op 10 mei 2004 @ 20:14:
[...]

Wat ik met mijn vraag bedoelde is: "Waarom hadden ze niet genoeg aan alleen fetch array of row, of desnoods beiden? Waarom 4 functies?" :P
omdat er ook meerdere wegen naar rome zijn aangelegd?
zelf gebruik ik alleen fetch_assoc, omdat dit voor mij de duidelijkste code opleverd.
djluc schreef op 10 mei 2004 @ 23:14:
Omdat mysql_fetch_assoc gewoon veel sneller is dan de rest. Ik heb het niet zelf gemeten maar het schijnt zo te zijn.
geen idee hoe je hier het beste een benchmark voor moet schrijven, maar ik gok dat fetch_row sneller is juist omdat hier een array gebruikt wordt die overeenkomt met de results van mysql, maw hier hoeft niet de kolomnaam bij "opgezocht" te worden. Maar zonder betrouwbare benchmark is dat lastig te zeggen.
Zelf vind ik die paar milisec. niet echt boeiend, liever makkelijk onderhoudbare code :)

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

fetch_row is het efficienst, gewoon integer indices, dus minder resourcevretend dan de strings van fetch_assoc

En computeraap, heel cool dat je net bent begonnen enzo, maar we gaan hier op GoT niet jouw typo's oplossen, daar is het forum simpelweg gewoon niet voor. We verwachten van onze bezoekers dat ze zelf eerst debuggen voordat ze met hun probleem komen, en als ze dat (nog) niet kunnen, tja, dan moeten ze dat eerst maar leren he :)
Zie P&W FAQ - Leer debuggen!! voor meer info :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

An important thing to note is that using mysql_fetch_assoc() is not significantly slower than using mysql_fetch_row(), while it provides a significant added value.
http://nl.php.net/manual/en/function.mysql-fetch-assoc.php

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
Is JavaScript een oplossing, dat scheelt in ieder geval serverload? Ik heb ooit in React Bugs en Featurerequests een oplossing geplaatst voor dit probleem. Het geeft de maanden weer in de taal van het besturingssyteem/landeninstellingen.

[rml][ TPL] [ OPL] Datum Nederlands/Engels[/rml]

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

Persoonlijk vind ik het opmaken van een datum string de taak van de applicatie, niet die van de client. Je weet nooit van te voren hoe het eruit komt te zien.

En ook bij de server is het 9 van de 10x bekend wat de taal van de browser/os van de client is, dus daar kan je ook zelf rekening mee houden. En serverload? tja, een server is eenvoudig te upgraden, en dat weegt wat mij betreft meer op dan dat je afhankelijk wordt van een stukje javascript die wellicht geblokkeerd wordt door een paranoide gebruiker ;)

Acties:
  • 0 Henk 'm!

  • TRON
  • Registratie: September 2001
  • Laatst online: 16-09 13:13
Ja idd, daar heb je gelijk in. Dat is ook een van de redenen waarom ik dat niet via JavaScript doe. Maar goed, ieder z'n voorkeuren :)

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)

Pagina: 1