Beitrag von Bernd (213 Beiträge) am Freitag, 14.November.2014, 16:22.
Feld nur in bestimmten Zeitfenster anzeigen
Hallo,
ich habe in meiner DB ein Feld Datum, ein Feld Aufgabe und ein Feld Hinweis.
Das Feld Aufgabe soll nur 1 Tag vor bis 1 Tag nach dem Eintrag im Feld Datum angezeigt werden, ansonsten der Inhalt von Feld Hinweis.
Wonach sollte ich da am besten im Forum suchen?
Danke
Bernd
Antworten
Beitrag von markus (1013 Beiträge) am Freitag, 14.November.2014, 17:08.
Re: Feld nur in bestimmten Zeitfenster anzeigen
Antworten
Beitrag von Sander (8133 Beiträge) am Samstag, 15.November.2014, 10:36.
Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
da sind ein paar Formate vermischt. Generell geht so ein Vergleich nur mit Jahr.Monat0.Tag0, da es sich um einen Stringvergleich handelt
ich würds so machen
$von = datum("jetzt-1","Jahr.Monat0.Tag0"); #gestern
$bis = datum("jetzt+1","Jahr.Monat0.Tag0"); #morgen
$tag = datum($Datum,"Jahr.Monat0.Tag0");
if($tag ge $von && $tag le $bis){ # tag größer oder gleich gestern und kleiner oder gleich morgen?
out "$Aufgabe";
} else {
Antworten
Beitrag von Bernd (213 Beiträge) am Samstag, 15.November.2014, 12:27.
Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
Hallo Sander,
vielen Dank, klappt super, habe jetzt gemerkt, dass ich es gerne
noch ein wenig optimieren würde, in etwa so:
Was heute ist, Feld "Aufgabe" anzeigen,
was gestern und Vergangenheit liegt Info: "zu spät"
was morgen oder in Zukunft: Feld "Hinweis" anzeigen.
Ich hab das mit dem lt und gt noch nicht so verstanden.
Danke
Bernd
Antworten
Beitrag von Bernd (213 Beiträge) am Samstag, 15.November.2014, 16:55.
Re: Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
Ich hab da jetzt einmal ein bischen rumprobiert und die Sache was zukünftig ist und schon gelaufen ist, klappt.
Aber wenn es am selben Tag ist, wird nix angezeigt, aber eq heißt doch sowas wie == ?
$jetztdatum = datum("jetzt","Tag0.Monat0.Jahr"); #heute
$von = datum("jetzt-1","Tag0.Monat0.Jahr"); #gestern
$bis = datum("jetzt+1","Tag0.Monat0.Jahr"); #morgen
$tag = datum($tag,"Tag0.Monat0.Jahr");
if($tag gt $jetztdatum){
out "$Hinweis";
}
if($tag lt $von){
out "zu spät";
}
if($tag eq $jetztdatum){
out "$Aufgabe";
}
Antworten
Beitrag von Sander (8133 Beiträge) am Samstag, 15.November.2014, 20:06.
Re: Re: Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
wie schon erst geschrieben, klappen Datumvergleiche nur mit "Jahr.Monat0.Tag0"
wenn du Tag0.Monat0.Jahr machst, vergleicht der zb
14.02.2015 mit 01.02.2016 -> Jahr 2016 ist größer als 2015, aber Tag 01 ist kleiner als Tag 14 - somit kommt vom Tag schon das falsche raus
2015.02.15 ist immer kleiner als 2016.02.01
verstehst?
Antworten
Beitrag von Bernd (213 Beiträge) am Samstag, 15.November.2014, 21:30.
Re: Re: Re: Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
OK, nachvollziehbar, nur wenn ich die Datumsfelder so anpasse, kommt bei mir jetzt überall die Ausgabe "zu spät" :-(
$jetztdatum = datum("jetzt","Jahr.Monat0.Tag0"); #heute
$von = datum("jetzt-1","Jahr.Monat0.Tag0"); #gestern
$bis = datum("jetzt+1","Jahr.Monat0.Tag0"); #morgen
$tag = datum($tag,"Jahr.Monat0.Tag0");
if($tag gt $jetztdatum){
out "$Hinweis";
}
if($tag lt $von){
out "zu spät";
}
if($tag eq $jetztdatum){
out "$Aufgabe";
}
Antworten
Beitrag von Sander (8133 Beiträge) am Samstag, 15.November.2014, 22:53.
Re: Re: Re: Re: Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
dann geht ich davon aus, das dein Feld nicht $tag heißt, oder $Aufgabe bzw $Hinweis nicht gefüllt ist... Ich hab es gerade probiert, mit festen Werten geht es
<perl>
$Datum="15.11.2014";
$jetztdatum = datum("jetzt","Jahr.Monat0.Tag0"); #heute
$von = datum("jetzt-1","Jahr.Monat0.Tag0"); #gestern
$bis = datum("jetzt+1","Jahr.Monat0.Tag0"); #morgen
$tag = datum($Datum,"Jahr.Monat0.Tag0");
if($tag gt $jetztdatum){
out "Hinweis";
}
if($tag lt $von){
out "zu spät";
}
if($tag eq $jetztdatum){
out "Aufgabe";
}
</perl>
Antworten
Beitrag von Bernd (213 Beiträge) am Samstag, 15.November.2014, 23:54.
Re: Re: Re: Re: Re: Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
Ich habe das mal direkt so übernommen, bekomme jetzt überall "zu spät" angezeigt, auch wenn es das gerade ist :-)
http://baseportal.de/cgi-bin/baseportal.pl?htx=/bernd77/test/start
---------------------------------------------------
<loop db=daten code=perl>
$jetztdatum = datum("jetzt","Jahr.Monat0.Tag0"); #heute
$von = datum("jetzt-1","Jahr.Monat0.Tag0"); #gestern
$bis = datum("jetzt+1","Jahr.Monat0.Tag0"); #morgen
$tag = datum($Datum,"Jahr.Monat0.Tag0");
out<<EOF;
<h2>$tag | $Titel</h2>
<hr>
EOF
$jetztdatum = datum("jetzt","Jahr.Monat0.Tag0"); #heute
$von = datum("jetzt-1","Jahr.Monat0.Tag0"); #gestern
$bis = datum("jetzt+1","Jahr.Monat0.Tag0"); #morgen
$tag = datum($Datum,"Jahr.Monat0.Tag0");
if($tag gt $jetztdatum){
out "Hinweis";
}
if($tag lt $von){
out "zu spät";
}
if($tag eq $jetztdatum){
out "Aufgabe";
}
out <<EOF;
EOF
</loop>
---------------------------------------------------
Antworten
Beitrag von Sander (8133 Beiträge) am Sonntag, 16.November.2014, 00:53.
Re: Re: Re: Re: Re: Re: Re: Re: Re: Feld nur in bestimmten Zeitfenster anzeigen
Antworten