Bekijk Volledige Versie : Vraagje over weergave datum en tijd
Erwin J. Loman
17/10/03, 04:00
Ik ben redelijk "groen" op het gebid van PHP en MySQL maar ben wel bezig om
wat gegevens op een website te plaatsen die ik via PHP uit een
MySQL-database haal. Het gaat om de gegevens van voetbalwedstrijden die nog
gespeeld worden of gespeeld zijn.
Op zich lukt het ophalen van de gegevens wel, maar ik wil de weergave van de
datum en de tijd graag aangepast hebben.
Op dit moment ziet het script er als volgt uit:
$query = "SELECT soort
, datum
, tijd
, thuisploeg
, uitploeg
, doelp_thuis
, doelp_uit
FROM wedstrijd
WHERE team = 'a1'
ORDER BY datum";
$info =mysql_query($query) or die ("Lezen gegevens mislukt.");
print "<table width=800 bordercolor=black border=0>
<tr bgcolor=green>
<td><strong>Soort</strong></td>
<td><strong>Speeldatum</strong></td>
<td><strong>Tijd</strong></td>
<td><strong>Thuisploeg</strong></td>
<td><strong>Uitploeg</strong></td>
<td><strong>Doelp_thuis</strong></td>
<td><strong>Doelp_uit</strong></td>
</tr>";
while ($gegeven = mysql_fetch_object($info)) {
print "<tr>
<td>$gegeven->soort</td>
<td>$gegeven->datum</td>
<td>$gegeven->tijd</td>
<td>$gegeven->thuisploeg</td>
<td>$gegeven->uitploeg</td>
<td>$gegeven->doelp_thuis</td>
<td>$gegeven->doelp_uit</td>
</tr> ";
}
print "</table>";
Ik zou graag de datum als volgt willen weergeven dd-mm-yyyy. Nu wordt deze
echter op de Amerikaanse wijze weergeven. Ik dacht dit te kunnen oplossen
met date_format(datum, '%d-%m-%Y'), maar deze levert helemaal geen resultaat
op.
Ook de tijd wil ik graag weergeven in uren en minuten (nu worden ook de
seconden weergegeven). Ook hiervoor dacht ik time_format(tijd, '%H:%i') te
kunnen gebruiken, maar ook deze levert niets op. De kolommen blijven na mijn
aanpassing leeg terwijl de overige gegevens wel opgehaald worden.
Weet iemand hoe ik dit kan oplossen?
Ik hoor het graag.
Met vriendelijke groeten,
Erwin Loman
Ronald Paul
17/10/03, 09:15
"Erwin J. Loman" <erwin.loman@planet.nl> schreef:
><td>$gegeven->datum</td>
><td>$gegeven->tijd</td>
[..]
>Ik zou graag de datum als volgt willen weergeven dd-mm-yyyy. Nu wordt deze
>echter op de Amerikaanse wijze weergeven. Ik dacht dit te kunnen oplossen
>met date_format(datum, '%d-%m-%Y'), maar deze levert helemaal geen resultaat
>op.
>Ook de tijd wil ik graag weergeven in uren en minuten (nu worden ook de
>seconden weergegeven). Ook hiervoor dacht ik time_format(tijd, '%H:%i') te
>kunnen gebruiken, maar ook deze levert niets op.
Voor beiden geldt dat je met $gegeven->datum verwijst naar een kolom
die "datum" heet. Als je de kolom echter verwerkt in een expressie
gaat die naam in de resultset verloren. Om die expressie alsnog een
naam te geven kun je het volgende doen:
DATE_FORMAT(..) AS datum
--
Groet, Ronald
Erwin J. Loman
17/10/03, 11:45
Ronald,
Zoals ik al aangegeven had ben ik redelijk "groen" op het gebied van PHP en
MySQL.
Ik denk dat ik met jouw oplossing wel uit de voeten zou moeten kunnen, maar
dan heb ik nog wel wat meer informatie nodig.
Waar moet ik dit commado (volgens mij zou het in mijn geval
DATE_FORMAT('%d-%m-%Y') worden) in het script plaatsen?
Ik hoor het graag.
Met vriendelijke groeten en alvast bedankt voor het meedenken,
Erwin Loman
"Ronald Paul" <usenet@rcpaul.nl> schreef in bericht
news:k95vov8bnqrcam0pac6nf7sr4k3loloqrv@4ax.com...
> "Erwin J. Loman" <erwin.loman@planet.nl> schreef:
>
> ><td>$gegeven->datum</td>
> ><td>$gegeven->tijd</td>
>
> [..]
>
> >Ik zou graag de datum als volgt willen weergeven dd-mm-yyyy. Nu wordt
deze
> >echter op de Amerikaanse wijze weergeven. Ik dacht dit te kunnen oplossen
> >met date_format(datum, '%d-%m-%Y'), maar deze levert helemaal geen
resultaat
> >op.
> >Ook de tijd wil ik graag weergeven in uren en minuten (nu worden ook de
> >seconden weergegeven). Ook hiervoor dacht ik time_format(tijd, '%H:%i')
te
> >kunnen gebruiken, maar ook deze levert niets op.
>
> Voor beiden geldt dat je met $gegeven->datum verwijst naar een kolom
> die "datum" heet. Als je de kolom echter verwerkt in een expressie
> gaat die naam in de resultset verloren. Om die expressie alsnog een
> naam te geven kun je het volgende doen:
>
> DATE_FORMAT(..) AS datum
>
> --
> Groet, Ronald
Erwin J. Loman
17/10/03, 11:45
Oeps...
Dit had ik natuurlijk zelf kunnen bedenken.
$query = "SELECT soort
, date_format(datum, '%d-%m-%Y') as datum
Dit werkt inderdaad prima.
Nogmaals bedankt voor het meedenken.
Met vriendelijke groeten,
Erwin Loman
"Erwin J. Loman" <erwin.loman@planet.nl> schreef in bericht
news:bmoddq$7tu$1@reader11.wxs.nl...
> Ronald,
>
> Zoals ik al aangegeven had ben ik redelijk "groen" op het gebied van PHP
en
> MySQL.
> Ik denk dat ik met jouw oplossing wel uit de voeten zou moeten kunnen,
maar
> dan heb ik nog wel wat meer informatie nodig.
> Waar moet ik dit commado (volgens mij zou het in mijn geval
> DATE_FORMAT('%d-%m-%Y') worden) in het script plaatsen?
>
> Ik hoor het graag.
>
> Met vriendelijke groeten en alvast bedankt voor het meedenken,
>
> Erwin Loman
>
> "Ronald Paul" <usenet@rcpaul.nl> schreef in bericht
> news:k95vov8bnqrcam0pac6nf7sr4k3loloqrv@4ax.com...
> > "Erwin J. Loman" <erwin.loman@planet.nl> schreef:
> >
> > ><td>$gegeven->datum</td>
> > ><td>$gegeven->tijd</td>
> >
> > [..]
> >
> > >Ik zou graag de datum als volgt willen weergeven dd-mm-yyyy. Nu wordt
> deze
> > >echter op de Amerikaanse wijze weergeven. Ik dacht dit te kunnen
oplossen
> > >met date_format(datum, '%d-%m-%Y'), maar deze levert helemaal geen
> resultaat
> > >op.
> > >Ook de tijd wil ik graag weergeven in uren en minuten (nu worden ook de
> > >seconden weergegeven). Ook hiervoor dacht ik time_format(tijd, '%H:%i')
> te
> > >kunnen gebruiken, maar ook deze levert niets op.
> >
> > Voor beiden geldt dat je met $gegeven->datum verwijst naar een kolom
> > die "datum" heet. Als je de kolom echter verwerkt in een expressie
> > gaat die naam in de resultset verloren. Om die expressie alsnog een
> > naam te geven kun je het volgende doen:
> >
> > DATE_FORMAT(..) AS datum
> >
> > --
> > Groet, Ronald
>
>
Erwin J. Loman
17/10/03, 13:30
Helaas treeds er nu een ander probleem op.
Door deze toevoeging lijkt de volgorde niet meer te werken.
De selectie ziet er nu als volgt uit:
$query = "SELECT soort
, date_format(datum, '%d-%m-%Y') as datum
, time_format(tijd, '%H:%i') as tijd
, thuisploeg
, uitploeg
, doelp_thuis
, doelp_uit
FROM wedstrijd
WHERE team = '$team'
ORDER BY datum";
Hoe kan ik dit oplossen??
"Erwin J. Loman" <erwin.loman@planet.nl> schreef in bericht
news:bmodlm$8g0$1@reader11.wxs.nl...
> Oeps...
>
> Dit had ik natuurlijk zelf kunnen bedenken.
> $query = "SELECT soort
> , date_format(datum, '%d-%m-%Y') as datum
>
> Dit werkt inderdaad prima.
>
> Nogmaals bedankt voor het meedenken.
>
> Met vriendelijke groeten,
> Erwin Loman
>
> "Erwin J. Loman" <erwin.loman@planet.nl> schreef in bericht
> news:bmoddq$7tu$1@reader11.wxs.nl...
> > Ronald,
> >
> > Zoals ik al aangegeven had ben ik redelijk "groen" op het gebied van PHP
> en
> > MySQL.
> > Ik denk dat ik met jouw oplossing wel uit de voeten zou moeten kunnen,
> maar
> > dan heb ik nog wel wat meer informatie nodig.
> > Waar moet ik dit commado (volgens mij zou het in mijn geval
> > DATE_FORMAT('%d-%m-%Y') worden) in het script plaatsen?
> >
> > Ik hoor het graag.
> >
> > Met vriendelijke groeten en alvast bedankt voor het meedenken,
> >
> > Erwin Loman
> >
> > "Ronald Paul" <usenet@rcpaul.nl> schreef in bericht
> > news:k95vov8bnqrcam0pac6nf7sr4k3loloqrv@4ax.com...
> > > "Erwin J. Loman" <erwin.loman@planet.nl> schreef:
> > >
> > > ><td>$gegeven->datum</td>
> > > ><td>$gegeven->tijd</td>
> > >
> > > [..]
> > >
> > > >Ik zou graag de datum als volgt willen weergeven dd-mm-yyyy. Nu wordt
> > deze
> > > >echter op de Amerikaanse wijze weergeven. Ik dacht dit te kunnen
> oplossen
> > > >met date_format(datum, '%d-%m-%Y'), maar deze levert helemaal geen
> > resultaat
> > > >op.
> > > >Ook de tijd wil ik graag weergeven in uren en minuten (nu worden ook
de
> > > >seconden weergegeven). Ook hiervoor dacht ik time_format(tijd,
'%H:%i')
> > te
> > > >kunnen gebruiken, maar ook deze levert niets op.
> > >
> > > Voor beiden geldt dat je met $gegeven->datum verwijst naar een kolom
> > > die "datum" heet. Als je de kolom echter verwerkt in een expressie
> > > gaat die naam in de resultset verloren. Om die expressie alsnog een
> > > naam te geven kun je het volgende doen:
> > >
> > > DATE_FORMAT(..) AS datum
> > >
> > > --
> > > Groet, Ronald
> >
> >
>
>
Maarten Wierda
17/10/03, 13:45
"Erwin J. Loman" wrote:
>
> Helaas treeds er nu een ander probleem op.
> Door deze toevoeging lijkt de volgorde niet meer te werken.
>
> De selectie ziet er nu als volgt uit:
> $query = "SELECT soort
> , date_format(datum, '%d-%m-%Y') as datum
> , time_format(tijd, '%H:%i') as tijd
> , thuisploeg
> , uitploeg
> , doelp_thuis
> , doelp_uit
> FROM wedstrijd
> WHERE team = '$team'
> ORDER BY datum";
>
> Hoe kan ik dit oplossen??
Probeer eens +-
SELECT soort, DATE_FORMAT(datum, '%d-%m-%Y') AS mijnDatum ORDER BY
mijnDatum
--
Cheers, Maarten Wierda
"Music is first, lyrics are secondary."
Erwin J. Loman
17/10/03, 14:00
Helaas, dat lost het probleem ook niet op.
Het probleem zit hem namelijk in het feit dat kennelijk de volgorde bepaald
wordt door van voor naar achter te gaan 04-10-2003 ligt voor 13-09-2003
omdat de 0 voor de 1 komt (zie hieronder).
Als je natuurlijk de amerikaanse notatie gebruikt gaat dit wel goed. Is dit
te omzeilen?
Met vriendelijke groeten,
Erwin Loman
Soort Speeldatum Tijd Thuisploeg Uitploeg Doelp_thuis Doelp_uit
comp 04-10-2003 10:00 Saenden D1 W.S.V. D3 0 5
comp 11-10-2003 11:00 Knollendam D1 W.S.V. D3 1 4
comp 13-09-2003 14:30 W.S.V. D3 V.V.Z. D4 16 0
oefen 18-10-2003 12:00 S.V.A. D2 W.S.V. D3
comp 20-09-2003 11:00 Zilvermeeuwen D3 W.S.V. D3 3 4
comp 25-10-2003 14:30 W.S.V. D3 Fortuna Wveer D3
comp 27-09-2003 14:30 W.S.V. D3 Zaanlandia D4 1 0
"Maarten Wierda" <moart3n@norecessDOT.com> schreef in bericht
news:3F8FD355.AF802A0D@norecessDOT.com...
> "Erwin J. Loman" wrote:
> >
> > Helaas treeds er nu een ander probleem op.
> > Door deze toevoeging lijkt de volgorde niet meer te werken.
> >
> > De selectie ziet er nu als volgt uit:
> > $query = "SELECT soort
> > , date_format(datum, '%d-%m-%Y') as datum
> > , time_format(tijd, '%H:%i') as tijd
> > , thuisploeg
> > , uitploeg
> > , doelp_thuis
> > , doelp_uit
> > FROM wedstrijd
> > WHERE team = '$team'
> > ORDER BY datum";
> >
> > Hoe kan ik dit oplossen??
>
> Probeer eens +-
>
> SELECT soort, DATE_FORMAT(datum, '%d-%m-%Y') AS mijnDatum ORDER BY
> mijnDatum
>
> --
> Cheers, Maarten Wierda
>
> "Music is first, lyrics are secondary."
Maarten Wierda
17/10/03, 14:00
"Erwin J. Loman" wrote:
> Helaas, dat lost het probleem ook niet op.
> Het probleem zit hem namelijk in het feit dat kennelijk de volgorde bepaald
> wordt door van voor naar achter te gaan 04-10-2003 ligt voor 13-09-2003
> omdat de 0 voor de 1 komt (zie hieronder).
>
> Als je natuurlijk de amerikaanse notatie gebruikt gaat dit wel goed. Is dit
> te omzeilen?
In dat geval dien je dus toch te sorten op datum. Probeer +-
SELECT soort, DATE_FORMAT(datum, '%d-%m-%Y') AS mijnDatum ORDER BY datum
> comp 04-10-2003 10:00 Saenden D1 W.S.V. D3 0 5
> comp 11-10-2003 11:00 Knollendam D1 W.S.V. D3 1 4
> comp 13-09-2003 14:30 W.S.V. D3 V.V.Z. D4 16 0
> oefen 18-10-2003 12:00 S.V.A. D2 W.S.V. D3
> comp 20-09-2003 11:00 Zilvermeeuwen D3 W.S.V. D3 3 4
> comp 25-10-2003 14:30 W.S.V. D3 Fortuna Wveer D3
> comp 27-09-2003 14:30 W.S.V. D3 Zaanlandia D4 1 0
Hey, allemaal bekende clubs :-)
Tip: <http://www.hensema.net/quote/>
--
Cheers, Maarten Wierda (Zaandijker)
"Music is first, lyrics are secondary."
Arnold Ligtvoet
17/10/03, 14:00
Erwin J. Loman wrote:
> "Maarten Wierda" <moart3n@norecessDOT.com> schreef in bericht
> news:3F8FD355.AF802A0D@norecessDOT.com...
>
>>"Erwin J. Loman" wrote:
>>
>>>Helaas treeds er nu een ander probleem op.
>>>Door deze toevoeging lijkt de volgorde niet meer te werken.
>>>
>>>De selectie ziet er nu als volgt uit:
>>>$query = "SELECT soort
>>>, date_format(datum, '%d-%m-%Y') as datum
>>>, time_format(tijd, '%H:%i') as tijd
>>>, thuisploeg
>>>, uitploeg
>>>, doelp_thuis
>>>, doelp_uit
>>>FROM wedstrijd
>>>WHERE team = '$team'
>>>ORDER BY datum";
>>>
>>>Hoe kan ik dit oplossen??
>>
>>Probeer eens +-
>>
>>SELECT soort, DATE_FORMAT(datum, '%d-%m-%Y') AS mijnDatum ORDER BY
>>mijnDatum
>>
>>--
>>Cheers, Maarten Wierda
>>
>>"Music is first, lyrics are secondary."
>
> Helaas, dat lost het probleem ook niet op.
> Het probleem zit hem namelijk in het feit dat kennelijk de volgorde
bepaald
> wordt door van voor naar achter te gaan 04-10-2003 ligt voor 13-09-2003
> omdat de 0 voor de 1 komt (zie hieronder).
>
> Als je natuurlijk de amerikaanse notatie gebruikt gaat dit wel goed.
> Is dit te omzeilen?
>
> Met vriendelijke groeten,
> Erwin Loman
Ik denk dat he zo wel moet kunnen:
$query = "SELECT soort
, datum
, date_format(datum, '%d-%m-%Y') as mijndatum
, time_format(tijd, '%H:%i') as mijntijd
, thuisploeg
, uitploeg
, doelp_thuis
, doelp_uit
FROM wedstrijd
WHERE team = '$team'
ORDER BY datum";
M.a.w. je haalt nog steeds de originele amerikaanse datum binnen voor de
order-by maar je displayed de europese datum.
Arnold
Ronald Paul
17/10/03, 14:45
"Erwin J. Loman" <erwin.loman@planet.nl> schreef:
>Helaas treeds er nu een ander probleem op.
>Door deze toevoeging lijkt de volgorde niet meer te werken.
>
>De selectie ziet er nu als volgt uit:
>$query = "SELECT soort
>, date_format(datum, '%d-%m-%Y') as datum
>, time_format(tijd, '%H:%i') as tijd
>, thuisploeg
>, uitploeg
>, doelp_thuis
>, doelp_uit
>FROM wedstrijd
>WHERE team = '$team'
>ORDER BY datum";
>
>Hoe kan ik dit oplossen??
Sorry, ik had de ORDER BY datum in je openingspost over het hoofd
gezien. Je moet zoals gezegd door Maarten en Arnold een alias
gebruiken die de kolomwaarde niet overschrijft. DATE_FORMAT
retourneert een string en geen datum, waardoor het bij het sorteren
fout gaat. Vergeet in de code de attribuutnamen van het
resultaat-object ook niet te veranderen in de nieuwe alias-namen. Als
je dus "..AS datum2.." gebruikt, wordt het ook gelijk $object->datum2.
MySQL's standaard manier om een datum weer te geven is overigens niet
Amerikaans, maar volgt de ISO-richtlijn (van groot naar klein dus).
Een Amerikaanse datum wordt IIRC als mm/dd/yyyy geschreven, en niet
als yyyy-mm-dd.
--
Groet, Ronald
Erwin J. Loman
17/10/03, 16:00
Beste Arnold/Paul/Maarten en Ronald,
Bedankt voor jullie hulp. Het probleem is opgelost en ik begrijp de
achterliggende gedachte ook nog.
Voor wat betreft de amerikaanse notatie: Inderdaad. yyyymmdd is niet
amerikaans. Ik had het ergens gelezen, maar dat is natuurlijk onzin.
Nogmaals bedankt voor de hulp.
Met vriendelijke groeten,
Erwin Loman
"Arnold Ligtvoet" <news@ligtvoet.org> schreef in bericht
news:vovm8m251e6nab@corp.supernews.com...
> Erwin J. Loman wrote:
> > "Maarten Wierda" <moart3n@norecessDOT.com> schreef in bericht
> > news:3F8FD355.AF802A0D@norecessDOT.com...
> >
> >>"Erwin J. Loman" wrote:
> >>
> >>>Helaas treeds er nu een ander probleem op.
> >>>Door deze toevoeging lijkt de volgorde niet meer te werken.
> >>>
> >>>De selectie ziet er nu als volgt uit:
> >>>$query = "SELECT soort
> >>>, date_format(datum, '%d-%m-%Y') as datum
> >>>, time_format(tijd, '%H:%i') as tijd
> >>>, thuisploeg
> >>>, uitploeg
> >>>, doelp_thuis
> >>>, doelp_uit
> >>>FROM wedstrijd
> >>>WHERE team = '$team'
> >>>ORDER BY datum";
> >>>
> >>>Hoe kan ik dit oplossen??
> >>
> >>Probeer eens +-
> >>
> >>SELECT soort, DATE_FORMAT(datum, '%d-%m-%Y') AS mijnDatum ORDER BY
> >>mijnDatum
> >>
> >>--
> >>Cheers, Maarten Wierda
> >>
> >>"Music is first, lyrics are secondary."
> >
>
> > Helaas, dat lost het probleem ook niet op.
> > Het probleem zit hem namelijk in het feit dat kennelijk de volgorde
> bepaald
> > wordt door van voor naar achter te gaan 04-10-2003 ligt voor 13-09-2003
> > omdat de 0 voor de 1 komt (zie hieronder).
> >
> > Als je natuurlijk de amerikaanse notatie gebruikt gaat dit wel goed.
> > Is dit te omzeilen?
> >
> > Met vriendelijke groeten,
> > Erwin Loman
>
> Ik denk dat he zo wel moet kunnen:
> $query = "SELECT soort
> , datum
> , date_format(datum, '%d-%m-%Y') as mijndatum
> , time_format(tijd, '%H:%i') as mijntijd
> , thuisploeg
> , uitploeg
> , doelp_thuis
> , doelp_uit
> FROM wedstrijd
> WHERE team = '$team'
> ORDER BY datum";
>
> M.a.w. je haalt nog steeds de originele amerikaanse datum binnen voor de
> order-by maar je displayed de europese datum.
>
> Arnold
>