Deze week selecteren en controleren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Patrick

Patrick

13/07/2009 12:48:00
Quote Anchor link
Ik heb een website waar bedrijven een profiel aanmaken.
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)
PHP script in nieuw venster Selecteer het PHP script
1
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";
                }
 }

                         ?>


Het word weergeven als (voorbeeldje van de maandag):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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>'  ?>



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?
 
PHP hulp

PHP hulp

22/11/2024 04:27:02
 
Mitchell

Mitchell

13/07/2009 12:56:00
Quote Anchor link
Openingstijden is gekoppeld aan een bedrijf ID, vraag eerst het ID op van het bedrijf en dan kun je dus de tijden gekoppeld aan dit bedrijf opvragen. Dan kijk je in Openingstijden welke dag er verschilt in je week door gewoon vr of ma in je tabel op te slaan, als die er is, dan echo je dit met bij behorende tijd (while loop). Dagen die er dan vervolgens niet bij staan, daarbij val je terug op de Default waarde (standaard openings tijden).

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
 
Patrick

Patrick

13/07/2009 13:03:00
Quote Anchor link
Nee, maar het probleem is dat de standaard waardes in tabel BEDRIJVEN staan.
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.
 
Patrick

Patrick

13/07/2009 13:08:00
Quote Anchor link
Ik kan het eigenlijk nog simpeler vragen:

is er een manier om de 7 datums, van maandag tot en met zondag, op te vragen?
 
Emmanuel Delay

Emmanuel Delay

13/07/2009 14:22:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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;
  }
}

?>


wat je dan doet:

Bv
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
...
$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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.