BETWEEN 2 datums van mysql.
Ik zit met een probleem bij mijn coupon systeem.
Ik gebruik onderstaande functie voor het opvragen van de coupon "status":
Code (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
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
<?php
function check_coupon($code) { // $code is bijvoorbeeld: EC_12345-123#
if (strlen($code) == 13) {
$query = mysql_query("SELECT
id
FROM
shop_coupons
WHERE
coupon_code = '". mysql_real_escape_string($code) ."'
AND
user_id = '". $_SESSION['id'] ."'
AND
(
NOW()
BETWEEN
geldig_van
AND
geldig_tot
)");
if (mysql_num_rows($query) == 1) {
return true;
} else {
return false;
}
}
}
?>
function check_coupon($code) { // $code is bijvoorbeeld: EC_12345-123#
if (strlen($code) == 13) {
$query = mysql_query("SELECT
id
FROM
shop_coupons
WHERE
coupon_code = '". mysql_real_escape_string($code) ."'
AND
user_id = '". $_SESSION['id'] ."'
AND
(
NOW()
BETWEEN
geldig_van
AND
geldig_tot
)");
if (mysql_num_rows($query) == 1) {
return true;
} else {
return false;
}
}
}
?>
Echter krijg ik telkens false terug.
Ik zie de fout niet, wie van jullie kan mij hierbij helpen?
Hartelijk bedankt, Mario Lamers.
Gewijzigd op 01/01/1970 01:00:00 door Mario Lamers
Blijkbaar geeft de query niet precies 1 resultaat terug. Voor hem eens uit in bijvoorbeeld phpMyAdmin en kijk eens wat het resultaat van deze query wel is?
En als gedlig_van / gedlig_tot een date type is dan moet je CURDATE() gebruiken
En als gedlig_van / gedlig_tot een datetime type is dan kan je NOW() gebruiken
@Noppes: in geval van een DATE veld kun je ook gewoon NOW() gebruiken, het tijd gedeelte wordt dan simpelweg genegeerd ;-)
Ik dacht dat het aan die between lag, schijnbaar niet.
Alle datum velden in mijn database zijn datetime velden, deze 2 dus ook :)
Gewijzigd op 01/01/1970 01:00:00 door Mario Lamers
Maar het lijkt erop dat hij niet door de check functie heen komt, want de code wordt niet uitgevoerd.
Niet Bumpen::
Excuses, zal niet weer gebeuren.
Gewijzigd op 01/01/1970 01:00:00 door Mario Lamers
Noppes schreef op 14.12.2008 17:30:
Gebruik dan de constante CURRENT_DATE, daar heb je meer aan dan een totaal onbekende en overbodige functie CURDATE().En als gedlig_van / gedlig_tot een date type is dan moet je CURDATE() gebruiken
CURRENT_DATE pakt uitsluitend de datum en is ook bruikbaar in echte databases.