Archief - PhP: Datum en tijd appart uit DB halen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

50Euro

Legacy Member
Op mijn site kan ik ergens datum + tijd ingeven.

Ik zet dit dan zo in mijn database =>
matchdatum datetime 0000-00-00 00:00:00

Als ik op mijn kalender klik krijg ik zoiets =>
http://www.tipke.be/nieuws.php?yearID=2005&monthID=7&dayID=2

Hoe kan ik nu met enkel het jaartal, maand en dag uit url de overeenkomstige data uit mijn database halen, de row selecteren? En hoe kan ik de tijd er dan ook nog eens appart uithalen?

Of moet ik datum / tijd appart in database steken?

Thx

Obliv`

Legacy Member
nee ge moet da nie appart in uw db steken
data uit uw db kunde muteren bij het opvragen, zulke dinges noeme 'single row functions' (er zijn ook nog veel andere namen voor)

use the force:
http://be.php.net/date

NeoNeke

Legacy Member
njah date functie geschikt om data om te zetten naar je gewenste date string als je met de mysql string werkt die MySQL u voorstelt... Want die moet je eerst omzetten naar den EPOCH tijd...

snelste manier is
substr ($date, 0, 4)
om bijvoorbeeld het jaar eruit te halen...

Wil je dat je makkelijk dan alles kan veranderen zodat je kan kiezen hoe je de data wil outputten (via date command) moet je eerst die string omzetten naar de epoch... zie mkdate functie hoe je dat moet doen, maar 't moet normaal ook lukken via strtotime funcite (string to time dus)

orez

Legacy Member
NeoNeke zei:
njah date functie geschikt om data om te zetten naar je gewenste date string als je met de mysql string werkt die MySQL u voorstelt... Want die moet je eerst omzetten naar den EPOCH tijd...

snelste manier is
substr ($date, 0, 4)
om bijvoorbeeld het jaar eruit te halen...

Wil je dat je makkelijk dan alles kan veranderen zodat je kan kiezen hoe je de data wil outputten (via date command) moet je eerst die string omzetten naar de epoch... zie mkdate functie hoe je dat moet doen, maar 't moet normaal ook lukken via strtotime funcite (string to time dus)

man man man.... waarom ZO moeilijk doen?

SELECT date_format(datum, '%d-%m-%Y') FROM tbl

geeft weer: 02-07-2005
enz.. waarom zo ingewikkeld doen als de date_format functie bestaat in SQL zelf ... voor meer info over time & date functies binnen SQL, of te weten wat er nog meer bestaat dan %d; %m; %Y zie: http://dev.mysql.com/doc/mysql/en/date-and-time-functions.html

NeoNeke

Legacy Member
mmh proper ja ('k wist niet dat dat kon)

maar stel nu dat je met nieuwssysteem of dergerlijk werkt... Zo selecteer je enkel de datum veronderstel ik, moet je dan apart iedere keer alle kolommen definiëren (zo bedoel ik dus: SELECT title, message, date_format(datum, '%d-%m-%Y') FROM nieuws)

denk dat het dus wat handiger kan zijn als je alle intenties ofzo nodig hebt van een bepaalde tabel via de "normale" manier te werken: SELECT * FROM nieuws en via php zoals ik al aangegeven heb alles omzetten?

Eerste manier is denk ik soms wat te omslachtig als er grote tabellen zijn...

Of denk ik verkeerd?

dJeez

Legacy Member
Je denkt duidelijk verkeerd. Een "select *" is zowat het slechtste wat je kan doen, zeker als er veel kolommen in je tabel steken en je er daar maar pakweg 2 of 3 effectief van gebruikt.

orez

Legacy Member
NeoNeke zei:
mmh proper ja ('k wist niet dat dat kon)

maar stel nu dat je met nieuwssysteem of dergerlijk werkt... Zo selecteer je enkel de datum veronderstel ik, moet je dan apart iedere keer alle kolommen definiëren (zo bedoel ik dus: SELECT title, message, date_format(datum, '%d-%m-%Y') FROM nieuws)

denk dat het dus wat handiger kan zijn als je alle intenties ofzo nodig hebt van een bepaalde tabel via de "normale" manier te werken: SELECT * FROM nieuws en via php zoals ik al aangegeven heb alles omzetten?

Eerste manier is denk ik soms wat te omslachtig als er grote tabellen zijn...

Of denk ik verkeerd?

SELECT * is idd niet de manier... beste is mooi alle velden apart definiëren (hoef je trouwens meestal maar 1x te doen... dus zoveel extra werk is het niet).

als je zoals djeez enorm grote databases hebt met enorm veel kollomen (+50 kolommen + 50000 records) dan scheelt het enorm veel als je maar van die 50 records 5 kolommen ophaalt ipv alle 50+, de performance stijgt er toch redelijk van ;)

Best dat je mss ook nog doet dat ik vergeten te vermelden heb is date_format(datum, 'format') AS datum

de AS statement, soms struikelt ie erover als je het niet definieert soms niet... Ma vo de zekerheid plaats je dit best elke male:)

NeoNeke

Legacy Member
hmm k bedankt voor info,...
'k zal dan in het vervolg zo beginnen werken ge hebt me overtuigt :)

Kan je dan ook die format (van die date) zo bepalen dat hij dat, dan in het Nederlands output bijvoorbeeld? Of moet dit dan wel expliciet via php gebeuren?

orez

Legacy Member
NeoNeke zei:
hmm k bedankt voor info,...
'k zal dan in het vervolg zo beginnen werken ge hebt me overtuigt :)

Kan je dan ook die format (van die date) zo bepalen dat hij dat, dan in het Nederlands output bijvoorbeeld? Of moet dit dan wel expliciet via php gebeuren?

die weet ik niet onmiddelijk vanbuiten, want kgebruik meestal enkel 12-12-2005, hiervoor heb ik dan ni echt een nederlandse benaming voor nodig.

Ma lees s die pagina van date en time functies... staat mss iets over in :)

Obliv`

Legacy Member
NeoNeke zei:
Kan je dan ook die format (van die date) zo bepalen dat hij dat, dan in het Nederlands output bijvoorbeeld? Of moet dit dan wel expliciet via php gebeuren?

ik werk altijd met asp maar als ik dan format(date, 'DD MMMM YYYY) doe in men sql
de ene keer staat het dan als
03 July 2005
de andere keer
03 juli 2005 :)

ook geen idee hoe dat komt :)

[DZM]TheOne

Legacy Member
Obliv` zei:
ik werk altijd met asp maar als ik dan format(date, 'DD MMMM YYYY) doe in men sql
de ene keer staat het dan als
03 July 2005
de andere keer
03 juli 2005 :)

ook geen idee hoe dat komt :)

hangt van systeeminstellingen server af

bestaan oplossingen voor

('k zal anders deze avond es kijken voor concrete info)

EDIT:
@Obliv': voor asp bekijk je dit best eens http://www.w3schools.com/vbscript/func_setlocale.asp

@50Euro: met de links van ru`orez en Obliv' kom je een heel eind hoor 50Euro, maar eerst goed alles uitpluizen

Obliv`

Legacy Member
in lastige gevallen sla ik datums appart op (kolom met dag, maand een jaar)
zo zou uw query er ongeveer moeten uitzien
SELECT Naam, Titel, Bericht, Datum
FROM Matchen
WHERE Format(Datum, 'DD') = " & Request.QueryString("dag") & "
AND Format(Datum, 'MM') = " & Request.QueryString("maand") & "

als em rijen teruggeeft zit de datum er in, ander dus niet...
vb is wel ASP & MSACCESS, ik ken geen php & mysql maar adhv dit voorbeeld moet je het toch kunne uitwerken ze
google is your friend

50Euro

Legacy Member
Dit werkt ook niet.. Ben ik op goede weg?

PHP:
<?php

$jaar = $_GET['yearID'];
$maand = $_GET['monthID'];
$dag = $_GET['dayID'];
$datum = $jaar."-".$maand."-".$dag;

$query = mysql_query("SELECT * FROM matchen WHERE DATE_FORMAT('matchdatum','%Y-%c-%e') = '".$datum."'");

if(mysql_num_rows($query) > 0) { // datum in database
	echo $row['matchtegenstander'];
}
?>

Datum staat zo in db => 2005-07-16 14:00:00

url => http://www.tipke.be/nieuws.php?yearID=2005&monthID=7&dayID=16

LunchBox

Legacy Member
aangezien uw $datum korter is dan die in de database (waar nog tijd bij staat) zult ge een LIKE '".$datum."%' moeten gebruiken vermoed ik omdat ze nu niet gelijk zijn.

50Euro

Legacy Member
LunchBox zei:
aangezien uw $datum korter is dan die in de database (waar nog tijd bij staat) zult ge een LIKE '".$datum."%' moeten gebruiken vermoed ik omdat ze nu niet gelijk zijn.

Inderdaad, ik doe het nu zo en het werkt =>

PHP:
$datum = $jaar."-".$maand."-".$dag;
$query = mysql_query("SELECT * FROM users WHERE matchdatum LIKE '$datum%'");

Als iemand meer wil weten contact me..
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan