[php] vérifier jour et heure

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

  1. 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. avec la fonction date()...
      par exemple, pour te simplifier la chose, date("N") te renvoie 1 pour lundi... 7 pour dimanche.
      1. 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;
        	?>
        1. 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.
        2. oui, mais c'est 17h depuis 17h00 jusqu'à 17h59, je n'utilise que l'heure !
        3. 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é
        4. pk alors qu'on est jeudi il m'affiche dimanche ????
      2. 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';
        		}
        	}
        	?>
        1. 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 ^^
        2. oui, mais maintenant que mon code fonctionne tip-top, je ne vais pas le modifier au risque de faire des erreurs !
        3. C'est sûr, mais ca te donnera peut être l'occasion d'optimiser ce code... Essaye avec une copie de sauvegarde.