1. Herzlich willkommen bei WPDE.org, dem grössten und ältesten deutschsprachigen Community-Forum rund um das Thema WordPress. Du musst angemeldet oder registriert sein, um Beiträge verfassen zu können.
    Information ausblenden

daten aus nicht wp tabelle einbinden

Dieses Thema im Forum "Konfiguration" wurde erstellt von martinius332, 1. Juli 2016.

  1. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Hallo zusammen!
    Ich plage mich schon viele Tage mit folgendem Problem:

    Da ist eine Tabelle (entweder in der wp Datenbank oder einer anderen Datenbank am selben Server) die 700+ Adressen enthält.
    Nun möchte ich diese Daten auslesen und in meiner Wp Seite ausgeben.

    Dh. ich müsste
    a) diese Seite mit der Datenbank verbinden.
    -> is es wp ist die Verbindung schon da, sonst müsste ich diese Seite (nicht alle wp Seiten!) mit der Db verbinden.
    b) mit der Tabelle und der entsprechenden id des Teilnehmers verbinden
    c) Daten in die Seite einbinden

    Ich bekomme das einfach nicht hin!
    Was wäre der best Ansatz hier?
    -- Plugin für php in Wp installieren?
    -- shortcodes verwenden?
    ??

    Bitte um Hilfe
    DANKE
    Martin
     
  2. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Tabelle in die WordPress Datenbank einbinden und dann:

    $results = $wpdb->get_results( "SELECT * FROM deine_tabelle" );
     
  3. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    wohin mit dem $result....

    Danke.
    Wie kann ich jedoch in eine Seite ganz spezielle Daten aus der Tabelle einfügn?
    In .php mach ich zuerst die Verbindung... sag welche Tabelle und
    z.B. aus der Tabelle - Mustertabelle - den Eintrag mit Id 10 und
    aus diesem Eintrag... schreib mit z.B.
    den Vornamen und den Nachnamen hierhier...
    Also ich hab das so gemacht:
    link um mit der DB bzw. Tabelle zu verbinden, dann
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    Und dann dort wo ich den Eintrag will:
    PHP:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
    ......
    Nicht alle Seiten brauchen die Datenbankverbindung (falls nicht wp) bzw. die Tabellen Verbindung.
    Nur bestimmte Seiten der Webseite.
    Ich müsste also auf individuellen Seiten diese Verbindung herstellen und auf dieser Seite die php codes reinschreiben.

    Und ganau da steig ich aus...
    :???:
     
  4. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Nur ein einzelne Seite mit Tabelle verbinden

    Hallo,
    ich glaube ich muss die Frage anders stellen:

    Wie kann ich eine einzelne Seite in Wp. mit einer bestimmten Tabelle in der Db verbinden?

    Also nicht alle Seiten der Webseite sollten eine Verbindung zu dieser Tabelle herstellen, nur bestimmte Seiten...!
    Geht das?
     
    #4 martinius332, 1. Juli 2016
    Zuletzt bearbeitet: 1. Juli 2016
  5. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Die Lösung habe ich Dir schon gepostet. Auf der Seite auf der Du die Daten ausgeben willst fügst Du meinen Code ein. IN $results hast Du dann alle Ergebnisse und kannst diese ganz normal ausgeben.
     
  6. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Tabelle in die WordPress Datenbank einbinden und dann:

    ...ich gehe davon aus, dass ich diese Zeile in die index.php des Templates einfügen müsste, oder?
     
  7. mensmaximus

    mensmaximus Well-Known Member

    Registriert seit:
    24. Juli 2014
    Beiträge:
    8.857
    Zustimmungen:
    437
    Ich persönlich würde das immer über einen Shortcode lösen der in der functions.php definiert wird. Dann kann man ihn einsetzen wo man will, also auch auf einer einzelnen Seite.
     
  8. Michael_Drauer

    Michael_Drauer Well-Known Member

    Registriert seit:
    14. November 2015
    Beiträge:
    212
    Zustimmungen:
    0
    /**
    * write in RTE [myDB kindOfList='u-list']
    */
    add_shortcode('myDB', function ($attr = '') {
    global $wpdb;
    $list = '';
    $results = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'custom_table');
    switch ($attr['kindOfList']) {
    case 'u-list':
    foreach ($results as $result) {
    $list .= '<li>' . $result->id . '</li>';
    }
    $list = '<ul>' . $list . '</ul>';
    echo $list;
    break;
    case 'o-list':
    foreach ($results as $result) {
    $list .= '<li>' . $result->id . '</li>';
    }
    $list = '<ol>' . $list . '</ol>';
    echo $list;
    break;
    default:
    foreach ($results as $result) {
    $list .= '<li>' . $result->id . '</li>';
    }
    $list = '<ul>' . $list . '</ul>';
    echo $list;
    break;
    }
    });

     
    #8 Michael_Drauer, 2. Juli 2016
    Zuletzt bearbeitet: 2. Juli 2016
  9. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    super DANKE!

    Das klappt spitze! DANKE SEHR!
    ...
    Noch einen Test würde ich gerne machen...

    Wenn ich nur einen Wert, einer Reihe mit der Id 10 ausgeben will - Z.B. die Strasse.. nicht als Liste einfach
    "nackt" den Wert...

    also: um die Tabellen Reihe anzusprechen und das ganze als Shortcode immer wieder verwenden zu können.

    Gehe ich so vor:
    a) Im Ordner des Child themes - Datei: function.php
    nach <?php ... schreibe ich:
    include 'shortcodes.php';
    rein (ich will eine saubere Struktur schaffen)
    in der Datei: shortcodes.php
    <?php
    add_shortcode('strasse', function () {
    global $wpdb;
    $results = $wpdb->get_results('SELECT * FROM meine_tabelle where meine_tabelle.id=10');

    echo $strasse;
    });


    ..->so klappt es nicht
    Ich finde hier nach vielen Googeln nicht die Lösung dazu...
    Bitte um Hilfe! :(



    Wie sähe die Ausgabe aus?
     
  10. Michael_Drauer

    Michael_Drauer Well-Known Member

    Registriert seit:
    14. November 2015
    Beiträge:
    212
    Zustimmungen:
    0
    Eigenlich war das falsch das deckt alle deine Anforderungen ab

    /**
    * write in RTE [myDB kindoflist='u-list' searchfield='name' searchstring='Hans Müller']
    */
    add_shortcode( 'myDB', function ( $attr = '' ) {
    $list = '';
    $where = '';
    // database request
    $search_field = ( $attr['searchfield'] ? $attr['searchfield'] : '' );
    $search_string = ( $attr['searchstring'] ? $attr['searchstring'] : '' );

    // database configuration
    $db_user = 'root';
    $db_password = '';
    $db_name = 'dbname';
    $db_host = 'localhost';
    if ( is_numeric( $search_string ) ) {
    $comparison = '=';
    $search_string = (int) $search_string;
    } else {
    $comparison = 'LIKE';
    $search_string = '"%'.$search_string.'%"';
    }
    if($search_string && $search_field) {
    $where = 'WHERE ' . $search_field .' '. $comparison .' '. $search_string;
    }
    $results = ( new wpdb(
    $db_user,
    $db_password,
    $db_name,
    $db_host
    ) )->get_results( 'SELECT * FROM tabellenname ' .$where );

    switch ( $attr['kindoflist'] ) {
    case 'u-list':
    foreach ( $results as $result ) {
    $list .= '<li>' . $result->id . '</li>';
    }
    $list = '<ul>' . $list . '</ul>';
    break;
    case 'o-list':
    foreach ( $results as $result ) {
    $list .= '<li>' . $result->uid . '</li>';
    }
    $list = '<ol>' . $list . '</ol>';
    break;
    case 'no-list':
    foreach ( $results as $result ) {
    $list .= $result->uid . '<br/>';
    $list .= $result->name . '<br/>';
    $list .= $result->strasse . '<br/>';
    $list .= $result->tabellenfeld . '<br/>'; }
    break;
    default:
    foreach ( $results as $result ) {
    $list .= '<li>' . $result->uid . '</li>';
    }
    $list = '<ul>' . $list . '</ul>';
    break;
    }
    echo $list;
    } );

    btw. ich würde es custom_shortcodes.php nennen. die /wp-includes/shortcodes.php gibt es ja bereits.
     
    #10 Michael_Drauer, 3. Juli 2016
    Zuletzt bearbeitet: 3. Juli 2016
  11. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    shortcode

    DANKE Dir!
    shortcode.php...?

    -> ich habe einen Verweis in der function.php des Child Themes gemacht.
    Dieser Verweis ist ein include der auf die shortcode.php im Child Theme gerichtet ist.
    Dort ist noch keine shortcode.php Datei drauf.

    .....
    Stell sich mir allerdings immernoch die Frage:
    Wenn die Tabelle in der Datenbank von Wp. liegt.
    und ich will nur den Vorname und Nachnamen ausgeben .. und das von der Reihe mit der Id 10
    Ausgabe OHNE Tabelle - (die Daten sollen in einem Div sein),
    dann müsste ich wie folgt vorgehen.... DAS verstehe ich noch nicht wirlich....
    also keine Schleife oder so...
    nur diese Daten ausgegben....

    :shock:
     
  12. Michael_Drauer

    Michael_Drauer Well-Known Member

    Registriert seit:
    14. November 2015
    Beiträge:
    212
    Zustimmungen:
    0
    die schleife ist als Sicherheitsstruktur eingebaut da es durchaus sein könnte das bei einer abfrage mehrere Elemente ankommen, sonst hast du im Frontend ein php Fehler ... du könntest hier vllt. noch eine Condition einbauen die nur das erste Element benutzt. Auch deine Frage habe ich eigentlich schon beantwortet.
    [myDB kindOfList='no-list' searchField='uid' searchString='10']
    case 'no-list':
    foreach ( $results as $result ) {
    $list.= $result->vorname . '<br/>';
    $list.= $result->nachname. '<br/>';
    };
    // statt ul wrapst du halt ein div um die Ausgabe
    $list = '<div class="red-border">' .$list.'</div>' ;
    break;
     
    #12 Michael_Drauer, 3. Juli 2016
    Zuletzt bearbeitet: 3. Juli 2016
  13. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Perfekt gelöst!!! DANKE

    Danke, Danke Danke...
    Ich habs nun verstanden.
    ..
    Varianten ohne Ende tun sich auf!
     
  14. martinius332

    martinius332 Member

    Registriert seit:
    14. Juli 2015
    Beiträge:
    10
    Zustimmungen:
    0
    Super ...
    Der Vollständigkeitshalber noch mal gepostet mit den fehlenden, abschließenden "Klammern" unten nach dem Echo....
    Code:
    Entschuldige, aber du musst dich registrieren oder anmelden um den Inhalt sehen zu können!
     
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden