Ergebnis 1 bis 6 von 6

Thema: Formulardaten aus der Datenbank zur weiteren Verarbeitung abfragen.

  1. #1
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard Formulardaten aus der Datenbank zur weiteren Verarbeitung abfragen.

    Hallo!

    das Formular speichert erfolgreich Eingaben in der Datenbank. Wie bekomme ich diese contaokonform in mein Custom Element geladen? Ich möchte ungern mit unschönen mysql_connect-Methoden etc anfangen.
    Das Ziel ist es, dass in dem einen Custom Element (Funktioniert praktisch nur als Container, könnte es auch als eigene Extension einbinden, ist aber grad nicht wichtig) alle Datenbankdaten als String dieser Tabelle per each/for bearbeiten kann. Grob vorstellbar, dass z.B. jeder Datensatz in einem <div> eingefasst wird und die einzelnen Daten dann als String in einem <img> und <p>-Tag jeweils erscheinen (Werte aus dem Formular).

    Aus der Doku bin ich nicht schlau geworden, falls das da überhaupt auch steht.

    Vielen Dank!

  2. #2
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard

    Habe es jetzt so. Funktioniert, schön ist aber was anderes. Gerade weil ich einige Werte ziehen muss. Wird einiges an Copy&Paste und viel duplizierter (daher kein DRY) Code da ich verschiedene Werte von der DB ziehen muss.

    PHP-Code:
    $elements = \Database::getInstance()
      ->
    prepare('SELECT imgdesc AS imgdesc FROM tl_dbtable)
      ->execute ($this->id);

      while($elements->next()) {
        $arr_imgdesc[] = $elements->imgdesc;
      }

    foreach($arr_imgdesc as $imgdesc) {
      echo $imgdesc;


    Geändert von dness (28.02.2018 um 11:11 Uhr)

  3. #3
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard

    Wie geht das eleganter?

    PHP-Code:
    <?php

    $imgdescs 
    = \Database::getInstance()
      ->
    prepare('SELECT imgdesc AS imgdesc FROM tl_somedatas')
      ->
    execute ($this->id);

    $imgpaths = \Database::getInstance()
      ->
    prepare('SELECT imgpath AS imgpath FROM tl_somedatas')
      ->
    execute ($this->id);

      while(
    $imgdescs->next()) {
        
    $arr_imgdescs[] = $imgdescs->imgdesc;
      }

      while(
    $imgpaths->next()) {
        
    $arr_imgpaths[] = $imgpaths->imgpath;
      }

    echo 
    '<div>';
    foreach(
    $arr_imgdescs as $imgdesc) {
      echo 
    '<p>' $imgdesc '</p>';
    }

    foreach(
    $arr_imgpaths as $imgpath) {
      echo 
    '<img src="' $imgpath '"/>';
    }
    echo 
    '</div>';

    ?>
    Natürlich werden erst alle Texte ausgegeben und danach alle Bilder. Wie kann ich eine foreach-Schleife definieren in der jweils der Text und dann das dazugehörige Bild ausgegeben werden? Optional gerne Verbesserungen zur Komprimierung des Codes vorschlagen (DRY-Code-Approach / Don't Repeat Yourself). Grad ist ja eben alles doppelt.

  4. #4
    Contao-Fan Avatar von Ainschy
    Registriert seit
    24.06.2009.
    Ort
    Wenden
    Beiträge
    796
    Partner-ID
    5666
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    Schau dir mal die Database Klasse von Contao an.

    PHP-Code:
    <?php 
    $arrResult 
    = array();

    $objResult = \Database::getInstance()->prepare('SELECT imgdesc, imgpath FROM tl_somedatas')->execute($this->id); 

    $arrResult $objResult>fetchAllAssoc();
     
    echo 
    '<div>';
     
    foreach(
    $arrResult as $result)
     {
      echo 
    '<p>' $result['imgdesc'] . '</p>';
      echo 
    '<img src="' $result['imgpath'] . '"/>';
     }
     echo 
    '</div>'

    ?>
    Das Beispiel ist für mehrere Einträge unter einer id, bei nur einem Eintrag brauchst du auch kein foreach etc.

  5. #5
    Contao-Urgestein Avatar von Andreas
    Registriert seit
    19.06.2009.
    Ort
    Mönchengladbach
    Beiträge
    7.703
    User beschenken
    Wunschliste
    Contao-Projekt unterstützen

    Support Contao

    Standard

    PHP-Code:
    $objResult = \Database::getInstance()->prepare('SELECT imgdesc, imgpath FROM tl_somedatas')->execute($this->id); 
    wird zu
    PHP-Code:
    $objResult = \Database::getInstance()->execute('SELECT imgdesc, imgpath FROM tl_somedatas'); 
    Da ist ja kein Fragezeichen im Query, welches mit $this->id ersetzt werden sollte.
    Bitte!
    Vor Anfragen im Forum HTML validieren.
    Codesnippets hier im Froum sauber einrücken. Nur Tabs o. nur Leerzeichen verwenden.

    Vielen Dank an alle Wunschlistenerfüller
    Andreas Burg, Web Solutions

  6. #6
    Contao-Nutzer
    Registriert seit
    02.08.2017.
    Beiträge
    39

    Standard

    Super, danke euch! Funktioniert

    Zitat Zitat von Ainschy Beitrag anzeigen
    Schau dir mal die Database Klasse von Contao an.

    PHP-Code:
    ...

    $arrResult $objResult>fetchAllAssoc();
     
    ... 
    Da fehlt nur noch ein - also ->

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
  •