abgelaufene Datumsfelder nicht anzeigen

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Mo 29. Aug 2016, 16:44

Ich habe eine Listview mit Seminaren und möchte in einer Terminbox abgelaufene Termine nicht mehr anzeigen. Der php String if(date) gibt aber gar nichts mehr aus, also auch nicht die Termine, die in der Zukunft liegen. Kann mir eventuell jemand auf die Sprünge helfen?

LG Regina

Code: Alles auswählen

	<we:listview type="object" name="seminar-d" classid="2" workspaceID="19" objectseourls="true" order="Seminar-Nummer" desc="false">
		<we:repeat>
			<div class="panel-seminar">
				<div class="<we:ifFieldNotEmpty type="checkbox" match="Neu">panel-header-seminar-neu <we:else />panel-header-seminar</we:ifFieldNotEmpty>"><a href="<we:field name="we_path" />"><we:ifFieldNotEmpty type="checkbox" match="Neu"><span class="glyphicon glyphicon-certificate"></span> <i>NEU:</i> </we:ifFieldNotEmpty><we:field name="Seminartitel"/></a></div>
				<div class="panel-body-seminar">
					<div class="col-md-8 col-spacer-h">
						<p><we:field name="Kurzbeschreibung"/></p>
					</div>
					<div class="col-md-4 panel-box-seminar">
						<h2>Termine</h2>
						<p>Hamburg</p>
						<?php if(date(Ymd, substr($lv->f("HamburgTermin1a"), 6, 10)) >= date(Ymd, time())): ?> 
						<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y" /> bis <we:field type="date" name="Hamburg-Termin1b" format="d.m.Y" /></p>
						<?php endif; ?>
						<?php if(date(Ymd, substr($lv->f("HamburgTermin2a"), 6, 10)) >= date(Ymd, time())): ?> 
						<p><we:field type="date" name="HamburgTermin2a" format="d.m.Y" /> bis <we:field type="date" name="Hamburg-Termin1b" format="d.m.Y" /></p>
						<?php endif; ?>
						<?php if(date(Ymd, substr($lv->f("HamburgTermin3a"), 6, 10)) >= date(Ymd, time())): ?> 
						<p><we:field type="date" name="HamburgTermin3a" format="d.m.Y" /> bis <we:field type="date" name="Hamburg-Termin1b" format="d.m.Y" /></p>
						<?php endif; ?>
						<p><a class="btn btn-success" href="<we:field name="we_path" />" role="button"><span class="glyphicon glyphicon-circle-arrow-right"></span> zum Seminar</a></p>
					</div>
				</div>
			</div>
		</we:repeat>
	</we:listview>

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon WBTMagnum » Mo 29. Aug 2016, 22:56

Hallo Regina,

Ohne den Aufbau der Lösung zu kennen ist es schwer hier konkrete Aussagen zu treffen. Trotzdem ein paar Fragen als Denkansatz:
  • Welche webEdition Version läuft denn dort?
  • Was steht den in den Feldern "HamburgTermin1a", "HamburgTermin2a" bzw. "HamburgTermin3a"?
  • Hast du dir schon mal den Tag <we:ifField type="date"> angesehen?
  • Je nachdem wie das System aufgebaut ist, kannst du ev. auch mit einer <we:condition> arbeiten und die früheren Termine schon vorab heraus filtern.
  • Hast du mal in den Errorlog geschaut? Ev. finden sich dort sachdienliche Hinweise.
HTH,
Sascha

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon mokraemer » Mo 29. Aug 2016, 23:33

was mir bei dem Kode direkt auffällt:
- es fehlen Anführungszeichen, nicht date(Ymd , sondern date("Ymd"
- du verwendest if(): endif; - das Konstrukt ist in der LV nicht zulässig, denn wir verwenden intern nur noch if(){...} und die Mischung beider Syntax-Varianten ist im gleichen Kontext nicht zulässig
- der Zugriff $lv sollte auch $GLOBALS['lv'] lauten
webEdition-Kern-Entwickler

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Di 30. Aug 2016, 11:24

Die PHP-Syntax habe ich jetzt geändert, bringt aber kein Ergebnis. Da ist wohl noch ein Syntax-Fehler drin.

Code: Alles auswählen

<?php if(date("Ymd", substr($GLOBALS->f("Hamburg-Termin1a"), 6, 10)) >= date(Ymd, time())): ?>
<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y" /> bis <we:field type="date" name="Hamburg-Termin1b" format="d.m.Y" /></p>
<?php endif; ?>

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon mokraemer » Di 30. Aug 2016, 11:59

du must schon alles machen was ich schreibe...

Code: Alles auswählen

<?php if(date("Ymd", substr($GLOBALS->f("Hamburg-Termin1a"), 6, 10)) >= date("Ymd", time())){ ?>
<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y" /> bis <we:field type="date" name="Hamburg-Termin1b" format="d.m.Y" /></p>
<?php } ?>
webEdition-Kern-Entwickler

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Di 30. Aug 2016, 13:32

sorry, ich steh auf dem schlauch als PHP-Dummy. Mein Code sieht jetzt so aus und bringt scheinbar WE aus dem Ruder. Das Template ist kaputt, d.h. die HTML-Seite zeigt auch keinen Eigenschaften-Reiter mehr an. Hooks sind auf ja eingestellt.

Code: Alles auswählen

<we:listview type="object" name="seminar-d" classid="2" workspaceID="19" objectseourls="true" order="Seminar-Nummer" desc="false">
<we:repeat>
<?php if(date("Ymd", substr($GLOBALS->f("Hamburg-Termin1a"), 6, 10)) >= date("Ymd", time())){ ?>
<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y" /> bis <we:field type="date" name="HamburgTermin1b" format="d.m.Y" /></p>
<?php } ?>
</we:repeat>
</we:listview>


mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon mokraemer » Di 30. Aug 2016, 23:35

sorry, ich hab vorhin nur den einen Fehler bei dir korrigiert, du solltest $GLOBALS['lv'] schreiben. Korrekt sollte das in der Vorlage so aussehen:

Code: Alles auswählen

<we:listview type="object" name="seminar-d" classid="2" workspaceID="19" objectseourls="true" order="Seminar-Nummer" desc="false">
<we:repeat>
<?php if(date("Ymd", substr($GLOBALS['lv']->f("Hamburg-Termin1a"), 6, 10)) >= date("Ymd", time())){ ?>
<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y" /> bis <we:field type="date" name="HamburgTermin1b" format="d.m.Y" /></p>
<?php } ?>
</we:repeat>
</we:listview>
Dann ist auch der fatale php-Fehler weg.
webEdition-Kern-Entwickler

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Do 1. Sep 2016, 11:50

Danke Marc, dass Du Dir die Zeit nimmst. Wäre das eventuell ein Feauture im WE Tag we:field type=Date? Eventuell als Attribut (nicht anzeigen, wenn abgelaufen).

Leider funktioniert es immer noch nicht. Ich habe drei Termine anzuzeigen (HamburtTermin1a, HamburgTermin2a, HamburgTermin3a). Im Objekt ist der 1a Termin versuchsweise in der Vergangenheit, die anderen liegen in der Zukunft. Es werden aber gar keine angezeigt.
Ich habe den PHP-String jetzt separat für jedes Feld eingefügt und mein Code sieht jetzt so aus:

Code: Alles auswählen

	<we:listview type="object" name="seminar-d" classid="2" workspaceID="19" objectseourls="true" order="Seminar-Nummer" desc="false">
		<we:repeat>
			<div class="col-md-4 panel-box-seminar">
				<h2>Termine</h2>
				<?php if(date("Ymd", substr($GLOBALS['lv']->f("HamburgtTermin1a"), 6, 10)) >= date("Ymd", time())){ ?>
				<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y" /> bis <we:field type="date" name="HamburgTermin1b" format="d.m.Y" /></p>
				<?php } ?>
				<?php if(date("Ymd", substr($GLOBALS['lv']->f("HamburgtTermin2a"), 6, 10)) >= date("Ymd", time())){ ?>
				<p><we:field type="date" name="HamburgTermin2a" format="d.m.Y" /> bis <we:field type="date" name="HamburgTermin2b" format="d.m.Y" /></p>
				<?php } ?>
				<?php if(date("Ymd", substr($GLOBALS['lv']->f("HamburgtTermin3a"), 6, 10)) >= date("Ymd", time())){ ?>
				<p><we:field type="date" name="HamburgTermin3a" format="d.m.Y" /> bis <we:field type="date" name="HamburgTermin3b" format="d.m.Y" /></p>
				<?php } ?>
				<p><a class="btn btn-success" href="<we:field name="we_path" />" role="button"><span class="glyphicon glyphicon-circle-arrow-right"></span> zum Seminar</a></p>
			</div>
		</we:repeat>
	</we:listview>

WBTMagnum
webEdition Partner
webEdition Partner
Beiträge: 1825
Registriert: Di 7. Mär 2006, 16:50
Wohnort: Wien
Kontaktdaten:

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon WBTMagnum » Do 1. Sep 2016, 15:58

Hallo Regina,

Poste doch mal die Ausgaben von:
  • $GLOBALS['lv']->f("HamburgtTermin2a")
  • substr($GLOBALS['lv']->f("HamburgtTermin2a"), 6, 10)
  • date("Ymd", substr($GLOBALS['lv']->f("HamburgtTermin2a"), 6, 10))
LG,
Sascha

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Fr 2. Sep 2016, 10:02

Hallo Sascha,
habs mal so probiert, ergibt aber keine Ausgaben:

<?php
echo $GLOBALS['lv']->f("HamburgtTermin2a");
echo substr($GLOBALS['lv']->f("HamburgtTermin2a"), 6, 10);
echo date("Ymd", substr($GLOBALS['lv']->f("HamburgtTermin2a"), 6, 10));
?>

mokraemer
Senior Member
Beiträge: 3619
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon mokraemer » Fr 2. Sep 2016, 11:22

das würde dann auch erklären warum das nicht funktioniert. Mach das doch besser mit den we-Tags, dafür sind sie doch da.

Du gehst auch hier davon aus, daß das Datum ein Unix-Timestamp ist, das wird sich vermutlich mit WE 7.1 ändern - die ganzen Timestamps sollen echte Datumseinträge in der DB werden, wie es sauber ist. Mit den WE-Tags bist du da sicher, weil wir das zentral machen - wenn du das selbst machst, mußt du dich um die Stellen erneut kümmern.

was klappen müßte:

Code: Alles auswählen

<?php $GLOBALS['curDate'])=date("Ymd", time(); ?>
<we:lv ...>
[...]
<we:ifField type="date" name="HamburgTermin1a" format="Ymd" operator="greater|equal" match="\$curDate"/>
[...]
</we:ifField>
Manchmal muß man evtl. noch mal wieder in die Tagrefernez schauen und überdenken ob man alles in php machen sollte, es geht ja schon recht viel von Haus aus.
webEdition-Kern-Entwickler

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Fr 2. Sep 2016, 15:51

danke Marc für den neuen Lösungsvorschlag. Geht halt alles nicht ganz ohne PHP und das fehlt mir das Wissen, sorry.
Ich hab die Listview mal mit we:ifField umgebaut. Aber im PHP-String scheint ein Fehler zu sein. Die Seite wird gar nicht mehr angezeigt.

r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

Re: abgelaufene Datumsfelder nicht anzeigen

Beitragvon r_kempf » Sa 3. Sep 2016, 17:12

so jetzt funktionierts - hier mein Script für WE 7.02:

Code: Alles auswählen

<?php $GLOBALS['curDate']= date("Ymd", time()); ?>
<we:listview type="object" name="seminar-d" classid="2" workspaceID="19" objectseourls="true" order="Seminar-Nummer" desc="false">
<we:repeat>
<we:ifField type="date" name="HamburgTermin1a" format="Ymd" operator="greater|equal" match="$curDate">
<p><we:field type="date" name="HamburgTermin1a" format="d.m.Y"/></p>
</we:ifField>
<we:ifField type="date" name="HamburgTermin2a" format="Ymd" operator="greater|equal" match="$curDate">
<p><we:field type="date" name="HamburgTermin2a" format="d.m.Y" /></p>
</we:ifField>
<we:ifField type="date" name="HamburgTermin3a" format="Ymd" operator="greater|equal" match="$curDate">
<p><we:field type="date" name="HamburgTermin3a" format="d.m.Y" /></p>
</we:ifField>
</we:repeat>
</we:listview>
Danke an alle für die Tipps!!!
LG Regina


Zurück zu „DB / Object Module“

Wer ist online?

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