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