[php] vérifier jour et heure

Fermé
Utilisateur anonyme - 16 févr. 2011 à 20:22
swoog42 Messages postés 1059 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 - 18 févr. 2011 à 18:30
Bonjour,
je recherche une fonction php qui vérifie que l'heure est entre 17H30 et 20H30 les lundi, mardi, jeudi, vendredi et de 16H30 à 20H30 les mercredi et Samedi, et que si on est dimanche, ça affiche Nous sommes fermé, désolé, et ceci également pour les heures de fermeture.
merci


7 réponses

swoog42 Messages postés 1059 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
17 févr. 2011 à 17:17
je pense qu'avec une succession de if avec des conditions multiples serait une solution...
schématiquement ca donnerait :

$ouvert = 0;

if( ($jour=="lundi" OR $jour=="mardi" OR $jour=="jeudi"...) AND ($heure > 17h AND $heure < 20h) )
    $ouvert = 1;
etc...

if($ouvert) echo "Le site est ouvert";


Je sais, j'écris n'importe quoi mais j'ai pas le gout de réfléchir sur les dates et la conception de ton site, mais ca te donne une idée...
1
Utilisateur anonyme
17 févr. 2011 à 18:36
et comment je fais pour avoir $jour, etc...
0
swoog42 Messages postés 1059 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
17 févr. 2011 à 19:15
avec la fonction date()...
par exemple, pour te simplifier la chose, date("N") te renvoie 1 pour lundi... 7 pour dimanche.
0
Utilisateur anonyme
17 févr. 2011 à 19:33
Et bien, j'ai fait ceci, mais ça débloque totalement :



<?php
	$jour = date('N');
	$jour_recherche = array('1', '2','3', '4', '5', '6', '7');
	$day = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimance');
	$jour = str_replace($jour_recherche, $day, $jour);
	$heure = date('G');
	$hour = array('0', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23');
	$heure_replace = array('0h', '02h', '03h', '04h', '05h', '06h', '07h', '08h', '09h', '10h', '11h', '12h', '13h', '14h', '15h', '16h', '17h', '18h', '19h', '20h', '21h', '22h', '23h');
	$heure = str_replace($hour, $heure_replace, $heure + 1);
	if ($jour = 'lundi' OR $jour = 'mardi' OR $jour = 'jeudi' OR $jour = 'vendredi') {
		if ($heure = '18h'OR $heure = '19h') {
			$ouvert = '1';
	}
	else {
		$ouvert = '0';
		}
	}
	
	if ($jour = 'dimanche') {
		$ouvert = '0';
	}
	
	if ($jour = 'mercredi' OR $jour = 'samedi') {
		if ($heure = '15h' OR $heure = '16h' OR $heure = '17h' OR $heure = '18h' OR $heure = '19h' OR $heure = '20') {
			$ouvert = '1';
		}
		else {
			$ouvert = '0';
		}
	}
	?>
	<?php
	if ($ouvert == '1') { echo 'BOnjour'; }
	echo $heure, '<br>';
	echo $jour;
	?>
0
tito23 Messages postés 305 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 janvier 2013 4
17 févr. 2011 à 20:12
pour les comparaisons il faut utiliser "=="
question quand l'heure est 17:20 le lundi vous affichez ouvert ou fermé?
l'heure est 17h -> ouvert donc il faut tenir ça en compte.
0
Utilisateur anonyme
17 févr. 2011 à 20:27
oui, mais c'est 17h depuis 17h00 jusqu'à 17h59, je n'utilise que l'heure !
0
tito23 Messages postés 305 Date d'inscription mardi 10 août 2010 Statut Membre Dernière intervention 16 janvier 2013 4
17 févr. 2011 à 20:32
je veux dire si l'heure courante est 17:20 tu va extraire l'heure ça donne 17 donc depuis ton code ça donne ouvert alors que normalement ça doit être fermé
0
Utilisateur anonyme
17 févr. 2011 à 20:36
pk alors qu'on est jeudi il m'affiche dimanche ????
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
swoog42 Messages postés 1059 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
17 févr. 2011 à 19:43
je regarde ca demain aprem, mais ton code est alambiqué...
0
Utilisateur anonyme
17 févr. 2011 à 20:26
je sais --'
0
Utilisateur anonyme
17 févr. 2011 à 20:42
J'ai trouver la solution grâce à tito23, merci à toi. Voici mon code source fini :

<?php
	$jour = date('N');
	$jour_recherche = array('1', '2','3', '4', '5', '6', '7');
	$day = array('lundi', 'mardi', 'mercredi', 'jeudi', 'vendredi', 'samedi', 'dimanche');
	$jour = str_replace($jour_recherche, $day, $jour);
	$heure = date('G');
	$hour = array('0', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17', '18', '19', '20', '21', '22', '23');
	$heure_replace = array('0h', '02h', '03h', '04h', '05h', '06h', '07h', '08h', '09h', '10h', '11h', '12h', '13h', '14h', '15h', '16h', '17h', '18h', '19h', '20h', '21h', '22h', '23h');
	$heure = str_replace($hour, $heure_replace, $heure + 1);
	if ($jour == 'lundi' OR $jour == 'mardi' OR $jour == 'jeudi' OR $jour == 'vendredi') {
		if ($heure == '18h'OR $heure == '19h') {
			$ouvert = '1';
	}
	else {
		$ouvert = '0';
		}
	}
	
	if ($jour == 'dimanche') {
		$ouvert = '0';
	}
	
	if ($jour == 'mercredi' OR $jour == 'samedi') {
		if ($heure == '15h' OR $heure == '16h' OR $heure == '17h' OR $heure == '18h' OR $heure == '19h' OR $heure == '20') {
			$ouvert = '1';
		}
		else {
			$ouvert = '0';
		}
	}
	?>
0
swoog42 Messages postés 1059 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
17 févr. 2011 à 20:49
tu peux quand même simplifier la déclaration des tableaux...
$jour= array(1 => 'Lundi', 2 => 'Mardi'.....);
et pas besoin de tableau pour l'heure ^^
0
Utilisateur anonyme
18 févr. 2011 à 17:47
oui, mais maintenant que mon code fonctionne tip-top, je ne vais pas le modifier au risque de faire des erreurs !
0
swoog42 Messages postés 1059 Date d'inscription mercredi 30 septembre 2009 Statut Membre Dernière intervention 16 décembre 2018 244
18 févr. 2011 à 18:30
C'est sûr, mais ca te donnera peut être l'occasion d'optimiser ce code... Essaye avec une copie de sauvegarde.
0