Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrere Zeilen einer Datenbank ausgeben mit "return"

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mehrere Zeilen einer Datenbank ausgeben mit "return"

    Hallo,

    ich baue gerade das erste Mal einen Shortcode in Wordpress. PHP ist dabei ein sehr unbekanntes Land für mich, da ich eigentlich Wordpress-Designer bin. Aber ich will es versuchen.

    Ich möchte aus einer externen Datenbank Werte aus einer Tabelle abfragen. Die Tabelle hat nur 3 Spalten: ID, Wert1 und Wert2.

    Ich nutze für die Ausgabe return statt echo, da nur dann die Ausgabe an der Stelle auftaucht, an der ich sie brauche. Bei echo erscheint die Ausgabe ja vor allem Content.

    Ich bekomme es hin, dass Wert1 und Wert2 in Wordpress über den Shortcode ausgegeben werden – allerdings nur aus der 1. Zeile der Tabelle.

    PHP-Code:
    function termine_function(){
    $pdo = new PDO('mysql:host=XXX;dbname=XXX''XXX''XXX');

    $sql "SELECT beschreibung, datum FROM termine";
    foreach (
    $pdo->query($sql) as $row) {
       
    $result =  $row['beschreibung']." ".$row['datum'];
       return 
    $result;
    }
    }

    add_shortcode('termine''termine_function' ); 
    Wenn ich zum test echo statt return nutze, werden auch die Werte aus allen weiteren Zeilen der Tabelle ausgegeben, nur eben am Anfang des Content. Das will ich nicht.

    Frage: Wie schaffe ich es, mit return mehr als nur die erste Zeile der Tabelle auszugeben?

  • #2
    Hallo Herreflix,

    Code hinter return wird grundsätzlich nicht mehr ausgeführt, d.h. deine Funktion wird direkt nach dem ersten Schleifendurchlauf beendet.
    Daher am besten die Ausgabe erst in einer Variable sammeln und dann am Ende nach der Schleife erst zurückgeben:

    PHP-Code:
    foreach ($pdo->query($sql) as $row) {
       
    $result .=  $row['beschreibung']." ".$row['datum'];
    }

    return 
    $result
    Gruß
    sorry, shift-taste kaputt

    Kommentar


    • #3
      Perfekt, das klappt wunderbar. Ich danke dir!

      Kommentar


      • #4
        Man könnte auch yield statt return verwenden.

        http://php.net/manual/de/language.generators.syntax.php

        Kommentar

        Lädt...
        X