Linuchs: Wordpress: Wie Datenbank einbinden?

Moin,

ich gebe ein Projekt ab an einen Web-Designer, der zwei DB-Tabellen des alten Projekts nutzen soll.

Leider hat der von PHP keine Ahnung und ich nicht von Wordpress (Strato)

Habe Zugang zum neuen Projekt und die DB-Tabellen per phpmyadmin importiert.

Habe auf einer Testseite diesen Code eingegeben:

<h1>Test Kalle</h1>
  <? echo "<p>Jemand da?</p>"; ?>
  <h3>die ersten fünf Mitglieder:</h3>
<?
SELECT   bezeichnung
FROM     fsd_adressen
ORDER BY bezeichnung
LIMIT 0,5;
?>
  <br>
  <h3>die ersten fünf Lied-Titel:</h3>
<?
SELECT   titel
FROM     shanty_titel
ORDER BY titel
LIMIT    0,5;
?>
  <br>

So sieht es aus:

Wieso wird echo so verkrüppelt wiedergegeben?

Und wie wird Kontakt mit der Datenbank aufgenommen?

Gruß, Linuchs

  1. Hi there,

    ich gebe ein Projekt ab an einen Web-Designer, der zwei DB-Tabellen des alten Projekts nutzen soll.

    Web-Designer? Das ist schon einmal schlecht.

    Leider hat der von PHP keine Ahnung und ich nicht von Wordpress (Strato)

    Webdesigner halt.

    Habe Zugang zum neuen Projekt und die DB-Tabellen per phpmyadmin importiert.

    Was soll das bringen? Oder, anders rum, was soll Wordpress mit zwei Tabellen anfangen? Wordpress erwartet ein bestimmte Datenbankstruktur mit klar definierten Tabellen, da passen Deine Tabellen nicht hinein. Wenn das überhaupt Sinn machen soll, dann solltest Du Deine Tabellen in ein Format exportieren, daß ein Wordpress-Plugin dann importieren kann. CSV etwa (was aber Probleme mit dem Zeichensatz machen kann). Ausserdem erwartet ein etwaiges Wordpress-Plugin die entsprechenden Felder in einer ebenso entsprechenden Reihenfolge. Das ganze ist zwar keine Raketenwissenschaft aber eben auch nicht so trivial, in dem man einfach ein paar Tabellen in phpmyadmin "importiert".

    Habe auf einer Testseite diesen Code eingegeben:

    <h1>Test Kalle</h1>
      <? echo "<p>Jemand da?</p>"; ?>
    

    Liegt wahrscheinlich an den short-open-tags, daß das so komisch daherkommt. Probier's mit <?php anstelle von <?.

    <?
    SELECT   bezeichnung
    FROM     fsd_adressen
    ORDER BY bezeichnung
    LIMIT 0,5;
    ?>
    

    was soll das werden? PHP versteht kein SQL. Du mußt zuerst eine Datenbank öffnen und dann mit der richtigen PHP-Funktion (in dem Fall mysqli_query) den Abfragestring an die Datenbank schicken.

    Und wie wird Kontakt mit der Datenbank aufgenommen?

    Das kann man da nachlesen. Mit Wordpress würde ich das aber nicht auf diese Art und Weise versuchen. Da bist Du auf dem völlig falschen Dampfer. Wordpress stellt für solche Probleme eine eigene REST-Api zur Verfügung. Das geht dann aber langsam in Richtung Raketenwissenschaft.

    Vielleicht brauchst Du das ja überhaupt nicht. Was sollen Deine Tabellen bzw. die darin enthaltenen Daten in Wordpress eigentlich machen...?

    1. Moin,

      <?php anstelle von <?.

      Hat nichts geändert.

      PHP versteht kein SQL.

      Ist mir klar. War eine Vorbereitung, weil ich hoffte, dass jemand die Verbindung zur Datenbank kennt.

      Was sollen Deine Tabellen bzw. die darin enthaltenen Daten in Wordpress eigentlich machen...?

      Bei Formular-Einträgen werden (alte Version) Werte aus der DB vorgeschlagen, wenn man Zeichen eingibt.

      Gruß, Linuchs

      1. Hi,

        <?php anstelle von <?.

        Hat nichts geändert.

        kann der Server überhaupt php?

        Wenn ja, hat die Datei eine Endung, die den PHP-Interpreter zur Bearbeitung animiert? (meist php, oder auch mal phtml)

        Ist mir klar. War eine Vorbereitung, weil ich hoffte, dass jemand die Verbindung zur Datenbank kennt.

        Das hängt u.a. von der DB ab (Postgres, Oracle, Mysql, ...).

        Dann braucht's einen connect (z.B. mysqli_connect), der die URL, den DB-Namen und die Zugangsdaten (und ggf. noch mehr) braucht.

        Da Du keine Details verraten hast, kann Dir auch keiner genaueres sagen.

        cu,
        Andreas a/k/a MudGuard

        1. Hi,

          <?php anstelle von <?.

          Hat nichts geändert.

          kann der Server überhaupt php?

          Und sind short-Tags in der ini aktiviert?

          oder etwas wie

          <?=date('Y-m-d');?>
          
        2. Hallo MudGuard,

          kann der Server überhaupt php?

          Wenn Wordpress drauf ist, muss er das wohl.

          Wenn ja, hat die Datei eine Endung, die den PHP-Interpreter zur Bearbeitung animiert?

          Da Linuchs seit drölfzig Jahren PHP macht (und seit Anbeginn die gleiche PHP Version nutzt, wenn man den X-Powered-by Header von remso.eu betrachtet), nehme ich mal an, dass man ihm DAS nicht sagen muss.

          Die Short Tags sind zwischenzeitlich missbilligt gewesen, aber scheinbar konnte sich das nicht durchsetzen. Das Bekloppte ist: php.net listet "On" als Defaultwert, aber sowohl die mitgelieferte development-ini wie auch die produktion-ini setzen sie auf "Off". Wer short tags braucht, muss sie explizit einschalten. Aber man sollte es nicht tun, sondern immer <?php schreiben. Soviel Zeit muss sein.

          <?= ?> funktioniert übrigens unabhängig von dem short_open_tag Schalter immer.

          Auf dem Wordpress-Server sind die Short Tags aber wohl definitiv aus. PHP wird nicht aktiv und es wird ein <? Element mit einem leeren echo-Attribut an den Browser geschickt. Das > zum < fehlt, was vom Browser „korrigiert“ wird, wenn er das <p> antrifft. Hinter dem </p> findet der Browser dann ein "; ?> und gibt es beinahe unverändert aus, was das einzige ist, das mich irritiert. Denn im Screenshot steht „ statt " - wurde da mit einem Programm editiert, das typographische Anführungszeichen erzeugt?!

          SQL Verbindung herstellen - wieso weißt Du nicht, wie das geht, Linuchs? Das machst Du doch auch auf remso.eu. Entweder mysqli_connect, oder new mysqli(), oder new PDO(). Die Parameterwerte musst Du natürlich passend angeben, die sind installationsabhängig. Und dann kannst Du wie gewohnt DB-Zugriffe machen.

          FALLS Du Dir vorstellst, als Wordpress-Plugin zu laufen und Du auf die DB-Schicht von Wordpress zugreifen willst, hm, ja, dann musst Du wohl die Wordpress-Doku studieren.

          Rolf

          --
          sumpsi - posui - obstruxi
        3. per Mail bekam ich diese Beschreibung vom WP-Designer, ein für mich vollkommen unbekanntes Konzept. Bisher habe ich Code per Hand (Editor) eingegeben, nun soll ich eine Black Box handhaben:

          hat die Datei eine Endung, die den PHP-Interpreter zur Bearbeitung animiert?

          Dateinamen habe ich nicht vergeben, da kann man nur Formulare ausfüllen???

          Oben auf der Browser-Seite lese ich http://shantyfsd.de/wp-admin/post.php?post=643&action=edit

          Ich glaube, ich gebe auf. Wegen der einmaligen Datenübergabe scheint es sich nicht zu lohnen, WP zu lernen.

          Gruß, Linuchs

      2. Hi there,

        Was sollen Deine Tabellen bzw. die darin enthaltenen Daten in Wordpress eigentlich machen...?

        Bei Formular-Einträgen werden (alte Version) Werte aus der DB vorgeschlagen, wenn man Zeichen eingibt.

        Da gibts meine Erachtens nur einen sinnvollen Weg - ein entsprechendes Wordpress-Plugin mit dieser Funktionalität suchen, dann schauen, auf welche Tabelle das zugreift bzw. in der Plugin-Konfiguration nach möglichen darauf bezugnehmenden Einstellungen suchen und dann nach eine Methode finden, die entsprechenden Einträge zu importieren. Also wie vorhin beschrieben: die Tabellendaten in ein Format exportieren, das in Wordpress eingelesen werden kann, die Daten wenn nötig (und das ist idR immer nötig) entsprechend aufbereiten und dann einlesen. Sichern vorher nicht vergessen.

        Leider kenn ich mich bei Wordpress nicht so gut aus daß ich Dir sagen könnte, welches Plugin für Dein Vorhaben geeignet ist oder ob so etwas überhaupt existiert. Nachbau wäre natürlich möglich, aber dann entsteht ein gewisser Aufwand und das hängt dann vermutlich auch von Deinem Budget ab, ob Du so etwas überhaupt willst...

    2. @@klawischnigg

      <h1>Test Kalle</h1>
        <? echo "<p>Jemand da?</p>"; ?>
      

      Liegt wahrscheinlich an den short-open-tags, daß das so komisch daherkommt. Probier's mit <?php anstelle von <?.

      Oder mit <?= anstelle von <? echo.

      IIRC sind die short-open-tags <? missbilligt, nicht aber <?=.

      Kwakoni Yiquan

      --
      Ad astra per aspera