Datum query
Ik zit een beetje te prutsen met een query.
In database heb ik een tabel genaamd tld. Hier staan allemaal extenties voor domeinnamen, maar ook staan hier velden als bedrag, periode, enz.
Ik ben nu bezig met een script die domeinnamen registreerd. Als alles goed is gegaan, moet er in een tabel abbonementen gezet worden wanneer de domein is geregistreerd, en wanneer hij afloopt. Registratiedatum is niet lastig, dat is gewoon NOW(). Echter zit ik te prutsen met de afloopdatum. De afloopdatum is registratiedatum + periode van de bijbehorende extentie. De periode staat dus in tabel tld.
Het selecteren van de periode is niet lastig. Dat kan dmv dit simpele schetsje (wat fouten kan bevatten, maar let daat aub niet op):
Code (php)
1
2
3
2
3
$sql = mysql_query("SELECT * FROM `tld` WHERE `extentie` = '".$_POST['tld']."'")or die(mysql_error());
$show = mysq_fetch_assoc(sql);
$periode = $show['periode'];
$show = mysq_fetch_assoc(sql);
$periode = $show['periode'];
Periode is in aantal maanden.
Wat nu dus moet gebeuren is een query die alles in abbonementen zet. Tot nu toe ziet de query er zo uit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$query6 = "
INSERT INTO
abonnementen
(
klantnr,
domeinnaam,
extentie,
registratiedatum,
afloopdatum,
registar
)
VALUES
(
'".mysql_real_escape_string(trim($get_userdata['klantn']))."',
'".$var_domeinnaam."',
'".$var_extentie."',
NOW(),
'????????,
'".$row2['registar']."'
)";
mysql_query($query6) or die (mysql_error());
INSERT INTO
abonnementen
(
klantnr,
domeinnaam,
extentie,
registratiedatum,
afloopdatum,
registar
)
VALUES
(
'".mysql_real_escape_string(trim($get_userdata['klantn']))."',
'".$var_domeinnaam."',
'".$var_extentie."',
NOW(),
'????????,
'".$row2['registar']."'
)";
mysql_query($query6) or die (mysql_error());
Wat moet er op de plek van de vraagtekens? Hier moet hij dus iets inserten wat $periode maanden meer is dan huidige datum. Maar zou mooi zijn als dit met mysql kan, omdat er natuurlijk ook schrikkeljaren zijn en ik anders het probleem krijg dat wanneer iemand iets op een dag registreerd wat maar 1 x in de 4 jaar is, dat hij ook maar 1 x in de 4 jaar een factuur krijgt.
Ik hoop dat jullie het nog snappen en met een oplossing komen!
Alvast bedankt!
Zo bijvoorbeeld:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sql = "
INSERT INTO abonnementen
(
klantnr,
domeinnaam,
extentie,
registratiedatum,
afloopdatum,
registar
)
VALUES
(
'".mysql_real_escape_string(trim($get_userdata['klantn']))."',
'".$var_domeinnaam."',
'".$var_extentie."',
NOW(),
NOW() + INTERVAL (SELECT periode FROM tld WHERE extentie = '".$var_extentie."') MONTH,
'".$row2['registar']."'
)
";
?>
$sql = "
INSERT INTO abonnementen
(
klantnr,
domeinnaam,
extentie,
registratiedatum,
afloopdatum,
registar
)
VALUES
(
'".mysql_real_escape_string(trim($get_userdata['klantn']))."',
'".$var_domeinnaam."',
'".$var_extentie."',
NOW(),
NOW() + INTERVAL (SELECT periode FROM tld WHERE extentie = '".$var_extentie."') MONTH,
'".$row2['registar']."'
)
";
?>
Alleen moet je je nu nog afvragen of het wel nodig is om de afloopdatum op te slaan. Dit is immers een berekend gegeven op basis van 2 andere gegevens die al in je database zitten en derhalve zou de afloopdatum dus niet in je database thuis horen. Die bereken je gewoon op het moment dat je hem nodig hebt.
ps. Daar moet wel aan toegevoegd worden dat je de afloopdatum wel op wilt slaan als de perioden voor tld's kunnen veranderen. Je sluit immers een abonnement af voor de periode van bijvoorbeeld een jaar en je wilt niet dat dit ineens een half jaar wordt als de periode van de betreffende tld naar een half jaar gewijzigd wordt.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Bedankt! Dat zocht ik. Het werkt!
Bedankt! Dat zocht ik. Het werkt!