Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 00:18.
Datum vergleichen
Hallo,
ich hänge immer noch am Datum (siehe weiter unten)...
Bei meiner DB mit Beginn- und Schluss-Datum habe ich nun begriffen, dass baseportal Datumsfelder immer füllt, wenn diese leer sind (auch wenn diese auf "Nutzereingabe" eingestellt sind...).
Ich möchte nun in meinem Ausgabetemplate das Schluss-Datum nur angezeigt bekommen, wenn es nicht dem Beginn-Datum entspricht. Eigentlich ist das ja eine einfache "if"-Schleife. Nur irgendwie scheine ich heute wieder ein "Brett vorm Kopf" zu haben. Wie vergleiche ich nun die beiden Felder?
Im Prinzip soll der Satz lauten:
Wenn (Schlussdatum nicht gleich Beginndatum oder SchlussUhrzeit nicht gleich BeginnUhrzeit) dann...
... nur wie schreib ich's in Perl?
Zum Thema Datum habe ich auch noch ne zweite Frage:
Wie bekomme ich es hin, dass im Eingabeformular im Datum-Optionsfeld immer das aktuelle Datum voreingestellt ist?
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 17.September.2001, 01:03.
Re: Datum vergleichen
wie wärs mit
1)
if (datum($schluss,"Tag.Monat.Jahr") ne datum($beginn,,"Tag.Monat.Jahr") || datum($schluss,"Stunde:Minute") ne datum($beginn,,"Stunde:Minute"))
2)
out "<option";
out " selected" if datum($deindatum,"Tag.Monat.Jahr") eq datum("jetzt","Tag.Monat.Jahr");
out ">$deinDatum";
und sonst alles klar bei "alleine"?
Sander
Ps: if-Schleifen gibts nicht, - if-Verzweigung ist richtiger ;-)
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 14:02.
Re: Datum vergleichen
Hallo Sander,
danke für deine Tipps. Werde sie nachher gleich mal ausprobieren.
Ansonsten ist eigentlich (weitgehend) alles klar. Dank deiner großen (Anschub-)Hilfe wurschtel ich mich im Moment ganz gut durch. Bei den verschiedenen Templates gehen mal ab und zu die Ids verloren, aber im Großen und Ganzen funktioniert es ganz gut. Besonders das Postamt läuft jetzt stabil :-))
Demnächst werde ich aber wohl wieder mit größeren Fragen auf dich zu kommen...
Grüße
Oliver ;-)
P.S.: dann halt nicht if-Schleifen... bin halt doch ein Anfänger... ;-)))
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 15:23.
Re: Datum vergleichen
Hallo Sander,
ich bins nochmal...
also zu 1) klappt wunderbar
zu 2) habe ich noch eine Frage: Wo setze ich den Code denn hin? Bisher sieht mein select so aus:
<select name="_BeginnDatum_Tag:=">
<option>1<option>2<option>3<option>4<option>5<option>6<option>7<option>8<option>9<option>10<option> 11<option>12<option>13<option>14<option>15<option>16<option>17<option>18<option>19<option>20<option> 21<option>22<option>23<option>24<option>25<option>26<option>27<option>28<option>29<option>30<option> 31</option><style="border-color:#FFCC00; background-color:#FFFFCC; color:#000000; font-family:arial, helvetica; font-size:12px; font-weight:bold;"></select>. <select name="_BeginnDatum_Monat:="><option value="1">Januar<option value="2">Februar<option value="3">März<option value="4">April<option value="5">Mai <option value="6">Juni<option value="7">Juli<option value="8">August<option value="9">September<option value="10">Oktober<option value="11">November<option value="12"> Dezember</option><style="border-color:#FFCC00; background-color:#FFFFCC; color:#000000; font-family:arial, helvetica; font-size:12px; font-weight:bold;"></select>. <select name="_BeginnDatum_Jahr:="><option selected>2001<option>2002<option>2003 <option>2004<option>2005<option>2006<option>2007<option>2008<option>2009 <option>2010</option><style="border-color:#FFCC00; background-color:#FFFFCC; color:#000000; font-family:arial, helvetica; font-size:12px; font-weight:bold;"></select>
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 17.September.2001, 18:58.
Re: Datum vergleichen
dann müssen wir das anders angehen, genauer: in Perl - was sonst ;-)
<perl>
out "<select name=\"_BeginnDatum_Tag:=\" style=\"border-color:#FFCC00; background-color:#FFFFCC; color:#000000; font-family:arial, helvetica; font-size:12px; font-weight:bold;\">";
for (1..31)
{
out "<option";
out " selected" if $_ == datum("jetzt","Tag");
out ">$_</option>";
}
out "</select><select name=\"_BeginnDatum_Monat:=\" style=\"border-color:#FFCC00; background-color:#FFFFCC; color:#000000; font-family:arial, helvetica; font-size:12px; font-weight:bold;\">";
for ("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember")
{
out "<option";
out " selected" if $_ eq datum("jetzt","Monatname");
out ">$_</option>";
}
out "</select><select name=\"_BeginnDatum_Jahr:=\" style=\"border-color:#FFCC00; background-color:#FFFFCC; color:#000000; font-family:arial, helvetica; font-size:12px; font-weight:bold;\">";
for (2001..2010)
{
out "<option";
out " selected" if $_ == datum("jetzt","Jahr");
out ">$_</option>";
}
out "</select>";
</perl>
Das kannst du gegen die jetzigen selects eintauschen.
Grüsse
Sander
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 21:01.
Re: Datum vergleichen
Super, funktioniert - für Stunde/Minute habe ich mir das auch umgeschrieben ;-)
Hab da aber noch zwei Fragen:
1. Bei Stunde Minute sieht die for-Schleife (?!) so aus:
for (0..23)...
das funktioniert auch soweit. Kann ich das auch irgendwie hinbekommen, dass bei den Ziffern 0 bis 9 im select die führende "0" mit ausgegeben wird?
2. Im Änderungsformular habe ich es - nach deinem Muster - auch hinbekommen, dass mir im Datum und bei der Zeit der ursprüngliche Feldinhalt angezeigt wird. Nur wenn ich das Formular abschicke, werden die Felder mit aktuellem Datum und aktueller Zeit gefüllt. Der mod-Befehl sieht so aus:
mod "Id==!$detailId", [...,"BeginnDatum",$BeginnDatum,"BeginnUhrzeit",$BeginnUhrzeit,"SchlussDatum",$SchlussDatum, "SchlussUhrzeit",$SchlussUhrzeit...],"liste";
Wo liegt der Fehler?
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 17.September.2001, 21:51.
Re: Datum vergleichen
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 21:57.
Re: Datum vergleichen
Danke, werd's mal ausprobieren.
zu 2) ist alles auf "nutzereingabe" eingestellt
Jou, sieh dich ruhig um... ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Montag, 17.September.2001, 21:59.
Re: Datum vergleichen
aber in welchem Template?
Sander
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 22:14.
Re: Datum vergleichen
Oh, pardon...
Verzeichnis= termine
Template= aendern
Oliver ;-)
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Montag, 17.September.2001, 22:16.
Re: Datum vergleichen
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Dienstag, 18.September.2001, 09:36.
Re: Datum vergleichen
Moin Sander,
hast du schon den Fehler entdeckt?
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 18.September.2001, 13:31.
Re: Datum vergleichen
ne, hatte gestern keine Zeit mehr dafür
gucke aber gleich.
Sander
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 18.September.2001, 15:33.
Re: Datum vergleichen
so, nun teste mal.
Bei mod .. mußt du die einzelnen Vars aus dem select so speichern, wie sie aus dem Form ankommen. erst beim speichern werden die Werte zu einem Datum zusammen gesetzt.
Sander
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Dienstag, 18.September.2001, 16:02.
Re: Datum vergleichen
Super danke - funktioniert :-))
Hatte mir schon gedacht, dass es damit zu tun hat. Wusste nur nicht, wie es anstelle...
Kannst du mir noch sagen, wie ich am Besten die Datensätze lösche, deren BeginnDatum eine Woche überschritten ist und bei denen das Feld "periodisch" nicht gefüllt ist?
Grüße
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 18.September.2001, 16:36.
Re: Datum vergleichen
probier das mal an einer Sicherung. ich glaube das mit ' ' bei leer hat bei mir schon mal hingehauen.
del "BeginnDatum<jetzt-7 periodisch==' '","dbname";
Sander
Antworten
Beitrag von Oliver ;-) (439 Beiträge) am Dienstag, 18.September.2001, 22:33.
Re: Datum vergleichen
funktioniert irgendwie nicht. ich bekomme das zwar hin, dass Datensätze gelöscht werden, aber die Selektion nach Sätzen mit leerem Feld "periodisch" klappt nicht.
Oliver ;-)
Antworten
Beitrag von Sander (8133 Beiträge) am Dienstag, 18.September.2001, 22:58.
Re: Datum vergleichen
dann halt umständlich:
get "Id==*","dbname","loeschen";
while (get_next("loeschen"))
{
if ($periodisch eq "" && datum($BeginnDatum,"intern")lt datum("jetzt-7","intern"))
{
del "Id==$_id","dbname";
}
}
Hauptsache, es überschreibt dann nicht wieder andere Ids ;-)
Sander
Antworten
Beitrag von Oliver ;-) (49 Beiträge) am Mittwoch, 19.September.2001, 09:52.
Re: Datum vergleichen
Danke, Sander, so funktioniert es :-)
allerdings musste ich das unter die Listenausgabe setzen, da sonst - warum auch immer - nur die Termine der Art "Treffen" angezeigt wurden.
Jetzt hat es halt den kleinen Schönheitsfehler, dass eventuell noch Sätze angezeigt werden, die eigentlich im gleichen Moment gelöscht wurden.
Oliver ;-)
Antworten