[RESOLU] Changer de background en fonction de l'heure

Eléphanteau du PHP | 42 Messages

02 août 2014, 11:41

Hello ! Je développe actuellement un site, et j'aimerais faire changer mon background en fonction de l'heure. J'ai donc essayé plusieurs scripts, en disant que $heure > 9 && $heure > 20 echo'background..';. Mais il ne m'affichais que le css nuit, sans revenir à celui du jour.
<?php
		$heure=date("H"); 
		if($heure>20 && $heure>21 && $heure>22 && $heure>23 && $heure>0 && $heure>1 && $heure>2 && $heure>3 && $heure>4 && $heure>5 && $heure>6 && $heure>7 && $heure>8){

			echo'<style>body{background: url(./images/backnuit.gif);background-attachment:fixed;}</style>';

                }else{

                if($heure>9 && $heure>10 && $heure>11 && $heure>12 && $heure>13 && $heure>14 && $heure>15 && $heure>16 && $heure>17 && $heure>18 && $heure>19 && $heure>20){

			echo'<style>body{background: url(./images/backjour.gif);background-attachment:fixed;}</style>';

                        }
                }

?>
Voilà le script que j'ai bidouillé, mais il ne m'affiche pas les backgrounds, quelqu'un saurait m'aider s'il vous plait ?

Mammouth du PHP | 2278 Messages

02 août 2014, 13:03

La condition est beaucoup plus simple:
Je ne cherche même pas à démêler la condition aberrante que tu utilises/
<?PHP
$heure= 8; 
if ( ($heure>20 && $heure<=23) or (($heure >=0) and ($heure <8)))
/*La condition est nuit  (heure > 20 et heure <=23) ou (heure > 0 et heure < 8) jour dans les autres cas*/
{
print "on est nuit";
}else
{
print "on est jour";

}
?>
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 42 Messages

02 août 2014, 14:03

Bien, merci beaucoup de ton aide, mais je n'ai pas compris mon erreur, quand tu parles d'une fonction "abérante", pourquoi tu la juges ainsi, tu peux développer, me dire ce qu'il ne va pas dans ma fonction, cela me permettrait de comprendre mon erreur, et de ne pas la refaire ! :)

Mammouth du PHP | 2278 Messages

02 août 2014, 15:02

Avant d'accumuler les and (ou les &&) il faut définir clairement sur papier les conditions
la nuit c'est entre (20h et 24 ! ((h > 20) and (h <=24))
ou entre 0 h et 8 h ((h >=0) and (h <8))
ca nous fait donc un if (conition)
Le jour c'est le reste du temps (quand on n'est pas le jour on est la nuit)
if (condition nuit)
{

}
else //inutile de mettre une condition
{
traitement jour
}

Tu pourrais aussi chercher s'il n'est pas encore plus simple de faire
if (condition jour)
{

}
else
{
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 42 Messages

02 août 2014, 15:47

D'accord, donc le problème de mon code, c'est que je fais des && et des if en masse, alors que j'aurais juste à définir entre x et x valeurs plutôt de faire les x valeurs une par une ? Donc ça me donne un code trop lourd, et je peux faire plus simple (si j'ai bien compris).

Mammouth du PHP | 2278 Messages

02 août 2014, 15:59

C'est cela même:
Il faut se souvenir de quelques notions d'arithmétique:
Pour q'une valeur V soit comprise entre a et b (a exclu et b inclus) :
if (( V > a) and (v <= b)) (je me sers seulement de and et or mais il faut parenthéser davantage et correctement; mais ca permet d bien voir les groupes de conditions)
DE même
Si (a >b)
{
}
else ici forcément a <= b et test inutile
{
}
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 42 Messages

03 août 2014, 11:39

Bonjour ! je viens de constater ce matin que mon background n'avait pas changé en "jour" :( alors hier soir il est bien passé en "nuit" mais ne s'est pas remis en jour ce matin ! :(
<?php
$heure= ('H'); 
if ( ($heure>20 and $heure<=23) or ( ($heure >=0) and ($heure <8)))
{
print "<style>body{background: url(http://habbotaku.shost.ca/css/images/backnuit.gif);background-attachment:fixed;}</style>";
}else
{
print "<style>body{background: url(http://habbotaku.shost.ca/css/images/backjour.gif);background-attachment:fixed;}</style>";

}
?>

Mammouth du PHP | 2278 Messages

03 août 2014, 12:57

Regarde dans le code source de la page HTML
IL doit falloir que la page soit rechargée complètement.
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 42 Messages

03 août 2014, 14:33

Hum, non ça marche vraiment pas O.o

Mammouth du PHP | 2278 Messages

03 août 2014, 15:52

$heure= ('H');
print_r($heure); die(); donne quoi?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 42 Messages

03 août 2014, 17:36

Alors, là j'ai une page blanche, avec un "H" de marqué.

Mammouth du PHP | 2278 Messages

03 août 2014, 19:07

$heure= ('H');
print_r($heure); die(); donne quoi?
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Mammouth du PHP | 2278 Messages

03 août 2014, 19:09

Il faudrit peut-être revenir à:
$heure=date("H");
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD

Eléphanteau du PHP | 42 Messages

03 août 2014, 19:23

Effectivement, tout a l'air de fonctionner, je te remercies ! :)

Mammouth du PHP | 2278 Messages

03 août 2014, 19:34

Si c'est résolu, utilise le bouton hareng saur pour le marquer
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD