8768 sujets

Développement web côté serveur, CMS

Bonjour,

Je voudrais mettre un message avec les heures d'ouverture de mon site.

<?php
$heure_ouverture_matin = 9; 
$heure_fermeture_matin = 12;
$heure_ouverture_ap = 14; 
$heure_fermeture_ap = 18;

$temps = time();
$heure = date('H', $temps);
$jour_actuel = date('w', $temps);
$planning_des_fermetures = array (0,7);//dans ce tableau on sélectionne les jours de 0 à 6 (lundi au vendredi)

if ((in_array($jour_actuel, $planning_des_fermetures)) //la fonction in_array() est très importante car elle seul peut chercher des entier
     or ($heure <= $heure_ouverture_matin)
     or ($heure >= $heure_fermeture_matin)	 

     or ($heure <= $heure_ouverture_ap)
     or ($heure >= $heure_fermeture_ap))
	 
{
	echo "Site fermé";
} else {
	echo "Site ouvert";
}
?>


J'ai toujours le message fermé.

Merci de vos lumières.
Modifié par CVS (09 Feb 2014 - 09:46)
J'avoue que je ne comprends pas grand chose à ton code, mais il me semble qu'à coup de var_dump, tu devrais déjà y voir plus clair...

$temps = time();
var_dump($temps);
$heure = date('H', $temps);
var_dump($heure);
$jour_actuel = date('w', $temps);
var_dump($jour_actuel);


Pour ça, j'obtiens à l'heure de maintenant :

int 1391776985
string '12' (length=2)
string '5' (length=1)

Pas sûr que les deux premiers correspondent au résultat attendu, si...?


Puis si tu veux sélectionner du lundi au vendredi, tu dois aller de 0 à 4, non? Et non de 0 à 7.
Modifié par Reka (07 Feb 2014 - 13:48)
Je veux que lorsque l'on se connecte à mon site suivant l'heure on obtient site ouvert ou fermé pour l'aide téléphonique.

Pour du lundi au vendredi ça fonctionne.

Je bloque au niveau de 14 à 18 heures.
Modifié par CVS (07 Feb 2014 - 13:56)
commence peut-être par un set_local, idée d'être certain de ton fuseau horaire.

Parce que si Reka obtient 12 au lieu de 13, ça sent un soucis sur l'heure d'hiver et/ou le fuseau horaire.

Il y a une erreur dans ton if, il devrait plutôt ressemble à ça :
if
    (
    /*on s'occupe des jours*/
    ($jour==6 || $jour==7) //si on est samedi (6) ou dimanche (7)
    /*puis des heures*/
    or 
    (
        ($heure<=$heure_ouverture_matin) //si on est trop tôt le matin
        or ($heure>$heure_fermeture_matin && $heure<=$heure_ouverture_ap) //si on est sur l'heure de midi
        or ($heure>$heure_fermeture_ap) //si on est tard le soir
    )
    )
{
    echo "site fermé";
}
else
{
    echo "site ouvert";  
}


(manifestement, tu avais fait un if dans l'autre sens)
Modifié par Lothindil (07 Feb 2014 - 14:17)
J'ai toujours site fermé bien que je sois dans les heures d'ouverture !!!

J'ai un modèle de 8 h à 20 h qui marche très bien.

Le hic, c'est que je mange !!! Donc je suis obliger de faire deux parties, une le matin et une l'après-midi, et c'est là que ça coince !!!

Modèle du code

<?php
$heure_ouverture = 8; //sert à afficher le script à partir de 9h et non 8h
$heure_fermeture = 20;//sert à afficher le script à partir de 21h
$temps = time();
$heure_actuelle = date('H', $temps);
$jour_actuel = date('w', $temps);
$planning_des_fermetures = array (0,6);//dans ce tableau on sélectionne les jours de 0 à 6 (lundi au vendredi)

if ((in_array($jour_actuel, $planning_des_fermetures)) //la fonction in_array() est très importante car elle seul peut chercher des entier
     or ($heure_actuelle <= $heure_ouverture)
     or ($heure_actuelle >= $heure_fermeture))
{
	echo "C'est fermé ! ";
} else {
	echo "C'est ouvert";
}
?>
Bah avec la ligne :


or ($heure_actuelle>$heure_fermeture_matin && $heure_actuelle<=$heure_ouverture_ap) //si on est sur l'heure de midi


dans le if, ça comprend l'heure de midi.
Je suis pas doué Smiley decu

<?php
$heure_ouverture_matin = 9;
$heure_fermeture_matin = 12;
$heure_ouverture_ap = 14;
$heure_fermeture_ap = 18;

$temps = time();
$heure = date('H', $temps);
$jour_actuel = date('w', $temps);
$planning_des_fermetures = array (1,6);//dans ce tableau on sélectionne les jours de 0 à 6 (lundi au vendredi)


if ((in_array($jour_actuel, $planning_des_fermetures)) //la fonction in_array() est très importante car elle seul peut chercher des entier

or ($heure<=$heure_ouverture_matin) //si on est trop tôt le matin
or ($heure>$heure_fermeture_ap) //si on est tard le soir)
or ($heure>$heure_fermeture_matin && $heure <= $heure_ouverture_ap)) //si on est sur l'heure de midi

{
echo "C'est fermé ! ";

} else {

echo "C'est ouvert";
}

?>

Je suis ouvert alors que je devrais être fermé !!!

Au secours Smiley bawling
Modifié par CVS (07 Feb 2014 - 15:08)
Bonjour,
Définir l'heure selon la configuration de ton serveur, mais sinon :

<?php

function isWebsiteOpen()
{
	$heure = date('G');

	// de 8h à 12h
	if($heure >= 8 && $heure < 12)
	{
		return true;
	}
	// de 13h à 21h
	else if($heure >= 13 && $heure < 21)
	{
		return true;
	}
	else
	{
		return false;
	}
}

if(isWebsiteOpen() === true)
{
	echo "ouvert";
}
else
{
	echo "fermé";
}
?>

Modifié par ohweb (07 Feb 2014 - 15:15)
Merci beaucoup, ça marche nickel.

Mon erreur était que j'étais parti sur l'heure du PC. J'avais un doute mais la logique veux que se soit l'heure du serveur.

Je viens de m'apercevoir que j'étais ouvert le dimanche !!!

Il doit bien avoir un moyen comme sur mon code modèle d'indiquer que l'on est fermé.

Merci d'avance.
Modifié par CVS (09 Feb 2014 - 09:47)
Je souhaite savoir comment faire pour indiquer que je suis pas dispo le dimanche.

J'ai compris le code pour l'heure mais pour le jour de la semaine, je n'arrive pas à m'en sortir.

Merci encore de votre aide.
Modifié par CVS (09 Feb 2014 - 11:34)