Beste,

Ik zit met een probleem bij mijn coupon systeem.

Ik gebruik onderstaande functie voor het opvragen van de coupon "status":

<?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;
}
}
}
?>
Echter krijg ik telkens false terug.
Ik zie de fout niet, wie van jullie kan mij hierbij helpen?

Hartelijk bedankt, 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?
Tja foutafhandeling zal al genoeg moeten opleveren en een echo'tje van het sql statement dan kan je zien welke query er gebakken wordt.

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 ;-)
Geeft (zoals verwacht) 1 resultaat terug met id = 1.

Ik dacht dat het aan die between lag, schijnbaar niet.

Alle datum velden in mijn database zijn datetime velden, deze 2 dus ook :)
Tevens heb ik bij een insert query (die hij niet uit wil voeren?) gezet: or die (mysql_error());

Maar het lijkt erop dat hij niet door de check functie heen komt, want de code wordt niet uitgevoerd.

Niet Bumpen:

Twee of meer keer achter elkaar in een topic posten heet bumpen. Bumpen is pas na 24 uur toegestaan en kan een reden zijn voor de admins en moderators om een topic te sluiten. Gebruik indien nodig de knop om je tekst aan te passen.

SanThe.


Excuses, zal niet weer gebeuren.
Noppes schreef op 14.12.2008 17:30
En als gedlig_van / gedlig_tot een date type is dan moet je CURDATE() gebruiken
Gebruik dan de constante CURRENT_DATE, daar heb je meer aan dan een totaal onbekende en overbodige functie CURDATE().

CURRENT_DATE pakt uitsluitend de datum en is ook bruikbaar in echte databases.

Reageren