Leeres Datum nicht möglich

windmeier

Leeres Datum nicht möglich

Beitragvon windmeier » Mi 20. Aug 2008, 19:36

Ich möchte in einer Klasse zwei Datums definieren und verwende den Typ Datum. Er speichert jeweils einen Timestmp ab und das ist auch gut so, denn so kann ich in der späteren lisview gut sortieren.

Jetzt möchte ich aber das zweite Datum optional halten, d.h. es gibt Objekte, die kein zweites Datum brauchen. Wie kann ich nun festlegen, dass dieses zweite Datum optional ist, ohne dass ich jetzt mit einem Textfeld arbeiten muss?

Hat jemand schon mal so einen Fall gehabt?

mobby
Senior Member
Beiträge: 1164
Registriert: Do 1. Sep 2005, 05:07

Beitragvon mobby » Mi 20. Aug 2008, 19:50

Moin Moin,
geht es nicht, das die Ausgabe des Datum per if Steuerst, also ein Bedingung hinterlegst, wenn der das zweite Datum nutzen soll oder nicht?
Bei der Anlage des Objekt wird das Datumsfeld dann einfach mit den Standardwert belassen.
Vielleicht scheibst du mal, wie das Ergebnis aussehen soll.
Viele Grüße
Mobby

webEdition 8.1.0 (Ahlberg) (8.1.0.0, Revision: 10599)

windmeier

Beitragvon windmeier » Mi 20. Aug 2008, 19:58

Hi Mobby,
danke für die schnelle Reaktion. Lass mich das mal genauer erklären. Das Objekt ist eine Fernsehsendung, die zwei Sendetermine haben kann, aber meistens gibt halt doch nur einen Termin. Der zweite Date-Selector steht standardmäßig auf dem aktellen Datum, wenn ich eine neue Sendung anlege, d.h. er speichert immer einen Timestamp, egal ob ich das will oder nicht.

Problem verstanden? Das zweite Datum ist immer optional, aber wir soll ich das zweite Datum wahlweise ignorieren können, wenn immer eine Datum gespeichert wird.

mobby
Senior Member
Beiträge: 1164
Registriert: Do 1. Sep 2005, 05:07

Beitragvon mobby » Mi 20. Aug 2008, 20:06

Aja, ich versuche zu Verstehen:
Datum 1: 1. Sendetermin
Datum 2: wenn es einen gibt, 2. Sendetermin

Datum 1 muss immer angeben werden. Wenn es nun einen zweiten Termin gibt, wird das Datum 2 gesetzt. In der Ausgabe machst du nun eine if nach dem Motto "Wenn Datum 2 größer ist als Datum 1 dann zeige Datum 2 an". Wenn das Datum 2 kleiner ist als das erste, gibt es keinen zweiten Sendetermin.
Ich hoffe, du verstehst, was ich meine.
Ich hab nun ne weile schon nicht mit den Tags gearbeitet, aber damit müsste es klappen.
Viele Grüße
Mobby

webEdition 8.1.0 (Ahlberg) (8.1.0.0, Revision: 10599)

windmeier

Beitragvon windmeier » Mi 20. Aug 2008, 20:17

Hi,
stelle gerade fest, dass ins englische Forum poste ... dann steht hier wenigstens mal mehr drin ;-)

Auf die Idee mit dem Vergleich bin ich auch schon gekommen. D.h. ich könnte dem Redakteur auch sagen, er soll das Jahr des 2. Datums auf vor 2000 stellen, wenn es keinen zweiten Sendetermin gibt.

Danke für deine Hilfe. Bist du eigentlich webEdition Partner?

mobby
Senior Member
Beiträge: 1164
Registriert: Do 1. Sep 2005, 05:07

Beitragvon mobby » Mi 20. Aug 2008, 20:21

windmeier;48753 hat geschrieben:Bist du eigentlich webEdition Partner?
Ehmaliger :-(
Auf die Idee mit dem Vergleich bin ich auch schon gekommen. D.h. ich könnte dem Redakteur auch sagen, er soll das Jahr des 2. Datums auf vor 2000 stellen, wenn es keinen zweiten Sendetermin gibt.
Geht es den um Sendungen die in der Vergangenheit liegen oder in der Zukunft. Ansicht müsste aber der Bezug zu Datum 1 reichen, da der zweite ja immer später ist.
Wenn du mir 2 Stunden Zeit gibst (meine Regierung ruft zum Einkaufen) dann mache ich da mal was...
Viele Grüße
Mobby

webEdition 8.1.0 (Ahlberg) (8.1.0.0, Revision: 10599)

deemes

Beitragvon deemes » Mi 20. Aug 2008, 20:29

Hier mal etwas aus einem Termin-Template mit Start- und optionalem End-Zeitpunkt:

Code: Alles auswählen

<we:var type="date" name="DatumVOM" format="d.m.Y"/><?php if($we_doc->getElement("DatumVOM") != $we_doc->getElement("DatumBIS")): ?> bis
<we:var type="date" name="DatumBIS" format="d.m.Y"/><?php endif; ?>
Da die Felder ja intern als Timestamp gespeichert werden müsste hier ein Vergleich mit < funktionieren.

Also

Code: Alles auswählen

<we:var type="date" name="DatumVOM" format="d.m.Y"/><?php if($we_doc->getElement("DatumVOM") < $we_doc->getElement("DatumBIS")): ?> bis
<we:var type="date" name="DatumBIS" format="d.m.Y"/><?php endif; ?>
Ungetestet.

mobby
Senior Member
Beiträge: 1164
Registriert: Do 1. Sep 2005, 05:07

Beitragvon mobby » Mi 20. Aug 2008, 23:18

So, ich bin jetzt unter folgenden Bedingungen herangegangen:
Es soll ein Objekt angelegt werden, in den eine Sendung vermerkt ist. Es gibt ein Datumsfeld, in dem der Sendetermin festgelegt wird. Dann gibt es ein zweites Datumfeld, in dem ein zweiter Sendetermin angelegt wird.
Die Bedingung ist jetzt so, das wenn das Datum2 kleiner ist als das Datum1 wird das Datum2 (Sendetermin 2) nicht angezeigt. Wenn es also keinen zweiten Sendetermin gibt, beachtet man das Datumfeld auch nicht. Die Vorlage für die Listview:
Code: Alles auswählen
<we:listview type="object" name="SendungListe" order="Datum1" desc="true" classid="6">
<we:repeat>

<p>
<we:field name="NameSendung" type="text" />

Sendetermin: <we:field name="Datum1" type="date" format="d.m.Y"/>
</p>


<?php
$date1 = $GLOBALS['lv']->f('Datum1');
$date2 = $GLOBALS['lv']->f('Datum2');

if ($date2 > $date1 )
{
?>
<p>
2. Sendetermin: <we:field name="Datum2" type="date" format="d.m.Y"/>

</p>

<?php
}

?>

</we:repeat>
</we:listview>
In der Anlage ist mal der Export.
Viele Grüße
Mobby

webEdition 8.1.0 (Ahlberg) (8.1.0.0, Revision: 10599)

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Beitragvon Dirk Einecke » Do 21. Aug 2008, 09:04

Hi,

man könnte es so machen, dass man das man beim zweiten Datum alles auf 0 stellt wenn man dieses nicht benötigt und dann darauf prüft. Oder man macht ein zusätzliches Feld "ZweitesDatumIgnorieren" vom Typ Checkbox ....

windmeier

Beitragvon windmeier » Do 21. Aug 2008, 09:15

Danke mobby, so könnte man es lösen bzw. so muss ich es momentan lösen.

Dirk, wie soll ich den Datum-Selektor auf Null stellen?

Dirk Einecke
Senior Member
Beiträge: 3735
Registriert: Do 1. Jan 1970, 02:00
Wohnort: Karlsruhe
Kontaktdaten:

Beitragvon Dirk Einecke » Do 21. Aug 2008, 09:18

Hi,
windmeier;48766 hat geschrieben:Dirk, wie soll ich den Datum-Selektor auf Null stellen?
... 01.01.1970 00:00 Uhr

windmeier

Beitragvon windmeier » Do 21. Aug 2008, 09:34

Achso ja, ich hatte verstanden, dass man Tag, Monat und Jahr auf Null stellen kann. Danke für die Untersütung.


Zurück zu „DB / Object Module“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste