Ergebnis 1 bis 12 von 12

Thema: Anmeldeformular soll nur zukünftige Events anzeigen

  1. #1
    Contao-Nutzer Avatar von georgr
    Registriert seit
    27.04.2011.
    Ort
    Graz
    Beiträge
    44

    Frage Anmeldeformular soll nur zukünftige Events anzeigen

    Moin,

    derzeit richte ich eine Anmeldeseite für Veranstaltungen ein.
    Zur Auswahl stehen sollen die Termine die ich in der Eventliste eingegeben habe.

    Das klappt hervorragend, jedoch würde ich gerne im Anmeldeformular nur die Termine zur Auswahl anzeigen die

    a) published sind und
    b) heute oder zukünftig beginnen.

    Ich kann ja Bedingungen angeben, bleibe ich bei published='1' funzt es ganz wunderbar, jedoch crasht es wenn ich als Bedingung formuliere:

    tl_calendar_events.startTime>=UNIX_TIMESTAMP(CURDA T E()) AND published=1

    Was habe ich falsch gemacht? größer oder gleich geht vermutlich son nicht '>=' oder? Beim Rest stimmt aber auch etwas nicht....

    DANKE für einen Tipp,

    LG aus Graz,

    Georg

  2. #2
    Contao-Fan Avatar von µaTh
    Registriert seit
    13.05.2010.
    Beiträge
    951

    Standard

    Ich versuche mal meine PHP-Kenntnisse zu nutzen und Rate mal ins Blaue hinein:

    • "=" gilt als Zuweisungsoperator und NICHT als Vergleichsoperator ("==")
    • "AND" durch "&&" ersetzten
    • Klammersetzung


    Mein Vorschlag:
    PHP-Code:
    (tl_calendar_events.startTime>=UNIX_TIMESTAMP(CURDA T E())) && (published==1
    und daraus müsste dann ein Boolean-Wert (false/true) rauskommen.

  3. #3
    Contao-Urgestein Avatar von do_while
    Registriert seit
    15.06.2009.
    Ort
    Berlin | Deutschland
    Beiträge
    3.615
    Partner-ID
    1081
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Hallo,

    ich glaube nicht, dass das so richtig ist, da das keine PHP- sondern MySQL-Syntax ist, daher muss die UND-Verbindung schon als AND geschrieben werden. Ich würde allerdings, wie µaTh schreibt, die Bedingungen einklammern.
    Das Feld published ist vom Typ varchar[1] und muss daher mit '1' verglichen werden. UNIX_TIMESTAMP() liefert den aktuellen Timestamp, wenn ohne Argumente aufgerufen, CURDATE() kann also entfallen. Wenn die StartTime nicht ausgefüllt ist, ist das Feld leer und der Vergleich läuft auf einen Fehler, den man auch abfangen sollte.

    Damit ergibt sich (habe ich nicht getestet):
    HTML-Code:
    ((tl_calendar_events.startTime='') OR (tl_calendar_events.startTime>=UNIX_TIMESTAMP())) && (published='1')

  4. #4
    Contao-Nutzer Avatar von georgr
    Registriert seit
    27.04.2011.
    Ort
    Graz
    Beiträge
    44

    Gesicht zeigt die Zunge Leider nein

    Moin ,

    Danke für Deine Hilfe, leider bekomme ich dennoch eine Fehlermeldung.

    PHP-Code:
    [01-May-2011 11:50:42PHP Fatal errorUncaught exception 'Exception' with message 'Query error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'E())) && (published==1)))' at line 1 (SELECT tl_calendar_events.* FROM tl_calendar_events, tl_calendar WHERE (tl_calendar.id=tl_calendar_events.pid)  AND (((tl_calendar_events.startTime>=UNIX_TIMESTAMP(CURDA T E())) && (published==1))))' thrown in /Applications/MAMP/htdocs/XY/system/libraries/Database.php on line 642 
    Ich probiere weiter....

    LG Georg

  5. #5
    Contao-Nutzer Avatar von georgr
    Registriert seit
    27.04.2011.
    Ort
    Graz
    Beiträge
    44

    Daumen hoch Es funzt- 1000 Dank!!

    Aus dem Chaos,

    das erste Moin galt µaTh,
    dieses zweite Moin gilt Hagen:

    Mit Hagen's Tipp und µaTh's Anstoss passt nun alles perfekt.

    Ausgeworfen werden nur mehr die tagesaktuellen, bzw. zukünftigen Events. Die alten Events bleiben aussen vor.
    Natürlich hätte ich die alten jeweils unpublishen können, damit hätte publish=1 genügt. Das wäre aber nicht in meinem Sinne gewesen, auch meiner Vergesslichkeit (=Chaos) wegen....

    Einen schönen Sonntag Euch allen,

    LG Georg
    (Exil Hamburger.... Daher der "Zwang" zum MOIN) ;-)

  6. #6
    Alter Contao-Hase
    Registriert seit
    10.05.2010.
    Ort
    Andernach / Rlp
    Beiträge
    1.158
    User beschenken
    Wunschliste

    Standard

    Hallo georgr,

    Es funzt- 1000 Dank!!
    Könntest Du bitte für alle die das gleiche Problem haben deine Lösung hier posten?
    Schön wäre es wenn Du evtl. einen kl. Workflow hinzufügen würdest.

    Vorab danke !

    Viele Grüße
    MiTsch
    Wer nichts weiss muss alles Glauben !

  7. #7
    Contao-Nutzer Avatar von georgr
    Registriert seit
    27.04.2011.
    Ort
    Graz
    Beiträge
    44

    Standard Fast ein Workflow

    Moin,

    ich dachte, die Lösung ergibt sich aus dem Thread, sorry, egoistisch gedacht......

    Ausgangslage:
    Ich betreibe eine Webseite, auf der ich u.a. meine eigenen Veranstaltungen (Seminare, Workshops) bewerbe (Events, Eventlist). Dazu habe ich ein Anmeldeformular entwickelt. Dieses greift auf die Datenbank (Tabelle mit den Events) zu, so daß man bei seiner Anmeldung einfach nur anklicken muss aus der Liste der Events, zu welchen man sich anmelden möchte.

    "Problem":
    Ich will die Events nicht auf "unpublished" setzen, so habe ich eine Art Historie. Was passiert aber? Die Besucher könnten sich dann ja auf einen abgelaufenen Termin anmelden. Was leicht mal geschieht. Das gilt es zu verhindern.

    Fast ein Workflow:
    Ich kann ja sog. Bedingungen angeben. Beispiel: Zeige mir alle Events an die auf published=1 stehen. Das reicht aber in diesem Fall nicht. Ich suchte eine Verknüpfung: Zeige alle Termine die published sind UND entweder heute oder zukünftig stattfinden.

    Die Lösung ist, diese Bedingung, wie folgt formuliert, ins Feld Bedingung einzutragen:

    HTML-Code:
    ((tl_calendar_events.startTime='') OR (tl_calendar_events.startTime>=UNIX_TIMESTAMP())) && (published='1')
    Danke nochmals für alle Unterstützung,

    LG Georg

  8. #8
    Contao-Nutzer
    Registriert seit
    20.07.2009.
    Beiträge
    45

    Standard

    Hallo georgr,
    ich stehe gerade vor einem ähnlichen Problem und möchte ebenfalls den Besuchern der Website die Möglichkeit geben, sich für kommende Anlässe anzumelden.
    Also ein Formular mit Anlass zum Auswählen, welches dann per Email verschickt wird.

    Kannst du mir ev. etwas detaillierter beschreiben wie du das Formular erstellt hast?
    Mit dem Formular-Generator? Hast du eine Erweiterung dafür Benötigt? Welchen Feldtyp brauchst du für die Liste?

    Eigentlich wollte ich "eventselect" benutzen, das klappt aber leide noch nicht so wie gewünscht.

    Würde mich über ein paar Tipps freuen.

    EDIT: Sorry, stand gestern etwas auf dem Schlauch. Der Tipp heisst EFG!
    Geändert von daniel.hug (04.01.2012 um 08:04 Uhr) Grund: Auf dem Schlauch gestanden

  9. #9
    halofei
    Gast

    Standard

    Musste feststellen, dass die Bedingung für Events heute/zukünftig nicht bei Eventwiederholungen greift, die noch in der Zukunft liegen.

  10. #10
    Contao-Fan Avatar von gregor
    Registriert seit
    20.06.2009.
    Ort
    Frankfurt am Main
    Beiträge
    553

    Standard

    Hallo,

    der Beitrag ist zwar schon etwas älter, aber die beschriebene Vorgehensweise funktioniert bei mir mit Contao 3.2.16 bestens. Jedoch möchte ich nur Events aus einem bestimmten Kalender im Selectfeld auflisten.

    Mit folgendem Syntax, mit dem ich nur Events aus dem Kalender ID 2 auflisten möchte, kommt es beim Aufrufen des Formular im FE eine Fehlermeldung, was sicherlich durch meine laien- und fehlerhafte Abfrage verursacht wird.

    Code:
    ((tl_calendar.2=tl_calendar_events.startTime='') OR (tl_calendar.2=tl_calendar_events.startTime>=UNIX_TIMESTAMP())) && (published='1')
    Wie kann ich hier die Kalender ID korrekt einbinden, so das nur Events aus diesem Kalender aufgelistet werden?

    Vielen Dank für Tipps und Hinweise.

    Gregor

  11. #11
    Contao-Nutzer
    Registriert seit
    06.10.2009.
    Beiträge
    161

    Standard

    Mein Tip wäre:
    Code:
    ((tl_calendar_events.startTime=='') OR (tl_calendar_events.startTime>=UNIX_TIMESTAMP())) && (published='1') && (tl_calendar_events.pid=='2')

  12. #12
    Contao-Fan Avatar von gregor
    Registriert seit
    20.06.2009.
    Ort
    Frankfurt am Main
    Beiträge
    553

    Standard

    Hallo amimoto,

    vielen Dank für Deine Bemühungen.
    Aber - sorry, klappt leider nicht, es kommt eine Fehlermeldung bei der Ausgabe im FE.

    Aber mit diesem klappt es nun bei mir:
    Code:
    ((tl_calendar_events.pid=2) AND ((tl_calendar_events.startTime='') OR (tl_calendar_events.startTime>=UNIX_TIMESTAMP()))) && (published='1')
    LG
    Gregor

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Lesezeichen

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •