Online Ωράριο

Μια περιοχή όπου τα μέλη μας μπορούν να βάζουν τα PHP scripts που έχουν φτιάξει και θέλουν να τα μοιραστούν με τα υπόλοιπα μέλη.

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
p_pan
Δημοσιεύσεις: 1248
Εγγραφή: 11 Φεβ 2007 20:45
Τοποθεσία: Άστεγος!

Online Ωράριο

Δημοσίευση από p_pan » 27 Νοέμ 2008 00:46

Λόγο του ότι κέρδισα στον διαγωνισμό για το free web hosting από την χαρά μου είπα να φτιάξω ένα script που έχει απασχολήσει πολλούς!

Το παρακάτω script είναι ένα απλό αλλά και πολύ χρήσιμο ταμπελάκι κατάστασης.
δηλαδή μέσω αυτού του script μπορούμε να πληροφορούμε τους πελάτες/επισκέπτες της σελίδα μας αν το κατάστημα μας είναι ανοικτό ή όχι.

Κώδικας: Επιλογή όλων

$date = date("w");
Με το παραπάνω code αποθηκεύουμε στην μεταβλητή $date την ημέρα της εβδομάδας σε νούμερο. Δηλαδή για την Κυριακή είναι 0 και πάει αναλογικά μέχρι το Σάββατο που είναι το 6.

Κώδικας: Επιλογή όλων

$time = date("H");
Με το παραπάνω code αποθηκεύουμε στην μεταβλητή $time μόνο την παρούσα ώρα και όχι άλλα όπως τα λεπτά ή τα δευτερόλεπτα.(Να θυμάστε ότι πρέπει πάντα να βάζετε μια ώρα πριν την επιθυμητή ώρα που θα «κλείνετε» το κατάστημα σας γιατί αλλιώς αν για παράδειγμα θέλετε να κλείνετε στης 13.00 αν βάλετε ως ώρα στο script την ώρα 13 αυτό θα δείχνει ότι είστε open μέχρι τις 13.59 γιατί παραβλέπει τα λεπτά.)

Κώδικας: Επιλογή όλων

if( $date == "0" )
Με αυτή την if απομονώνω την Κυριακή επειδή για τις ανάγκες μόνο η Κυριακή έχει διαφορετικό ωράριο από της άλλες.

Κώδικας: Επιλογή όλων

if&#40; $time > "10" && $time < "12" &#41;&#123;
echo "10 - 13";&#125;
else &#123;echo "klista";&#125;
Με τον παραπάνω code ορίζω την ώρα που το κατάστημα είναι ανοικτό και βάζω ένα else για όλες της άλλες ώρες που θα είναι κλειστό.

Κώδικας: Επιλογή όλων

else
Με ένα απλό else συνεχίζω τον κώδικα και ομαδοποιώ όλες της υπόλοιπες ημέρες γιατί έχουν το ίδιο ωράριο.

Κώδικας: Επιλογή όλων

if&#40; $time > "9" && $time < "15" &#41;&#123;
echo "09 - 16";&#125;
else &#123;echo "klista";&#125;
Xρησιμοποιούνται πάλι ένα απλό κομμάτι κώδικα ορίζω το ποιες ώρες θα ήμαστε ανικτα.

Κώδικας: Επιλογή όλων

<?php
$date = date&#40;"w"&#41;;
$time = date&#40;"H"&#41;; 
if&#40; $date == "0" &#41;&#123;
	if&#40; $time > "10" && $time < "13" &#41;&#123;
		echo "10 - 13";&#125;
	else &#123;echo "klista";&#125;
&#125;else&#123;
	if&#40; $time > "09" && $time < "16" &#41;&#123;
			echo "09 - 16";&#125;
	else &#123;echo "klista";&#125;
&#125;
?>

Tο script μπορεί να δεχτεί πολλές βελτιώσεις για της ανάγκες του καθενός. Με elseif μπορείτε να φτιάξετε και διπλό ωράριο σε μια ημέρα&#8230; Όπως και να κάνετε διαφορετικό ωράριο για κάθε μέρα.
Αγράματος...

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

Online Ωράριο

Δημοσίευση από Burned4 » 02 Απρ 2009 11:41

Ωραίος. Το βελτίωσα για να χρησιμοποιεί στοιχεία από βάση και να τσεκάρει και τις μέρες.

Κώδικας: Επιλογή όλων

<?php 

$Hours= // Ώρα ανοίγματος την οποία μπορεί να πάρει από τη βάση
$Hoursoff = // Ώρα ανοίγματος την οποία μπορεί να πάρει από τη βάση
$Days = //Η μέρα που είναι κλειστό το κατάστημα στα Ελληνικά

// Βρές τη σημερινή μέρα και μετέτρεψέ την στα Ελληνικά. Αν στη βάση η μέρες είναι καταχωρημένες στα Αγγλικά αυτό δεν χρειάζεται.
		 		$simera = date&#40;"l"&#41;;
				if &#40;$simera == "Sunday"&#41;
				&#123; $simera = "Κυριακή";&#125;
				elseif &#40;$simera == "Monday"&#41;
				&#123; $simera = "Δευτέρα";&#125;
				elseif &#40;$simera == "Tuesday"&#41;
				&#123; $simera = "Τρίτη";	&#125;
				 elseif &#40;$simera =="Wednesday"&#41;
				&#123; $simera = "Τετάρτη";&#125;
				 elseif &#40;$simera == "Thursday"&#41;
				&#123; $simera = "Πέμπτη";&#125;
				 elseif &#40;$simera == "Friday"&#41;
				&#123; $simera = "Παρασκευή";	&#125;
				elseif &#40;$simera == "Saturday"&#41;
				&#123;$simera = "Σάββατο";&#125;

// Τσέκαρα αν σήμερα είναι η ίδια μέρα με την μέρα που είναι κλειστό το κατάστημα
				if &#40;&#40;isset&#40;$Days&#41; && &#40;$simera == $Days&#41;&#41;&#41;
				&#123;$open = "<font color='orangered'>&#40;Κλειστό&#41;</font>";&#125;

// Αν όχι συνέχισε
				else
				&#123;
					$date = date&#40;"w"&#41;;
					$time = date&#40;"H&#58;i&#58;s"&#41;;
					
				    if&#40; $time > $Hours && $time < $Hoursoff && $time != "00&#58;00&#58;00"&#41;
				    &#123;$open = "<font color='#00CC00'>&#40;Ανοιχτό&#41;</font>";&#125;
				    else &#123;$open = "<font color='orangered'>&#40;Κλειστό&#41;</font>";&#125;
			   &#125;
		?>
Το πρόβλημα που έχω τωρα
Άν πχ το κατάστημα είναι ανοιχτό 12:00 με 06:00 το

Κώδικας: Επιλογή όλων

if&#40; $time > $Hours && $time < $Hoursoff && $time != "00&#58;00&#58;00"&#41;
δεν ισχυει.

Καμιά ιδέα πως να το φτιάξω? :pint:
You can do anything, but not everything.

Άβαταρ μέλους
Banavas
Script Master
Δημοσιεύσεις: 1367
Εγγραφή: 21 Νοέμ 2004 20:25
Επικοινωνία:

Online Ωράριο

Δημοσίευση από Banavas » 02 Απρ 2009 18:30

Burned4
Δεν βλέπω το λόγο να μετατρέψεις την ημερομηνία στα Ελληνικά και κατόπιν να κάνεις συγκριση ανάμεσα σε δύο κείμενα στα Ελληνικά.

Η σύγκριση της ώρας ($time) με string ($Hours) δεν μπορεί να γίνει. Δες στον κώδικα που παραθέτω πως μπορείς να συγκρίνεις τις ώρες.

Στο παράδειγμα που δίνω μπορείτε να ορίσετε οποιαδήποτε μέρα της εβδομάδας ως ανοικτό ή κλειστό με 0,1 αντίστοιχα.
Για κάθε μέρα μπορείτε να δώσετε σπαστό ωράριο (οσαδήποτε κομμάτια που τα ονομάζω τμήματα) της μορφής τμήμα1 , τμήμα2 ,τμήμα3 κοκ.
Το κάθε τμήμα έχει τη μορφή από(Ωρες:Λεπτά) - έως(Ωρες:Λεπτά)

Κώδικας: Επιλογή όλων

<?php 
//settings
$days_closed = array&#40;0,0,0,0,0,1,1&#41;; // Δ,T,T,Π,Π,Σ,Κ
$open_hours = array&#40;"09&#58;20-13&#58;35,17&#58;15-20&#58;30","09&#58;20-13&#58;35,17&#58;15-20&#58;30","09&#58;20-13&#58;35,17&#58;15-20&#58;30","09&#58;19-13&#58;36,17&#58;15-20&#58;30,21&#58;00-21&#58;30","09&#58;00-14&#58;30","09&#58;20-13&#58;35,17&#58;15-20&#58;30","09&#58;20-13&#58;35,17&#58;15-20&#58;30"&#41;; // Δ,T,T,Π,Π,Σ,Κ
$message_open = "Το κατάστημα είναι Ανοικτό";
$message_close = "Το κατάστημα είναι Κλειστό";

// τρέχουσα μέρα και ώρα
$cur_day=date&#40;'w'&#41;-1;
$cur_time = mktime&#40;date&#40;"H"&#41;,date&#40;"i"&#41;,0,0,0,0&#41;;

// Έλεγχος αν είναι ανοικτό την τρέχουσα ώρα/λεπτό
if &#40;$days_closed&#91;$cur_day&#93; == 1&#41; &#123;
	echo "Το κατάστημα είναι Κλειστό";
&#125; else &#123; 

	$orario = explode&#40;",",$open_hours&#91;$cur_day&#93;&#41;; //ωράριο ημέρας
	$elenets = count&#40;$orario&#41;; // πόσα τμήματα έχει το ωράριο ημέρας

	$i=0;
	while&#40;$i < $elenets&#41; &#123;
		$from = explode&#40;",",$orario&#91;$i&#93;&#41;; // το κάθε τμήμα του ωραρίου		
		$hour_from = explode&#40;"-",$from&#91;0&#93;&#41;; // ώρα από 	
		$hour_to = explode&#40;"-",$from&#91;1&#93;&#41;;	// ώρα έως
		
		$start = explode&#40;"&#58;",$hour_from&#91;0&#93;&#41;;
		$end = explode&#40;"&#58;",$hour_from&#91;1&#93;&#41;;
		$sh = $start&#91;0&#93;; //start hour
		$sm = $start&#91;1&#93;; //start min
		$eh = $end&#91;0&#93;;  //end hour
		$em = $end&#91;1&#93;; 	//end min
		
		$time_start = mktime&#40;$sh,$sm,0,0,0,0&#41;;
		$time_end= mktime&#40;$eh,$em,0,0,0,0&#41;;	
		if &#40; $cur_time > $time_start && $cur_time < $time_end &#41; $open=1;			
		$i++;
	&#125; 
&#125; 
if &#40;$open==1&#41; &#123; echo $message_open; &#125; else &#123; echo $message_close; &#125; 
?>
Happy coding....
Μάρκος
http://lasernet.gr

Άβαταρ μέλους
Burned4
Δημοσιεύσεις: 324
Εγγραφή: 21 Σεπ 2007 12:50
Επικοινωνία:

Online Ωράριο

Δημοσίευση από Burned4 » 02 Απρ 2009 20:22

Ευχαριστώ για την απάντηση.

Σύγκριση των ημερών κάνω γιατί στη βάση το έχω στα Ελληνικά πχ. $Days= Κυριακή και με βόλεψε έτσι.

Το $time το συγκρίνω με το $Hours γιατί το $Hours είναι σε μορφή date() και τα συγκρίνει σωστά το script.

Το μόνο πρόβλημα που έχω είναι αυτό που ανέφερα ότι αν το μαγαζί κλείνει πχ 04:00:00 την επόμενη μέρα πως θα κάνω το script να το ξεχωρίζει ότι πρόκειται για την επόμενη μέρα και όχι την ίδια..
You can do anything, but not everything.

Απάντηση

Επιστροφή στο “PHP τα δικά μας scripts”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης