Ergebnis 1 bis 17 von 17

Thema: Templatemodifikation Ausgabe eines bestimmten Datenbankfeldes

  1. #1
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard Templatemodifikation Ausgabe eines bestimmten Datenbankfeldes

    Hallo und Hilfe ,

    der Tangokalender von Norbayern soll/mus auf C5 angehoben werden, doch die alten modifizierten Templates passen (natürlich) nicht mehr.

    der folgende Code

    PHP-Code:
    Verantwortlich im Sinne des Pressegesetzes ist der <?php $this->import('Database'); $result $this->Database->prepare("SELECT * FROM tl_calendar WHERE id='$this->pid'")->execute(); ?> <?php echo $result->title?>
    hat in Contao 4.13 den Kalendernamen (wegen des Pressegesezes) im Frontend ausgegeben:
    "... ist der Kalender von X"
    Leider funktioniert das was ich mir zusammengebaut habe nicht:
    PHP-Code:
    <?php
    $db 
    = \Contao\System::getContainer()->get('database_connection');
    $result $db->executeQuery("SELECT FROM tl_calenar WHERE id='$this->pid'")->execute();?> <?php echo $result->title?>
    Im Fehlerlog steht u.A. das folgende:
    ... Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'FROM tl_calenar WHERE id='151'' at line 1 at /home/meinesite/public_html/contao/public/vendor/doctrine/dbal/src/Driver/PDO/Connection.php:71)" ....

    Sieht jemand was den Fehler auswirft?

    Gruß dtptiger

  2. #2
    Contao-Fan Avatar von lbableck
    Registriert seit
    10.06.2021.
    Beiträge
    358
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Deine Query ist falsch, sollte wie folgt lauten: SELECT * FROM tl_calendar WHERE ...

  3. #3
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.483
    Partner-ID
    10107

    Standard

    Das brauchst du doch gar nicht. In den Event Templates hast du direkt Zugriff auf den Kalender des Events.
    » sponsor me via GitHub or Revolut

  4. #4
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    Zitat Zitat von lbableck Beitrag anzeigen
    Deine Query ist falsch, sollte wie folgt lauten: SELECT * FROM tl_calendar WHERE ...

  5. #5
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Das brauchst du doch gar nicht. In den Event Templates hast du direkt Zugriff auf den Kalender des Events.
    Hallo Spooky,
    meinst Du so?

    PHP-Code:
    <?php
    $db 
    = \Contao\System::getContainer()->get('database_connection');
    $result $db->executeQuery("SELECT WHERE id='$this->pid'")->execute();?> <?php echo $result->title?>
    Macht noch immer fehler das die Datenbank das verweigert, so wie ich verstehe:
    /home/website/public_html/contao/public/vendor/doctrine/dbal/src/Driver/API/MySQL/ExceptionConverter.php:86)\n[previous exception] [object] (Doctrine\\DBAL\\Driver\\PDO\\Exception(code: 1064): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id='151'' at line 1 at /home/website/public_html/contao/public/vendor/doctrine/dbal/src/Driver/PDO/Exception.php:24)\n[previous exception] [object] (PDOException(code: 42000): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'WHERE id='151'' at line 1 at /home/website/public_html/contao/public/vendor/doctrine/dbal/src/Driver/PDO/Connection.php:71)"} {"request_uri":"https://medienweberei.de/Die%20Milonga/open-air-milonga-am-carraraplatz.html?day=20250911&times=1757610000%2C 1757620800","request_method":"GET"}
    [2025-09-11T14:16:32.773111+02:00] messenger.INFO: Stopping worker. {"transport_names":["contao_prio_high"]} {"request_uri":"https://website.de/Die%20Milonga/open-air-milonga-am-carraraplatz.html?day=20250911&times=1757610000%2C 1757620800","request_method":"GET"}

  6. #6
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    Weil meine Codingfähigkeiten sind begrenzt, deswegen hatte mir diesen Code als Vorlage genommen, ich hoffte der ist eine Hilfe:

    Code:
    $db = \Contao\System::getContainer()->get('database_connection');
    $result = $db->executeQuery("SELECT firstname FROM tl_member WHERE username = '$mitglied'")->fetch();
    print_r ($result);
    https://community.contao.org/de/show...f-Detail-Seite

  7. #7
    Wandelndes Contao-Lexikon Avatar von zonky
    Registriert seit
    19.03.2010.
    Ort
    Berlin, Rdf
    Beiträge
    10.257
    User beschenken
    Wunschliste

    Standard

    Zitat Zitat von dtptiger Beitrag anzeigen
    PHP-Code:
    <?php
    $db 
    = \Contao\System::getContainer()->get('database_connection');
    $result $db->executeQuery("SELECT WHERE id='$this->pid'")->execute();?> <?php echo $result->title?>
    Tipp: teste Deine Queries per phpMyAdmin o. ä.

    z. B.
    "SELECT WHERE id=42"

    dann siehst Du sicher anhand der Fehlermeldungen was falsch ist

  8. #8
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.483
    Partner-ID
    10107

    Standard

    Zitat Zitat von dtptiger Beitrag anzeigen
    Hallo Spooky,
    meinst Du so?

    PHP-Code:
    <?php
    $db 
    = \Contao\System::getContainer()->get('database_connection');
    $result $db->executeQuery("SELECT WHERE id='$this->pid'")->execute();?> <?php echo $result->title?>
    Macht noch immer fehler das die Datenbank das verweigert, so wie ich verstehe:
    Nein - das brauchst du wie gesagt nicht. Lass dir die Template Variablen ausgeben, da solltest du das Model des Kalenders des Events sehen (ich glaube einfach unter "calendar").
    » sponsor me via GitHub or Revolut

  9. #9
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    ... ich will was in das Template reinbringen, was nicht als als Variable in diesem Template vorgesehen ist.
    Komme erst nächste Woche dazu weiterzumachen. Wenn ich ne Lösung gefunde habe poste ich den Code.

    Gruß
    dtptiger

  10. #10
    Contao-Urgestein
    Registriert seit
    24.02.2021.
    Beiträge
    1.646
    Partner-ID
    11715
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Ohne es jemals gemacht zu haben, solltest du womöglich auf das "Event" Zugriff haben.
    Das heißt, dass auch alle individuellen Felder verfügbar sein könnten (Konjunktiv, da es meist so ist )

  11. #11
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.483
    Partner-ID
    10107

    Standard

    Zitat Zitat von dtptiger Beitrag anzeigen
    ... ich will was in das Template reinbringen, was nicht als als Variable in diesem Template vorgesehen ist.
    Laut deinem Code versuchst du an den Titel des Kalenders eines Events zu kommen - vermutlich in einem Event Template. Dazu brauchst du die Datenbankabfrage nicht.
    » sponsor me via GitHub or Revolut

  12. #12
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    Laut deinem Code versuchst du an den Titel des Kalenders eines Events zu kommen - vermutlich in einem Event Template. Dazu brauchst du die Datenbankabfrage nicht.

    Ja! Das stimmt

    PHP-Code:
     <?php echo $this->dumpTemplateVars() ?>
    Da gibt es title "title" zweimal

    Ganz am Anfang:

    HTML-Code:
    array:97 [
      "id" => 9450
      "pid" => 151
      "tstamp" => 1757531010
      "title" => "Open-Air-Milonga am Carraraplatz"
      "alias" => "open-air-milonga-am-carraraplatz"
      "author" => 135
      "addTime" => true
      "startTime" => 1754586000
      "startDate" => 1754517600
    und dann etwas weiter unten:

    HTML-Code:
    "locationLabel" => "Ort"
      "calendar" => Contao\CalendarModel {#1469
        #arrData: array:19 [
          "id" => 151
          "tstamp" => 1714034803
          "title" => "Kalender von Tango in Ingolstadt e.V."
          "jumpTo" => 45
          "allowComments" => true
    Dummerweise werden bei der Abfrage für den V. i. S. d. P. nicht der 2richtige" "title" genommen

    Hm, könnten tatsächlich aus vor Ewigkeiten deinst generierte individuelle Datenfelder sein ... oh shit,
    da muss ich nachdenken ...
    Und die sind seit Jahrzenten in Verwendung, das zu ändern kann Chaos stiften

    Danke für euer Mitdenken!

    Gruß dtptiger

  13. #13
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.483
    Partner-ID
    10107

    Standard

    Zitat Zitat von dtptiger Beitrag anzeigen
    und dann etwas weiter unten:

    Code:
    "locationLabel" => "Ort"
      "calendar" => Contao\CalendarModel {#1469
        #arrData: array:19 [
          "id" => 151
          "tstamp" => 1714034803
          "title" => "Kalender von Tango in Ingolstadt e.V."
          "jumpTo" => 45
          "allowComments" => true
    Genau, das ist das was du brauchst.
    » sponsor me via GitHub or Revolut

  14. #14
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    Zitat Zitat von Spooky Beitrag anzeigen
    Genau, das ist das was du brauchst.
    Ja, das ist im code, doch es gibt in dem Code des templates das Feld "title" zweimal
    Jetzt hätt ich gern einen Select auf das zweites Vorkommen von "title"

    Bildschirmfoto 2025-09-12 um 00.08.58.png
    Bildschirmfoto 2025-09-12 um 00.08.15.png

    Bei der Abfrage
    PHP-Code:
        <?php if ($this->title): ?> Der verantwortliche Kalender <?php echo $this->title?> <p/> <?php endif; ?>
    wird der erste "title" genommen, das Feld aus Tabelle "tl_calendar_events" "title" => "Open-Air-Milonga am Carraraplatz"

    Das Feld "title" welches ich verwenden muss, kommt aus der Tabelle "tl_calendar",
    HTML-Code:
    "title" => "Kalender von Tango in Ingolstadt e.V."
    Gibt es eine Abfragemöglichkeit um nur den "title" von "calendar" => Contao\CalendarModel zu Verwenden?


    Gruß
    dtptiger

  15. #15
    Contao-Fan Avatar von lbableck
    Registriert seit
    10.06.2021.
    Beiträge
    358
    Contao-Projekt unterstützen

    Support Contao

    Standard

    $this->calendar->title sollte doch funktionieren

  16. #16
    Contao-Fan Avatar von dtptiger
    Registriert seit
    20.06.2009.
    Ort
    Nürnberg
    Beiträge
    847

    Standard

    Dankeschön
    PHP-Code:
    <?php echo $this->calendar->title?>
    Hm, das Leben kann ja so einfach sein

  17. #17
    Community-Moderator
    Wandelndes Contao-Lexikon
    Avatar von Spooky
    Registriert seit
    12.04.2012.
    Ort
    Scotland
    Beiträge
    37.483
    Partner-ID
    10107

    Standard

    Zitat Zitat von dtptiger Beitrag anzeigen
    Jetzt hätt ich gern einen Select auf das zweites Vorkommen von "title"
    Du brauchst keinen select - siehe alle vorherigen Posts
    » sponsor me via GitHub or Revolut

Aktive Benutzer

Aktive Benutzer

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

Berechtigungen

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