Get dates between twee datums en zet dan de resultaten in database
Met onderstaand script krijg ik alle tussenliggende datums tussen start en eind datum.
Alleen wat ik wil is dat hij ze in een database invoert.
Table name = dates
fields: id, date1, date2, date3, date4, date5, date6, date7, date8, date9, date10, date11, date12
Enkele keren gebruik ik ze alle 10, andere keren maar 3 of 4 datums.
Iemand die mij misschien het laatste stukje kan helpen???
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
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
<?php
include ("../connections/config.php");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Specify the start date. This date can be any English textual format
$date_from = $_POST['Begin'];
$date_from = strtotime($date_from); // Convert date to a UNIX timestamp
// Specify the end date. This date can be any English textual format
$date_to = $_POST['Eind'];
$date_to = strtotime($date_to); // Convert date to a UNIX timestamp
// Loop from the start date to end date and output all dates inbetween
for ($i=$date_from; $i<=$date_to; $i+=86400) {
echo date("d-m-Y", $i).'<br />';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="POST" action="">
Start datum: <input type="Date" name="Begin" /><br />
Eind datum: <input type="Date" name="Eind" /><br />
<input type="submit" value="Submit" name="Submit" />
</form>
</body>
</html>
include ("../connections/config.php");
if($_SERVER['REQUEST_METHOD'] == 'POST') {
// Specify the start date. This date can be any English textual format
$date_from = $_POST['Begin'];
$date_from = strtotime($date_from); // Convert date to a UNIX timestamp
// Specify the end date. This date can be any English textual format
$date_to = $_POST['Eind'];
$date_to = strtotime($date_to); // Convert date to a UNIX timestamp
// Loop from the start date to end date and output all dates inbetween
for ($i=$date_from; $i<=$date_to; $i+=86400) {
echo date("d-m-Y", $i).'<br />';
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<form method="POST" action="">
Start datum: <input type="Date" name="Begin" /><br />
Eind datum: <input type="Date" name="Eind" /><br />
<input type="submit" value="Submit" name="Submit" />
</form>
</body>
</html>
Om maar met de deur in huis te vallen, dat klinkt niet goed. Kun je mij misschien helpen en eens vertellen wat je wilt gaan maken?
Niet echt veel eisend maar op deze manier is het makkelijker.
Maar vanwaar de opmerking dat het niet best is
Kan ik het zien als een soort agenda?
dan zou je iets kunnen krijgen als
tabel events:
tabel appointments:
De eerste tabel sla je alle evenementen in op
De tweede tabel sla je alle planningen/afspraken in op
Evenement À heeft 10 dagen
Evenement B heeft 5 dagen
Evenement C heeft 1 dag
Ik had in mijn hoofd om de datums in een array te plaatsen, en waar array(X) leeg is dat daar een X wordt ingevoerd in de database.
Als je een andere / makkelijkere manier hebt dan hoor ik dat graag.
om enkel opéénvolgende dagen op te slaan in de database is dus wel overbodig. PHP (kan ook met SQL) heeft kant en klare functies om alle dagen te berekenen.
Ik heb een evenementen systeem waarin ik in een database alle datums tussen start en eind datum MOET opslaan. Zodat ik daarna bepaalde diensten kan aanmaken zodat ik daar mensen op kan inroosteren.
Ik moet dus en start, eind en alle tussenliggende datums opslaan.
Dus als start datum 10-01-2014 en eind datum is 15-01-2014 dan moet ik in de database opslaan:
10-01-2014
11-01-2014
12-01-2014
13-01-2014
14-01-2014
15-01-2014
zoals ik in mijn eerste post al duidelijk had (geprobeerd te maken)
Daarom was mijn vraag ook hoe ik deze datums snel kan laten invoeren in een database...
Quote:
Ik heb een evenementen systeem waarin ik in een database alle datums tussen start en eind datum MOET opslaan.
verklaar MOET
Toevoeging op 02/07/2014 21:25:17:
volgens mij moet je dit hebben:
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
users
================================
id | naam | email
--------------------------------
1 | Jan | [email protected]
2 | Klaas | [email protected]
================================
evenementen
================================
id | naam | start | dagen
--------------------------------
1 | Pinkpop | 14-6-2014 | 3
2 | Oerol | 13-6-2014 | 10
================================
planning
=======================================================
id | user_id | event_id | datum | taak
-------------------------------------------------------
1 | 1 | 2 | 15-6-2014 | Barmedewerker
2 | 2 | 2 | 16-6-2014 | Kaartjes knippen
=======================================================
================================
id | naam | email
--------------------------------
1 | Jan | [email protected]
2 | Klaas | [email protected]
================================
evenementen
================================
id | naam | start | dagen
--------------------------------
1 | Pinkpop | 14-6-2014 | 3
2 | Oerol | 13-6-2014 | 10
================================
planning
=======================================================
id | user_id | event_id | datum | taak
-------------------------------------------------------
1 | 1 | 2 | 15-6-2014 | Barmedewerker
2 | 2 | 2 | 16-6-2014 | Kaartjes knippen
=======================================================
Verder is het planningen van diensten.
Christiaan de kleine op 05/07/2014 13:06:31:
... alleen dus bij evenementen moet ik elke dag apart hebben staan ...
Je schrijft helaas wederom niet waarom dat moet. Het ontbreekt ons aan informatie. Wat voor website wil je maken? Gaat deze altijd over één evenement of zijn er meerdere evenementen? Hoe vaak is dit evenement(en)? Wat voor evenementen zijn het?
Waar het om gaat is dat je geen kolommen moet gaan toevoegen voor elke 'dag' maar dat je records moet toevoegen. Probeer nou aan de hand van mijn voorbeeld je eigen tabel-indelingen te maken en deel dat eens met ons.
Overigens heb je je diensten per dag maar dit is de tabel planning. De tabel planning is namelijk gelinkt aan evenementen zodat je weet welke planning bij welk evenement hoort (beide planning records in mijn voorbeeld zijn gelinkt aan evenement 2. en Evenement 2 is Oerol)
Gewijzigd op 05/07/2014 13:24:12 door Frank Nietbelangrijk
Die string kan je dan naar de database schrijven.
je krijgt dan iets als:
// Loop from the start date to end date and output all dates inbetween
$datumstring="insert into TABELNAAM values('', ";
$vnr=0;
for ($i=$date_from; $i<=$date_to; $i+=86400) {
$vnr++;
if($vnr<=12)
{ $datum=date("d-m-Y", $i);
$datumstring.="\"$datum\" ";
if($vnr<12)
{ $datumstring.=", "; }
}
echo date("d-m-Y", $i).'<br />';
}
for($i=$vnr+1;$i<=12;$i++){
$datumstring.="\"\"";
if($vnr<12)
{ $datumstring.=", "; }
}
$datumstring.=")";
echo "<br>Straks schrijven we naar de database:<br>$datumstring<br>";
Daar is een database niet voor bedoeld, dan kan je het net zo goed naar een text bestand schrijven.
Ik zeg ook niet dat ik het met Christiaan's werkwijze eens ben, ik denk alleen maar mee in zijn gedachtengang.
En als hij 12 datumvelden in 1 record wil zetten, dan is mijn bijdrage een mogelijke optie.
De datums opslaan in een stringveld moet je alleen doen als je een lage performance, weinig functionaliteit, en veel frustratie bij toekomstige uitbreidingen wilt hebben.
Willem vp op 19/07/2014 17:39:01:
De datums opslaan in een stringveld moet je alleen doen als je een lage performance, weinig functionaliteit, en veel frustratie bij toekomstige uitbreidingen wilt hebben.
Die is leuk maar wel waar
Gewijzigd op 19/07/2014 19:41:30 door Frank Nietbelangrijk
En inderdaad waar. E. Codd zou zich in zijn graf omdraaien!