we:ifField - Mehrere Felder vergleichen

Fragen zum Erstellen von Templates für webEdition.
r_kempf
Senior Member
Beiträge: 214
Registriert: Do 14. Apr 2016, 13:27

we:ifField - Mehrere Felder vergleichen

Beitragvon r_kempf » Mo 18. Jun 2018, 19:15

Hallo,
mit folgendem Script werden Datumsfelder eines Objektes nur angezeigt, wenn das Datum nicht abgelaufen ist. Jetzt möchte ich für den Fall, dass alle Termine abgelaufen sind einen Text anzeigen lassen. Mit we:ifField geht ja nur die Abfrage von einem Feld. Die Frage ist, wie sich alle drei Felder mit $curDate prüfen lassen.
Hat jemand eine Lösung parat. Vielen Dank im voraus :)

Code: Alles auswählen

<?php $GLOBALS['curDate']= date("Ymd", time()); ?>
<we:ifField type="date" name="01-Termin" format="Ymd" operator="greater|equal" match="$curDate">
<we:field type="date" name="01-Termin" format="d.m.Y"/><br></we:ifField>

<we:ifField type="date" name="02-Termin" format="Ymd" operator="greater|equal" match="$curDate">
<we:field type="date" name="02-Termin" format="d.m.Y"/><br></we:ifField>

<we:ifField type="date" name="03-Termin" format="Ymd" operator="greater|equal" match="$curDate">
<we:field type="date" name="03-Termin" format="d.m.Y"/><br></we:ifField>

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: we:ifField - Mehrere Felder vergleichen

Beitragvon blickfang » Mo 18. Jun 2018, 20:01

Hi,
schreib Dir die Felder in eine Vaariable und vergleiche diese dann.

Code: Alles auswählen

<we:ifField type="date" name="01-Termin"to="global" nameto="date1" />
<we:ifField type="date" name="02-Termin"to="global" nameto="date2" />

<?php 
if($GLOBALS['date1'] < $vergleich && $GLOBALS['date2'] < $vergleich){ 
  echo 'irgendwas'; 
}?>
VG
Timo
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

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

Re: we:ifField - Mehrere Felder vergleichen

Beitragvon r_kempf » Di 19. Jun 2018, 11:54

Danke Timo, aber da ist irgendein Denkfehler drin. Das Script müsste prüfen, ob alle drei Termine abgelaufen sind und nur in diesem Falle einen Text ausgeben.

Vereinfacht gedacht bräuchte man in etwa so etwas:

Code: Alles auswählen

<we:ifField type="date" name="01-Termin,02-Termin,03-Termin" operator="less|equal" match="$curDate">Derzeit keine Termine!</we:ifField>

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: we:ifField - Mehrere Felder vergleichen

Beitragvon blickfang » Di 19. Jun 2018, 12:34

dann nimmste halt noch das dritte Datum dazu?

Code: Alles auswählen

<we:ifField type="date" name="01-Termin"to="global" nameto="date1" />
<we:ifField type="date" name="02-Termin"to="global" nameto="date2" />
<we:ifField type="date" name="03-Termin"to="global" nameto="date3" />

<?php 
if($GLOBALS['date1'] < $vergleich && $GLOBALS['date2'] < $vergleich && $GLOBALS['date3'] < $vergleich){ 
  echo 'irgendwas'; 
}?>
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

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

Re: we:ifField - Mehrere Felder vergleichen

Beitragvon r_kempf » Di 19. Jun 2018, 13:16

Da stimmt noch was nicht. Der Text erscheint nicht, obwohl alle Termine auf Vergangenheit eingestellt sind.
Ich habe beim we:ifField das "match" und den operator="less|equal" ergänzt.
Das "echo" erscheint, nur wenn dort alle drei Variablen (date1, date2,date3) drin stehen?

Code: Alles auswählen

<?php $GLOBALS['curDate']= date("Ymd", time()); ?>
<we:ifField type="date" name="01-Termin" operator="less|equal" match="$curDate" to="global" nameto="date1"></we:ifField>
<we:ifField type="date" name="02-Termin" operator="less|equal" match="$curDate" to="global" nameto="date2"></we:ifField>
<we:ifField type="date" name="03-Termin" operator="less|equal" match="$curDate" to="global" nameto="date3"></we:ifField>
<?php 
	if($GLOBALS['date1'] < $vergleich && $GLOBALS['date2'] < $vergleich && $GLOBALS['date3'] < $vergleich){ 
	echo 'irgendwas'; 
}?>

Benutzeravatar
blickfang
webEdition Partner
webEdition Partner
Beiträge: 812
Registriert: Mo 15. Dez 2003, 16:00
Kontaktdaten:

Re: we:ifField - Mehrere Felder vergleichen

Beitragvon blickfang » Di 19. Jun 2018, 13:53

naja, fast... hast Du mal selbst versucht das zu lesen was Du da gebaut hast?
Die ifField Abfrage brauchst Du nicht, Du schreibst Dir nur den Wert von we:field in eine Variable und die Varaiblenwerte kannst Du dan mit php beliebig vergleichen

Code: Alles auswählen

<?php $curDate = time(); ?>
<we:field type="date" name="01-Termin"  to="global" nameto="date1"/>
<we:field type="date" name="02-Termin"  to="global" nameto="date2"/>
<we:field type="date" name="03-Termin" to="global" nameto="date3"/>
<?php 
	if($GLOBALS['date1'] < $curDate && $GLOBALS['date2'] < $curDate && $GLOBALS['date3'] < $curDate ){ 
		echo 'irgendwas'; 
	}
?>
webEdition Partner - https://www.blickfang-media.com
Ehemals im Vorstand des webEdition e.V.

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

Re: we:ifField - Mehrere Felder vergleichen

Beitragvon r_kempf » Di 19. Jun 2018, 15:07

Na ja, das ist auch ein Blindflug. Ich würd ja nich fragen, wenn ich den Durchblick bei we-Tags in Kombi mit php hätte. Dein Vorschlag war ja auch noch nicht komplett - aber nichts für ungut - nobody is perfect :wink:

Nur um Missverständnissen vorzubeugen, habe ich das Script jetzt nochmal vollständig mit Kommentaren abgebildet. Der Alternativtext erscheint jetzt aber leider immer. Liegt es am <?php $curDate = time(); ?> - bringt das nicht gleiche Ergebnis wie im oberen Teil (Zukunftstermine)?

Code: Alles auswählen

<!--ANFANG Nur Zukunftstermine werden angezeigt - curDate ermittelt das aktuelle Datum -->
<?php $GLOBALS['curDate']= date("Ymd", time()); ?>
<we:ifField type="date" name="01-Termin" format="Ymd" operator="greater|equal" match="$curDate">
<we:field type="date" name="01-Termin" format="d.m.Y"/>
</we:ifField>
<we:ifField type="date" name="02-Termin" format="Ymd" operator="greater|equal" match="$curDate">
<we:field type="date" name="02-Termin" format="d.m.Y"/>
</we:ifField>
<we:ifField type="date" name="03-Termin" format="Ymd" operator="greater|equal" match="$curDate">
<we:field type="date" name="03-Termin" format="d.m.Y"/>
</we:ifField>
<!--ENDE Nur Zukunftstermine werden angezeigt - curDate ermittelt das aktuelle Datum -->

<!--ANFANG Alternativer Text bei keinem Zukunftstermin -->
<?php $curDate = time(); ?>
<we:field type="date" name="01-Termin" to="global" nameto="date1"/>
<we:field type="date" name="02-Termin" to="global" nameto="date2"/>
<we:field type="date" name="03-Termin" to="global" nameto="date3"/>
<?php 
if($GLOBALS['date1'] < $curDate && $GLOBALS['date2'] < $curDate && $GLOBALS['date3'] < $curDate ){ 
echo 'Termine nur auf Anfrage!'; 
}
?>
<!--ENDE Alternativer Text bei keinem Zukunftstermin -->


Zurück zu „webEdition Templates erstellen (we:Tags)“

Wer ist online?

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