Elemente nur an bestimmten Zeitpunkten anzeigen?
Hey, ich möchte gerne, dass ein Element auf meiner Website ab dem 27.10.2022 bis 24.12.2022 angezeigt wird. Könnte mir jemand vielleicht eine Seite oder einen Bsp-Code schicken? Ich bin noch am Lernen.
Ich bedanke mich!
2 Antworten
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 */
}
?>
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 */
}
?>
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?
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 */
}
?>
Ah okay ich verstehe. Ich bedenke mich herzlich! 🙏
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?
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 } ?>
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 } ?>
Oha nice, das ist halt exakt das was ich gebraucht habe. VIELEN DANK!!
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>
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.😏
Hey, gäbe es vielleicht jetzt noch eine Möglichkeit das Datum jährlich zu wiederholen?