• Hallo zusammen,

    vielleicht könnt Ihr mir helfen.

    Ich habe eine kleine Datenbankanweisung in SQL mit php geschrieben. Nicht besonders. Um das ganze nun auf meiner Startseite auszugeben habe ich mir das Code Widget von Sharaz Shaid installiert und die Datenbank wie folgt eingebunden.

    <?php include("php/connect.php");?>
    // Nun die Datenbankausgabe
    <?php include("php/kalender_startseite.php");

    Wenn ich das ganze im Backend mir anschaue geht das richtig super. Nur wenn ich mich abmelde und die Seite aufrufe kommt gar nichts.

    Das verstehe ich jetzt nicht!

    Weiß Jemand hier abhilfe?

    Gruß
    headloose

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Danke für den Tipp,

    aber da bin ich noch ein bisschen weiße. Das Grundgerüst verstehe ich ja, aber wie sieht dann mein code in der Function aus?

    Gruß
    headloose

  • Danke für den Tipp,

    aber da bin ich noch ein bisschen weiße. Das Grundgerüst verstehe ich ja, aber wie sieht dann mein code in der Function aus?



    der Dateikopf sollte klar sein. Dieser ist wichtig, damit du im Backend unter Plugins dein Plugin findest.

    PHP
    <?php
    /*
    Plugin Name: NAME DES PLUG-INS
    Plugin URI: LINK ZUM PLUG-IN
    Description: BESCHREIBUNG DES PLUG-INS
    Version: 1.0
    Author: IHR NAME
    Author URI: LINK ZU IHRER HOMEPAGE
    License: ...
    */

    dann kommt der Shortcode


    weitere Informationen
    https://codex.wordpress.org/Shortcode_API

    Mit offenen Augen träumen

  • Danke für die Info.

    Weiter Frage:
    // Nun die Datenbankausgabe
    include '..../.../php/kalender_startseite.php';

    muss ich das innerhalb des content setzen? Derzeit habe ich es ausserhalb. Spricht aber nicht an.

    Was ist mit der Funcition. Raus oder rein!

    if ( ! defined( "ABSPATH" ) ) exit; // Exit if accessed directly

    Gruß
    headloose


  • Weiter Frage:
    // Nun die Datenbankausgabe
    include '..../.../php/kalender_startseite.php';

    muss ich das innerhalb des content setzen? Derzeit habe ich es ausserhalb. Spricht aber nicht an.

    In meinem Beispiel steht es innerhalb der Funktion... in der Hoffnung, dass diese Datei nur dann geladen wird, wenn der Shortcode verwendet wird.

    Ich würde vermutlich include-once https://www.php.net/manual/de/function.include-once.php verwenden

    Code
    include-once '/inc/script.php';

    https://www.php.net/manual/de/function.include.php


    Spricht aber nicht an.

    In WordPress Plugins verwendet man in der Regel

    require_once(dirname(__FILE__) . '/includes/kalender_startseite.php');

    dann liegt das "externe" Script im Verzeichnis includes von deinem Plugin


    Was ist mit der Funcition. Raus oder rein!

    if ( ! defined( "ABSPATH" ) ) exit; // Exit if accessed directly

    ^- das ist keine Funktion, sondern es wird nur geprüft, ob das Plugin innerhalb von WordPress läuft.

    Bei einem Aufruf über https://exmaple.org/wpcontent/plugin/dein/plugin.php

    steht die Konstante ABSPATH nicht zur Verfügung, so wird das Script mit exit beendet. Dies kann sinnvoll sein.

    Mit offenen Augen träumen

  • Hallo zusammen,
    Danke für Eure Tipps.

    Ich habe mal einen anderen Weg versucht bin aber auch hier gescheitert. Es geht um folgendes.

    Ich habe eine externe sql-datenbank die ich in mein WP einbinden möchte. Nun habe ich ein wenig gebasteltund ein kleines Plugin geschrieben.
    Dies sieht folgendermaßen aus:

    Auf Lochost läuft das echt gut. Installiere ich das auf dem Host mit den echten Zugangsdaten bei strato macht er keine Verbindung

    Muss ich die Datenbankverbindung aners einbinden?

    Gruß
    headloose

  • Keine!

    var_dump($db);

    zeigt folgendes:

    Code
    bject(mysqli)#10349 (18) { ["affected_rows"]=> int(0) ["client_info"]=> string(6) "5.5.54" ["client_version"]=> int(50554) ["connect_errno"]=> int(0) ["connect_error"]=> NULL ["errno"]=> int(0) ["error"]=> string(0) "" ["error_list"]=> array(0) { } ["field_count"]=> int(0) ["host_info"]=> string(26) "rdbms.strato.de via TCP/IP" ["info"]=> NULL ["insert_id"]=> int(0) ["server_info"]=> string(10) "5.6.42-log" ["server_version"]=> int(50642) ["sqlstate"]=> string(5) "00000" ["protocol_version"]=> int(10) ["thread_id"]=> int(6416142) ["warning_count"]=> int(0) }

    Gruß
    headloose

  • ok die Verbindung ist da!

    Erfolg: es wurde ordnungsgemäß mit MySQL verbunden! Die Datenbank "datenbank" ist toll. Host-Informationen: rdbms.strato.de via TCP/IP

    Das Script läuft bis hier durch:

    Code
    if(!$db || mysqli_num_rows($res)==0) {
                        echo "Derzeit sind keine Veranstaltungen eingestellt!";     
     }

    Das würde bedeuten dass aus der DB nix rauskommt. Dann stimmt was mit dem Select evtl. nix

    Gruß
    headloose

  • Ok, also war die Angabe bei strato macht er keine Verbindung falsch.

    Weiter zur nächsten Zeile, dort steht im o.g. Code [FONT=Courier New]$wpdb[/FONT] wo man eher [FONT=Courier New]$db[/FONT] vermuten würde. Wie das auf localhost angeblich funktionert hat ist schwer nachvollziehbar.

    Generell: Würde das Abfangen von Fehlermeldungen etwas strukturierter empfehlen.

  • Code
    if(!$db || mysqli_num_rows($res)==0) {


    Beispielsweise statt [FONT=Courier New]if (!$db ...[/FONT] an dieser Stelle eher so wie im Beispiel #1 mysqli_connect() im o.g. Link...

    Die weitere Abfrage von [FONT=Courier New]mysqli_num_rows(...)[/FONT] macht an der Stelle eher keinen Sinn, man würde ja eine Datenbank-Abfrage mit mysqli_connect() überhaupt nur erst dann tätigen, wenn die Datenbank erfolgreich verbunden ist.

    Die PHP Beispiele zeigen etwas mehr Struktur eigentlich ganz gut.

    Ergänzung: Generell würde ich einen anderen Ansatz über eine eigene Instanz von [FONT=Courier New]$wpdb[/FONT] wählen und dann die WordPress API Funktionen für alle Datenbank-Operationen verwenden.

    5 Mal editiert, zuletzt von b3317133 (28. Januar 2021 um 13:53)

  • Alles klar! Habe es geändert.

    Jetzt habe ich ein weiteres Problem:

    mit folgendem Link möchte ich die ID in eine Einzelseite übergeben.

    Code
    echo '<td><a href=https://www.xxxxx/kgv/kalenderkarte?kalender_id='.$dsatz['kalender_id'].'></td>

    Das ganze habe ich in eine Template Struktur eingebunden. Die Übergabe der ID geht auch, das sehe ich im Browserfeld. Auch hier geht alles wieder auf localhost.

    Nur beim HOSTING bleibt der Bildschirm weiß.

    Das Template ist so aufgebaut:

    Das komische ist allerdings, wenn ich mein Plugin deaktiviere dann geht es!

    Gruß
    headloose

  • Lt. der og. sonstigen Angaben würde im Template ein [FONT=Courier New]echo do_shortcode( '[kalender_start]' );[/FONT] eingefügt werden und kein Datenbank-Script...

    Wenn der Bildschirm "weiss bleibt", schau in das PHP Error Log des Servers für weitere Angaben oder nutze WP_DEBUG.

  • Ich würde verwenden:

    Mit offenen Augen träumen

  • Was kann eigentlich das Problem sein dass es mit dem Plugin Probleme gibt? Ich bin absolut unbedarft in der Sache und lerne jeden Tag dazu. Muss ich im Plugin etwas einfügen zur WP VErsion

    Gruß
    headloose

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!