probleem met data
Als ik de volgende functie/script aanroep wordt er soms een datum dubbel in de database gepost.
In het onderstaande voorbeeld wordt 25-10-2009 dubbel in de database gezet:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
<?php
include("templates/bovenkant.php");
function dates_between3($startdate, $enddate){
$format = "Y-m-d";
(is_int($startdate)) ? 1 : $startdate = strtotime($startdate);
(is_int($enddate)) ? 1 : $enddate = strtotime($enddate);
if($startdate > $enddate){
return false;
}
while($startdate < $enddate){
$arr[] = $startdate;
$startdate += 86400;
}
$arr[] = $enddate;
return $arr;
}
$kamer = 39;
$hotel = 20;
?>
<?php
$vandatum = 20 . "-" . 10 . "-" . 2009;
$totdatum = 30 . "-" . 10 . "-" . 2009;
$dat = explode("-", $vandatum);
$vandatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$dat = explode("-", $totdatum);
$totdatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$datBetwArr = dates_between3($vandatum,$totdatum);
foreach($datBetwArr as $time){
$date = date("Y-m-d", $time);
mysql_query("INSERT INTO test (hotel_id,kamer_id,datum)
VALUES('$hotel','$kamer','$date');",$link) or mooie_mysql_error($_SERVER['PHP_SELF']);
}
?>
include("templates/bovenkant.php");
function dates_between3($startdate, $enddate){
$format = "Y-m-d";
(is_int($startdate)) ? 1 : $startdate = strtotime($startdate);
(is_int($enddate)) ? 1 : $enddate = strtotime($enddate);
if($startdate > $enddate){
return false;
}
while($startdate < $enddate){
$arr[] = $startdate;
$startdate += 86400;
}
$arr[] = $enddate;
return $arr;
}
$kamer = 39;
$hotel = 20;
?>
<?php
$vandatum = 20 . "-" . 10 . "-" . 2009;
$totdatum = 30 . "-" . 10 . "-" . 2009;
$dat = explode("-", $vandatum);
$vandatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$dat = explode("-", $totdatum);
$totdatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$datBetwArr = dates_between3($vandatum,$totdatum);
foreach($datBetwArr as $time){
$date = date("Y-m-d", $time);
mysql_query("INSERT INTO test (hotel_id,kamer_id,datum)
VALUES('$hotel','$kamer','$date');",$link) or mooie_mysql_error($_SERVER['PHP_SELF']);
}
?>
Wie weet wat er fout is?
Wat is er mis met MySQL datetime functies die velemalen efficienter werken?
Mijn webbouwer heeft dit ooit zo opgezet. Ik heb er niet veel verstand van. Kan datetime functie in bovenstaand verwerkt worden?
http://dev.mysql.com/doc/refman/5.0/en/datetime.html dit lezen ;-)
Dat kan dan in de query's verwerkt worden, zonder omslachtige PHPcode.
Laat je web-developer eens Dat kan dan in de query's verwerkt worden, zonder omslachtige PHPcode.
Is het niet mogelijk om het in bovenstaand script te verwerken of om het juist te maken omdat anders de hele site veranderd moet worden en daar is op korte termijn geen tijd voor.
Stel, je wilt er een maand ofwat erbij optellen bijv,
Nu moet je rekening houden met het feit dat een jaar 12 maanden heeft, en dat hij moet doortellen bij het volgende jaar. Met MySQL DATETIME is niet niet meer nodig, en kan je dit een hele sloot aan code schelen.
Inbouw is niet moeilijk. Laat je developer maar eens die pagina lezen die ik noemde.
Edit Kom er net achter dat je met timestamps werkt. Maar goed.
Laten we zeggen dat he nog morgen is ;-). Wil alleen niet zeggen dat het wat het nu is niet fout is.
Gewijzigd op 01/01/1970 01:00:00 door - Ariën -
Een mooie MySQL error met $_SERVER['PHP_SELF']? Dat bestaat niet...
Het zijn idd timestamps. Als ik print_r($datBetwArr); toevoeg, dan zie ik elke timestamp maar 1 keer, maar wel 0 tot en met 11. Dit zijn er twaalf dus 1 teveel. Het gaat dus fout de database in vermoed ik. Is er iemand die bovenstaand script eens wil proberen op zijn server?
Gewijzigd op 01/01/1970 01:00:00 door prienstra
Als ik het volgende gebruik:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
$vandatum = 25 . "-" . 10 . "-" . 2009;
$totdatum = 26 . "-" . 10 . "-" . 2009;
$dat = explode("-", $vandatum);
$vandatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$dat = explode("-", $totdatum);
$totdatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$datBetwArr = dates_between3($vandatum1,$totdatum1);
print_r($datBetwArr);
foreach($datBetwArr as $time){
$date = date("Y-m-d", $time);
mysql_query("INSERT INTO test (hotel_id,kamer_id,datum)
VALUES('$hotel','$kamer','$date');",$link) or mooie_mysql_error($_SERVER['PHP_SELF']);
}
?>
$vandatum = 25 . "-" . 10 . "-" . 2009;
$totdatum = 26 . "-" . 10 . "-" . 2009;
$dat = explode("-", $vandatum);
$vandatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$dat = explode("-", $totdatum);
$totdatum1 = $dat[2] . "-" . $dat[1] . "-" . $dat[0];
$datBetwArr = dates_between3($vandatum1,$totdatum1);
print_r($datBetwArr);
foreach($datBetwArr as $time){
$date = date("Y-m-d", $time);
mysql_query("INSERT INTO test (hotel_id,kamer_id,datum)
VALUES('$hotel','$kamer','$date');",$link) or mooie_mysql_error($_SERVER['PHP_SELF']);
}
?>
Krijg ik het volgende:
Array ( [0] => 1256421600 [1] => 1256508000 [2] => 1256511600 )