Open gesloten functie

Status
Niet open voor verdere reacties.

oilsjt

Gebruiker
Lid geworden
31 mei 2011
Berichten
16
Beste Helpers,
Ik heb hier op het forum een goed werkend script kunnen bemachtigen, ik zal hieronder het werkende script plakken.
Nu heb nog een vraagje hieromtrent, het script laat zien of we open of gesloten zijn op bepaalde tijdstippen, bv van 17u tot 22u geeft hij aan dat we "geopend" zijn, daarbuiten geeft hij aan de we "gesloten" zijn.
Echter hebben wij nog een shift van 11u45 tot 13u30.
Ziet er iemand een oplossing voor dit?

Hartelijk dank bij voorbaat!!

Code:
<!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>
<SCRIPT LANGUAGE="JavaScript">
<!-- AFSCHERMEN VOOR OUDE BROWSERS

function openclosed() {
Now = new Date()
Day = Now.getDay()
Hour = Now.getHours()
msg = "gesloten."
if(Day == 1 && Hour > 0 && Hour < 0)	// Maandag gesloten
msg = "Op dit ogenblik zijn we gesloten."
else
if(Day == 2 && Hour > 17 && Hour < 22)	// Dinsdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 3 && Hour > 17 && Hour < 22 )	// Woensdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 4 && Hour > 17 && Hour < 22)	// Donderdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 5 && Hour > 17 && Hour < 22)	// Vrijdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 6 && Hour > 17 && Hour < 22)	// Zaterdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 0 && Hour > 17 && Hour < 22)	// Zondag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
msg = "Op dit ogenblik zijn we gesloten."
return( msg )
}

// EINDE AFSCHERMING -->
</SCRIPT>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Openingsuren</title>
</head>

<body>
<SCRIPT LANGUAGE="JavaScript">document.write(openclosed())</SCRIPT>

</body>

</html>
 
PHP:
<!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>
<SCRIPT LANGUAGE="JavaScript">
<!-- AFSCHERMEN VOOR OUDE BROWSERS

function openclosed() {
Now = new Date()
Day = Now.getDay()
Hour = Now.getHours()
msg = "gesloten."

//boolean open standaard op true zetten
open = true;

//controleren op tijdstip, indien dit tussen 11.45 en 13.30 is boolean op false zetten
if(Hour > 11.45 && Hour < 13.30){
    open = false;
}

if(Day == 1 && Hour > 0 && Hour < 0)	// Maandag gesloten
msg = "Op dit ogenblik zijn we gesloten."
else
if(Day == 2 && Hour > 17 && Hour < 22 && open == true)	// Dinsdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 3 && Hour > 17 && Hour < 22 && open == true)	// Woensdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 4 && Hour > 17 && Hour < 22 && open == true)	// Donderdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 5 && Hour > 17 && Hour < 22 && open == true)	// Vrijdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 6 && Hour > 17 && Hour < 22 && open == true)	// Zaterdag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
if(Day == 0 && Hour > 17 && Hour < 22 && open == true)	// Zondag geopend 17-22
msg = "Op dit ogenblik zijn we geopend."
else
msg = "Op dit ogenblik zijn we gesloten."
return( msg )
}

// EINDE AFSCHERMING -->
</SCRIPT>

<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>Openingsuren</title>
</head>

<body>
<SCRIPT LANGUAGE="JavaScript">document.write(openclosed())</SCRIPT>

</body>

Je kan dit doen met een boolean, ik weet niet zeker of de syntax klopt.. In ieder geval, dit is een idee van hoe je het zou kunnen doen!
 
Je zou voor objecten een ordening kunnen maken die afhangt van zowel uren als minuten.

[JS]function Time(hours, minutes) {

this.minuteValue = function() {
return hours * 60 + minutes;
}

this.compareTo = function(time) {
return this.minuteValue() - time.minuteValue();
}

}

function ordered() {
var i = 1;
alert(arguments.length);
while (i < arguments.length && arguments[i - 1].compareTo(arguments) < 0) {
i++;
}
return i >= arguments.length;
}

function openclosed() {

var now = new Date();
var day = now.getDay();

var start1 = new Time(11, 45);
var end1 = new Time(13, 30);

var start2 = new Time(17, 00);
var end2 = new Time(22, 00);

var time = new Time(now.getHours(), now.getMinutes());

var open = day != 1 && (ordered(start1, time, end1) || ordered(start2, time, end2));

return "We zijn op dit moment " + (open ? "open." : "gesloten.");

}[/JS]
 
Hoi,
Morgen eens beiden proberen.
Alvast hartelijk dank voor de medewerking.

Groetjes
 
Hoi oilsjt,
Ik heb er ook nog eentje om te proberen:
[JS]function openDicht(){
var vandaag = new Date(); // stel dag vast
var uurtijd = vandaag.getHours(); // geef uurtijd
var mintijd = vandaag.getMinutes(); // geef minutentijd
var opendicht = document.getElementById('opendicht'); // neem te vullen regel
var dicht = 'Op dit moment zijn wij <span class="nu_dicht">gesloten</span>.';
var open = 'Op dit moment zijn wij <span class="nu_open">geopend</span>.';

if ( vandaag == 1 ){ // als maandag,
opendicht.innerHTML = dicht; // dan altijd hele dag dicht
}
else { // als andere dag:
if ((uurtijd == 11) && (mintijd >= 45)){ // als tussen 11:45 en 12u,
opendicht.innerHTML = open; // dan open
}
else if ((uurtijd >= 12) && (uurtijd <= 13)){ // als tussen 12u en 13u,
opendicht.innerHTML = open; // dan ook open
}
else if ((uurtijd == 13) && (mintijd <= 30)){ // als tussen 13u en 13:30,
opendicht.innerHTML = open; // dan ook open
}
else if ((uurtijd >= 17) && (uurtijd <= 22)){ // als tussen 17u en 22u,
opendicht.innerHTML = open; // dan ook open
}
else {
opendicht.innerHTML = dicht; // anders dicht
}
}
}
window.onload = function(){
openDicht();
var checkMin = 1; // controle-interval in minuten
var checkMS = checkMin*1000*60; // controle-interval in milliseconden;
setInterval("openDicht()", checkMS);
}
[/JS]
Test-pagina: www.developerscorner.nl/csshunter/tests/open-en-dicht.php
Opm.:
  • Toegevoegd is een tijdstip-controle: elke minuut wordt gecheckt of de stand "geopend/gesloten" nog wel klopt. *) Anders kan het gebeuren dat als je de pagina hebt aangezet op het moment dat de zaak geopend is, dan even naar de WC gaat en nog even een telefoontje krijgt, en dan weer achter het scherm gaat zitten: dat er dan nog steeds "geopend" staat, terwijl intussen de zaak dicht is (of omgekeerd).
  • Daarom kan niet van document.write('...') gebruik gemaakt worden, want dat is alleen éénmalig aan het begin.
  • In plaats daarvan wordt een lege regel <p></p> gebruikt die met innerHTML telkens opnieuw gevuld kan worden.
  • Het geheel is volledig "unobtrusive" (= niet hinderlijk) javascript, zoals voorgeschreven door de Webrichtlijnen: als javascript uit staat, of als je bv. een tekstbrowser hebt die geen javascript kent, dan word je niet geconfronteerd met iets wat niet werkt of foute info geeft.
Met vriendelijke groet,
CSShunter
_________
*) Dan zit je er hooguit 1 minuut naast; kan ook anders ingesteld worden.
 
Beste meedenkers,

Ik vind dit helemaal fantastisch maar ik ben wel nog iets vergeten te zeggen :-S
Wij zijn niet iedere dag open op de middag.Ik zal even de openingsuren er bij plaatsen.
Maandag : Gesloten
Dinsdag, zaterdag : 17u-22u
Woensdag, donderdag en vrijdag : 11u45 tot 13u30 en van 17u tot 22u
Zondag van 17u tot 21u
Dat zal in ieder geval al een verschil maken denk ik.
Alle voorbeelden zien er voorbeeldig uit natuurlijk, het spijt me dat ik vergeten te zeggen was.

Groetjes oilsjt
 
Hoi oilsjt,
Ik heb er ook nog eentje om te proberen:
Deze is het waar we naar opzoek zijn enkel heb ik de verkeerde openingstijden doorgegeven, zie bericht hier boven :o


Groetjes en alvast hartelijk dank!!!!!
 
Hoi oilsjt,
In dat geval is het denk ik beter om als tussenstap de openingsperioden te definiëren, dan is makkelijker per dag in te stellen om welke tijdstippen het gaat.
En ook makkelijker aan te passen, als er tijden veranderen.
Als volgt bedacht:
[JS]function openDicht(){
var vandaag = new Date(); // stel dag vast
var uurtijd = vandaag.getHours(); // geef uurtijd
var mintijd = vandaag.getMinutes(); // geef minutentijd
var opendicht = document.getElementById('opendicht'); // neem te vullen regel
var dicht = 'Op dit moment zijn wij <span class="nu_dicht">gesloten</span>.';
var open = 'Op dit moment zijn wij <span class="nu_open">geopend</span>.';

// STANDAARD
opendicht.innerHTML = dicht; // default: dicht

// DEFINITIE OPENINGSPERIODEN
var tussenmiddag = 'uit'; // default: het is niet tussen de middag
if (((uurtijd == 11) && (mintijd >= 45)) // als tussen 11:45 en 12u,
|| ((uurtijd >= 12) && (uurtijd <= 13)) // of als tussen 12u en 13u,
|| ((uurtijd == 13) && (mintijd <= 30))){ // of als tussen 13u en 13:30,
tussenmiddag = 'aan'; // dan nu tussen de middag
}

var avond = 'uit'; // default: het is niet in de avonduren
if ((uurtijd >= 17) && (uurtijd <= 22)){ // als tussen 17u en 22u,
avond = 'aan'; // dan nu in de avonduren
}

var korteAvond = 'uit'; // default: het is niet in de korte avonduren
if ((uurtijd >= 17) && (uurtijd <= 21)){ // als tussen 17u en 21u,
korteAvond = 'aan'; // dan nu in de korte avonduren
}

// DAGEN KOPPELEN AAN OPENINGSTIJDEN
if (vandaag == 1){ } // als maandag, niets doen = dicht

else if ((vandaag == 2) && (avond == 'aan')){ // als dinsdag en avond,
opendicht.innerHTML = open; // dan open
}

else if ((vandaag == 3) // als woensdag,
&& ((tussenmiddag == 'aan') || (avond == 'aan'))){ // en tussenmiddag of avond,
opendicht.innerHTML = open; // dan open
}

else if ((vandaag == 4) // als donderdag,
&& ((tussenmiddag == 'aan') || (avond == 'aan'))){ // en tussenmiddag of avond,
opendicht.innerHTML = open; // dan open
}

else if ((vandaag == 5) // als vrijdag,
&& ((tussenmiddag == 'aan') || (avond == 'aan'))){ // en tussenmiddag of avond,
opendicht.innerHTML = open; // dan open
}

else if ((vandaag == 6) && (avond == 'aan')){ // als zaterdag en avond,
opendicht.innerHTML = open; // dan open
}

else if ((vandaag == 7) && (korteAvond == 'aan')){ // als zondag en korte avond,
opendicht.innerHTML = open; // dan open
}
}
window.onload = function(){
openDicht();
var checkMin = 1; // controle-interval in minuten
var checkMS = checkMin*1000*60; // controle-interval in milliseconden;
setInterval("openDicht()", checkMS);
}[/JS]
Het zou ook wel wat gecomprimeerder opgeschreven kunnen worden door dagen samen te voegen, maar dat maakt het ingewikkelder om te zien wat wat is; zoals nu hou je tenminste het overzicht.
Dit zou 'm moeten zijn:
Met vriendelijke groet,
CSShunter
_________
PS: het is wel steeds haakjes tellen om goed uit te komen! ;)
 
Laatst bewerkt:
Beste csshunter,

Wat kan ik hier nog op zeggen buiten PRACHTIG!!!
Ik zou je een goeie willen trakteren :-D
Heeeeeeeeel erg bedankt hoor.

Groetjes iedereen en hartelijk dank voor het mooie werk!!

oilsjt
 
Ik heb hier even het uur veranderd van dag 7 naar 13u en 15u om het even te laten zien aan het vrouwke maar er veranderd niets?
Wat doe ik nu weeral fout Grrrrrr
 
Het lukt me maar niet om even open te zijn voor het ogenblik.
 
En nog een verfijning, om er afwijkingen van de normale tijden in te kunnen zetten.
Anders bestaat het risico dat ergens staat "Zondag 5 juni zijn wij gesloten", terwijl de functie vrolijk meldt: "Op dit moment zijn wij open". ;)

Hiervoor is er in het begin een aan/uit schakelaar bij gezet.
De boodschap moert er in de html bij gezet worden, en vervangt dan de regel met "nu geopend/gesloten":
[JS]var openDichtTonen = 'nee'; // ja of nee invullen!

function openDicht(){
var vandaag = new Date(); // stel dag vast
... enz.[/JS]
wat dan op het laatst automatisch in werking gezet wordt door:
[JS]...
if (openDichtTonen == 'nee'){
function openDicht(){ } // hele functie wordt buiten werking gesteld !
}
... enz.
[/JS]
Met:
HTML:
<p id="opendicht"></p><!-- wordt gevuld als javascript en de functie aan staan -->
<!-- hieronder de te plaatsen regel bij afwijkingen -->
<p>Attentie! Zondag 5 juni 2011 zijn wij gesloten.</p>

Als dan zondag de 5e voorbij is, zet je de var openDichtTonen weer op 'ja', en je haalt de Attentie-regel weer weg uit de html. Dan loopt alles gewoon door tot je de volgende afwijking er in zet.
Met vriendelijke groet.
CSShunter
 
O, dat was een kruispost, want jij was intussen ook bezig, zie ik nu. :)
Heb je een link naar een testpagina, zodat ik even kan kijken wat er aan de hand is, dat ie niet werkt?
 
En om het even open te zetten bv vandaag om 15u ipv om 17u moet ik dan gewoon de tijden aan passen van korteAvond?
Want dat lukt me niet echt?
 
Hoei! Mijn fout! :o
Was vergeten voor de dagbepaling de getDay() op te halen. Die moet er ook nog bij.
Correctie volgt!

Met vriendelijke groet,
CSShunter
 
Ben al blij dat het niet mijn fout is hahahahaha

wat ben je toch een kanjer zeg!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan