Elemente nur an bestimmten Zeitpunkten anzeigen?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Du könntest mit der PHP Funktion date() das aktuelle Datum abfragen und dann per if Abfrage gucken ob dieses zwischen dem 27.10.2022 und dem 24.12.2022 liegt.

<?php
$date = date("Ymd");
if (20221027 <= $date && $date <= 20221224){
    /* hier das Element einfügen */
}
?>
RealKlexxsy 
Fragesteller
 16.11.2022, 11:15

Hey, gäbe es vielleicht jetzt noch eine Möglichkeit das Datum jährlich zu wiederholen?

0
ChrisCat1, UserMod Light  16.11.2022, 13:27
@RealKlexxsy

Natürlich, einfach die Jahreszahlen weglassen und nur auf Monat und Tag prüfen.

date("Ymd") gibt das aktuelle Datum im Formt YYYYmmdd aus.
date("md") gibt das aktuelle Datum im Formt mmdd aus.

Die Zahl 20221027 setzt sich aus dem Jahr 2022, dem Monat 10 und dem Tag 27 zusammen.
Lässt man das Jahr weg ist es also nur 1027.

Das gleiche bei 20221224 (2022 12 24). Ohne Jahr ist es dann 1224.

<?php
$date = date("md");
if (1027 <= $date && $date <= 1224){
    /* hier das Element einfügen */
}
?>
0
RealKlexxsy 
Fragesteller
 17.11.2022, 23:01
@ChrisCat1, UserMod Light

Ja genau das habe ich mir gedacht. Nun brauche ich den Zeitraum zw. 01.12.2022 und 31.1.2023. Nun funktioniert es aber irgendwie nicht mehr. Gibts dafür vllt auch eine Lösung?

0
ChrisCat1, UserMod Light  17.11.2022, 23:15
@RealKlexxsy

Hier sind verschiedene Lösungsansätze möglich.

Wenn man beim bisherigen Konzept bleibt, kann man einfach weitere IF Bedingungen hinzufügen.

<?php
$date = date("md");
if ((1201 <= $date && $date <= 1231) || (0101 <= $date && $date <= 0131)){
    /* hier das Element einfügen */
}
?>

Hier hier ist die Bedingung wahr wenn das Datum zwischen dem 01.12. und dem 31.12 liegt oder zwischen dem 01.01. und dem 31.01.

Da es sich um den kompletten Dezember und den kompletten Januar handelt, könnte man auch nur auf den Monat prüfen.

<?php
$month = date("m");
if ($month == 12 || $month == 01){
    /* hier das Element einfügen */
}
?>
0
Kahletox  01.12.2022, 05:16

und wenn ich es jedes jahr machen möchte?

0
ChrisCat1, UserMod Light  01.12.2022, 05:22
@Kahletox

Guck dir mal die Kommentare an die ich hier schon unter meiner Antwort geschrieben habe, da zeige ich wie man es unabhängig von der Jahresabgabe machen kann, so das es automatisch jedes Jahr stattfindet.

Oder meinst du noch was anderes?

0
RealKlexxsy 
Fragesteller
 17.12.2022, 12:22

Hey du, kann ich dich nochmal was Fragen?

Ich habe einen Nachrichten-Counter mit aktuell 18 Nachrichten. Jetzt zählt der Counter natürlich bis "get no" hoch. Ich würde jetzt aber gerne, wenn mehr als 9 Nachrichten vorhanden sind, eine 9+ anzeigen lassen. Bekommt man das mit PHP hin?

Das ist der komplette PHP-Code für den Counter:

$message_counter = "SELECT * FROM `notifications` WHERE status = '0' AND for_user_name = '$id_user'";
    $sel = mysqli_query($conn, $message_counter);
    $message_count = mysqli_num_rows($sel);

<?php if(mysqli_num_rows(mysqli_query($conn, "SELECT * FROM `notifications` WHERE status = '0' AND for_user_name = '$id_user'")) > 0){ ?>
                    <div id="notify-counter">
                        <?php echo $message_count; ?>
                    </div>
                <?php } ?>
0
ChrisCat1, UserMod Light  17.12.2022, 21:08
@RealKlexxsy

Man kann beispielsweise per IF Abfrage prüfen ob $message_count größer als 9 ist und in dem Fall dann 9+ als festes Ergebnis wiedergeben.
Hier hast du in $message_count dann auch weiterhin die richtige Anzahl.

$message_counter = "SELECT * FROM `notifications` WHERE status = '0' AND for_user_name = '$id_user'";
    $sel = mysqli_query($conn, $message_counter);
    $message_count = mysqli_num_rows($sel);

<?php if(mysqli_num_rows(mysqli_query($conn, "SELECT * FROM `notifications` WHERE status = '0' AND for_user_name = '$id_user'")) > 0){ ?>
                    <div id="notify-counter">
                       <?php
                  if($message_count > 9){
                     //Wenn $message_count größer als 9
                     echo "9+";
                  } else {
                     echo $message_count;
                  } ?>
                   </div>
               <?php } ?>

Man könnte auch erst den Wert von $message_count prüfen und wenn dieser größer ist auf 9+ setzen.
Hier hast du in $message_count dann nicht mehr die richtige Anzahl.

$message_counter = "SELECT * FROM `notifications` WHERE status = '0' AND for_user_name = '$id_user'";
    $sel = mysqli_query($conn, $message_counter);
    $message_count = mysqli_num_rows($sel);

<?php
//Prüfung ob größer als 9
if($message_count > 9){
    $message_count = "9+";
}
?>

<?php if(mysqli_num_rows(mysqli_query($conn, "SELECT * FROM `notifications` WHERE status = '0' AND for_user_name = '$id_user'")) > 0){ ?>
                    <div id="notify-counter">
                        <?php echo $message_count; ?>
                    </div>
                <?php } ?>

1

Clienseitig per Javascript:

<!DOCTYPE html>
<html>
<body>

<!-- Zur Orientierung  3 Zeilen können weg -->
<p id="sd"></p>
<p id="ed"></p>
<p id="nd"></p>

<div id="TextAnzeige"></div>
<div id="PictureHere"></div>

<script>
startDate = new Date('2022-10-22');
endDate   = new Date('2022-12-25'); //der Tag fängt  bei 00:00 an
nowDate   = new Date();

//Nur mal zur Orientierun 3 Zeilen können weg
document.getElementById("sd").innerHTML = startDate;
document.getElementById("ed").innerHTML = endDate;
document.getElementById("nd").innerHTML = nowDate;

if (nowDate>startDate && nowDate<endDate){
  document.getElementById("TextAnzeige").innerHTML = "Hallo ich  bin bis Heiligabend da <br>";
  //bildelement einfügen
  img=document.createElement("img");
  img.src="https://img1.dreamies.de/img/5/b/rrvrm1glbgh.jpg"
  img.height=200
  img.id="picture"
  document.getElementById("PictureHere").appendChild(img);
}
</script>
</body>
</html>
Kahletox  01.12.2022, 05:20

und wenn ich es jedes jahr machen möchte?

0
Erzesel  01.12.2022, 11:44
@Kahletox

Nahezu die gleiche Sache, nur Das wir dafür mit sortierbaren Strings arbeiten:

<!DOCTYPE html>
<html>
<body>
<!-- Zur Orientierung  3 Zeilen können weg -->
<p id="sd"></p>
<p id="ed"></p>
<p id="nd"></p>


<div id="TextAnzeige"></div>
<div id="PictureHere"></div>
<script>
 //dafür arbeiten  wir mit sortierbaren Strings (jeweils MMdd)
startDateOfYear = '1022';
endDateOfYear   = '1224'
nowDate = new Date();
 //erzeuge jeweils 2stelligen String für Tag und Monat
nowDay  = nowDate.toLocaleString("default", { day: "2-digit" });
nowMonth   = nowDate.toLocaleString("default", { month: "2-digit" });
 //beides zu einem sortierbaren String zusammenfügen
nowDateOfYear = nowMonth+nowDay;


 //Nur mal zur Orientierun 3 Zeilen können weg
document.getElementById("sd").innerHTML = startDateOfYear;
document.getElementById("ed").innerHTML = endDateOfYear;
document.getElementById("nd").innerHTML = nowDateOfYear;
 // alles  wie  gehabt, nur das wir jetzt eben die Strings vergleichen
if (nowDateOfYear >= startDateOfYear && nowDateOfYear <= endDateOfYear){
  document.getElementById("TextAnzeige").innerHTML = "Hallo ich  bin bis Heiligabend da <br>";
  //bildelement einfügen
  img=document.createElement("img");
  img.src="https://img1.dreamies.de/img/5/b/rrvrm1glbgh.jpg"
  img.height=200
  img.id="picture"
  document.getElementById("PictureHere").appendChild(img);
}
</script>
</body>
</html>
  • Das aktuelle Datum wird in einen 4stelligen String zerlegt "MMdd" (wichtig der Monat muss vorn stehen)
  • Die Vergleichstage werden ebenso formatiert angegeben.
  • Die 3 Strings werden verglichen und die Entscheidung gefällt...

Im Prinzip die gleiche Nummer wie in ChrisCat1's PHP-Script nur das sich in Javascript die Umwandlung eines Datumobjects in einen freiformatierten String etwas sperrige handhaben lässt.

Bei aller langfristigen Vorausschau, sollte jedoch eine Webseite schon etwas öfter gepflegt werden als im Abstand von mehreren Jahren.😏

0