6 votes

Changer l'arrière-plan pour le jour et la nuit en utilisant php ?

Je travaille sur une page tumblr. J'ai deux arrière-plans différents pour la page html et je veux que l'arrière-plan JOUR s'affiche de 7h à 20h et que l'arrière-plan nuit s'affiche de 20h à 7h.

J'ai décidé de faire cela en php, mais je suis totalement novice en la matière. Mon ami m'a envoyé un exemple de code que je pourrais utiliser. Mais je n'ai aucune idée de ce qu'il faut faire avec. Vous pouvez m'aider.

Voici l'exemple de code.

<?php
header('content-type: text/css');

date_default_timezone_set("America/Vancouver");
$now = date('G');

if ($now < 12) {
    $bg = '#FFFFFF';
} else {
    $bg = '#000000';
}
?>

body {
    background: <?php echo $bg; ?>;
}

6voto

Valentin Flachsel Points 5994

En date() renvoie la date et l'heure locales du serveur, ce qui signifie que si votre serveur se trouve aux États-Unis, un utilisateur d'Asie de l'Est ou d'Australie, par exemple, ne verra pas le bon arrière-plan.

Je sais que ce n'est pas ce que vous recherchiez, mais je vous suggère de le faire avec JS, qui fonctionne côté utilisateur plutôt que côté serveur, et donc le fuseau horaire n'aura pas d'importance parce que le script obtiendra l'heure de l'utilisateur, pas l'heure du serveur. Le script ressemblerait à quelque chose comme :

var localDate = new Date();
if (localDate.getHours() > 7 && localDate.getHours() < 20) {
    document.bgColor = "#fff";
} else {
    document.bgColor = "#000";
}

J'espère que cela vous aidera !

1voto

Stoic Points 3466

Essayez de changer :

body {
    background: <?php echo $bg; ?>;
}

à :

<body style="background-color: <?php echo $bg; ?> !important;">

Votre code PHP me semble correct. Notez qu'il affichera un fond blanc de midi à minuit. Essayez le code suivant pour garder un fond blanc de 7:00 AM à 8:00 PM et noir les autres fois (comme Aaron l'a dit).

Remplacer :

if ($now < 12) {
    $bg = '#FFFFFF';
} else {
    $bg = '#000000';
}

avec :

if ($now < 7 || $now > 20) {
    $bg = '#000000';
} else {
    $bg = '#FFFFFF';
}

0voto

Aaron Hathaway Points 2857

En date que vous utilisez renvoie le format 24 heures de l'heure actuelle. Ensuite, dans la conditionnelle, vous devez modifier cette fonction pour vérifier dans quelle plage vous vous trouvez. Si $now est compris entre 7 et 20, vous pouvez le régler sur l'arrière-plan de jour. Sinon, réglez-le sur l'heure de la nuit. N'hésitez pas à me contacter si vous avez besoin de plus de détails.

<?php
header('content-type: text/css');

date_default_timezone_set("America/Vancouver");
$now = date('G');

if ($now > 7 && $now < 20) {
    $bg = '#FFFFFF';
} else {
    $bg = '#000000';
}
?>

<body style="background-color:<?php echo $bg; ?> !important;">
 <!-- Your HTML code here -->
</body>

0voto

Benjamin Points 31

J'ai utilisé quelque chose comme ceci

votre php :

    function getUKTime() {

    date_default_timezone_set('Europe/London');

    $time = date('H');
    $style = "";

    if ($time >= 6 && $time <= 18) {
        $style = $style . "day";
    }
    else {
        $style = $style . "night";
    }

    echo $style;
}

dans votre html :

<div id="uk" class="<?php getUKTime(); ?>">
    <h1>U.K.</h1>
</div>

Il suffit ensuite de styliser les classes .night ou .day

0voto

Hatim Points 55

Vous pouvez définir différents fichiers css, l'un pour le jour et l'autre pour la nuit.

$date = getDate();

// check day or night
// it's day by default
$css = "css/main.css";

if ($date['hours'] < 7 || $date['hours'] > 20){
    // is night
    $css = "css/main-night.css";

}

Ensuite, dans le <meta> qui définissent le fichier de style de la page.

    <link href="<?= $css ?>" rel="stylesheet">

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X