Deze week selecteren en controleren
Dit profiel komt in de tabel "bedrijven" te staan, hierin staan ook de openingstijden.
Soms komt het voor dat openingstijden afwijken.
Ik laat ze die invoeren in de tabel OPENINGSTIJDEN.
Onderstaand script leest dit uit:
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
<?
$query = "SELECT van, tot, DATE_FORMAT(datum, '%d-%m-%Y') AS datumformat, WEEKDAY(datum) AS dagnr FROM openingstijden WHERE bid = $rij_b[bid]";
$sql = mysql_query($query) or die(mysql_error());
$vang = mysql_fetch_assoc($sql);
if(mysql_num_rows($sql) == 0){
$dag = "x";
$class = "normal";
}
else {
$datum_vandaag = date('d-m-Y');
$datum_db = $vang['datumformat'];
if($datum_vandaag == $datum_db) {
$dag = $vang[dagnr];
$openvan = $vang[van];
$opentot = $vang[tot];
$class = "special";
}
}
?>
$query = "SELECT van, tot, DATE_FORMAT(datum, '%d-%m-%Y') AS datumformat, WEEKDAY(datum) AS dagnr FROM openingstijden WHERE bid = $rij_b[bid]";
$sql = mysql_query($query) or die(mysql_error());
$vang = mysql_fetch_assoc($sql);
if(mysql_num_rows($sql) == 0){
$dag = "x";
$class = "normal";
}
else {
$datum_vandaag = date('d-m-Y');
$datum_db = $vang['datumformat'];
if($datum_vandaag == $datum_db) {
$dag = $vang[dagnr];
$openvan = $vang[van];
$opentot = $vang[tot];
$class = "special";
}
}
?>
Het word weergeven als (voorbeeldje van de maandag):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
echo '
<td width="92"> <p class="1">Maandag:</p> </td>
if($dag == "0") {
echo '<td width="130">'.$openvan.' - '.$opentot.'</td>';
}
elseif ($rij_b["mavan"] == "x" || $rij_b["matot"] == "x") {
echo '<td width="130">Gesloten</td>';
}
else {
echo '<td width="130">'.$rij_b["mavan"].' - '.$rij_b["matot"].'</td>';
}
echo '</tr>' ?>
echo '
<td width="92"> <p class="1">Maandag:</p> </td>
if($dag == "0") {
echo '<td width="130">'.$openvan.' - '.$opentot.'</td>';
}
elseif ($rij_b["mavan"] == "x" || $rij_b["matot"] == "x") {
echo '<td width="130">Gesloten</td>';
}
else {
echo '<td width="130">'.$rij_b["mavan"].' - '.$rij_b["matot"].'</td>';
}
echo '</tr>' ?>
PROBLEEM:
Nu word de openingstijd alleen veranderd in een speciale openingstijd als het vandaag die dag is.
Ik wil echter dat als het vandaag Maandag is en aanstaande zondag is er een aparte openingstijd dat dat dan ook al weergeven word.
Wat ik dus denk ik moet doen is de week opvragen en kijken of er in die week van maandag t/m zondag een datum zit die ook in OPENINGSTIJDEN staat en dan dus een andere tijd weergeven.
Maar...hoe doe ik dat?
Edit: Wat je kunt doen is een array maken met dus "ma,di,wo" etc. en deze nagaan. Welke dan dus in je tabel staan, zijn true, dus echo waarde, welke er niet in staan is False, dus ga naar Default.
- Uitleggen voor php is niet mijn ding, ik weet het -
Gewijzigd op 01/01/1970 01:00:00 door Mitchell
In OPENINGSTIJDEN staan de regels met afwijkende tijden, vermeld als:
BID (bedrijfsID)
datum (Y-M-D)
van(tijd)
tot(tijd)
nu moeten deze alleen die week vervangen worden waar DATUM in valt.
is er een manier om de 7 datums, van maandag tot en met zondag, op te vragen?
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
echo '<br/>'. dezeWeek(); // maandag van deze week
echo '<br/>'. dezeWeek('2009-07-12'); // maandag van gelijk welke week (datetime string meegeven)
echo '<br/>'. dezeWeek('2009-07-32'); // geeft false weer, wegens geen geldige datetime string
function dezeWeek($datetimeString = 'now')
{
try
{
$m_datum = new DateTime( $datetimeString );
$dag = $m_datum->format("w") - 1;
$dag = ($dag < 0 ? 6 : $dag); // maandag wordt 0; zondag wordt 6
{
$d = - $dag;
$m_datum->modify("+ ". $d ." day");
}
return $m_datum->format("Y-m-d");
}
catch (Exception $e)
{
return false;
}
}
?>
echo '<br/>'. dezeWeek(); // maandag van deze week
echo '<br/>'. dezeWeek('2009-07-12'); // maandag van gelijk welke week (datetime string meegeven)
echo '<br/>'. dezeWeek('2009-07-32'); // geeft false weer, wegens geen geldige datetime string
function dezeWeek($datetimeString = 'now')
{
try
{
$m_datum = new DateTime( $datetimeString );
$dag = $m_datum->format("w") - 1;
$dag = ($dag < 0 ? 6 : $dag); // maandag wordt 0; zondag wordt 6
{
$d = - $dag;
$m_datum->modify("+ ". $d ." day");
}
return $m_datum->format("Y-m-d");
}
catch (Exception $e)
{
return false;
}
}
?>
wat je dan doet:
Bv
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
...
$maandag = dezeWeek();
$sql = "SELECT ... FROM openingstijden WHERE datum BETWEEN '". $maandag ."' AND ('". $maandag ."' + INTERVAL 6 DAY)";
...
?>
...
$maandag = dezeWeek();
$sql = "SELECT ... FROM openingstijden WHERE datum BETWEEN '". $maandag ."' AND ('". $maandag ."' + INTERVAL 6 DAY)";
...
?>
Gewijzigd op 01/01/1970 01:00:00 door Emmanuel Delay