Hallo!
Ich möchte eine Datenbankabfrage über meine Wordpressseite realisieren. Damit Du eine Vorstellung bekommen kannst, was ich will, schau bitte auf sieger.rvweser.de.
Die Siegerstatistik möchte ich in mein Blog, blog.rvweser.de integrieren. Mindestens so, das auf einer Seite oder in einem Artikel die letzten x Siege angezeigt werden. Besser mit Suchfunktion.
Die Ausgabe der Tabelle habe ich schon hinbekommen erst mit extra Seitentemplate und dann mit exec-php. In beiden Fällen wird zwar die Tabelle ausgegeben, allerdings werden Umlaute nicht dargestellt und, was viel schlimmer ist, die Plugins Fold-Page-List und Eventcalender finden ihre Variablen nicht mehr. Fehlermeldung :
Notice: Undefined variable: indent in /mnt/web8/52/09/5349109/htdocs/blog/wp-content/plugins/fold_page_list.php on line 380
erscheint mehrfach.
Könntest Du mir einen Tipp geben, was ich ändern muss?
Vielen Dank,
Henner
php-code und externe Datenbank in WP integrieren
-
-
- Gerade eben
- 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)
-
Poste doch mal deinen Code bisher (eventuell DB-Zugangsdaten unkenntlich machen). Ich hab schon ne Idee woran es liegen könnte, aber am Code selbst kann ich dir das wahrscheinlich am besten erklären. ;-)
-
So habe ich das gemacht
PHP
Alles anzeigen<?php /* Template Name: Siege */ ?> <?php get_header(); ?> <div id="left-wrap"> <div id="content"> <div class="page"> <?php error_reporting(E_ALL); define('MYSQL_HOST', '******'); define('MYSQL_USER', '*******'); define('MYSQL_PASS', '******'); define('MYSQL_DATABASE', '*******'); $verbindung = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error()); mysql_select_db(MYSQL_DATABASE) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); // Hier kann man jetzt MySQL-Querys senden $abfrage = "SELECT * FROM sieger ORDER BY nr DESC"; $ergebnis = mysql_query($abfrage); ?> <h2>Siegerliste</h2> <table border="0"> <tr> <td valign="top"><b>Sieg Nr.</b></td> <td valign="top">Jahr</td> <td valign="top"><b>Ort</b></td> <td><b>Bezeichnung</b><br>Renngemeinschaft<br><b>Mannschaft</b><br><b><i>Titel</i></b></td></tr> <?php while($row = mysql_fetch_object($ergebnis)) { echo "<tr><td valign=\"top\"><b>",$row->nr,"</b></td><td valign=\"top\">",$row->jahr,"</td><td valign=\"top\"><b>",$row->ort,"</b></td><td><b>",$row->bezeichnung,"</b><br>",$row->rgm,"<br><b>",$row->mannschaft,"</b><br><b><i>",$row->titel,"</i></b></td></tr>\n"; } ?> <?php mysql_close($verbindung); ?> </table> </div> </div> <?php get_sidebar(); ?> </div> <!-- Close id="left-wrap" --> <?php include (TEMPLATEPATH . '/right-sidebar.php'); ?> <?php get_footer(); ?> -
Die Sache mit den Sonderzeichen könnte daran liegen, dass die Daten in einem anderen Charset (vermutlich iso 8859-1/latin-1) vorliegen als die Codierung deines Blogs (vermutlich UTF-8).
Gruß
Mo -
Die Sache mit den Sonderzeichen könnte daran liegen, dass die Daten in einem anderen Charset (vermutlich iso 8859-1/latin-1) vorliegen als die Codierung deines Blogs (vermutlich UTF-8).
Gruß
MoDann müsste ich die Codierung in der Datenbank ändern? Oder geht das besser für die eine Seite im Blog?
Ich bin blutiger Anfänger. Bisher habe ich bei http://www.schattenbaum.net gelernt und selfphp und dieses Forum. -
Erstmal musst du in jedem Fall den $new_link-Parameter setzen, und deine Verbindungskennung ($verbindung) jeder deiner eigenen Abfragen mitgeben. Sonst zerstörst du die aktive WP-DB-Verbindung.
PHP: mysql_connect - ManualUnd zur Zeichencodierung der DB-Verbindung gibts natürlich auch einen Handbuch-Eintrag:
PHP: mysql_set_charset - Manual
(gilt für PHP >= 5.2.3, Alternative für ältere PHP-Versionen steht dort ebenfalls irgendwo) -
Erstmal musst du in jedem Fall den $new_link-Parameter setzen, und deine Verbindungskennung ($verbindung) jeder deiner eigenen Abfragen mitgeben. Sonst zerstörst du die aktive WP-DB-Verbindung.
PHP: mysql_connect - ManualUnd zur Zeichencodierung der DB-Verbindung gibts natürlich auch einen Handbuch-Eintrag:
PHP: mysql_set_charset - Manual
(gilt für PHP >= 5.2.3, Alternative für ältere PHP-Versionen steht dort ebenfalls irgendwo)Vielen Dank. das probiere ich Heute Abend.
-
Auf keinen Fall solltest du die Zeichenkodierung in der Datenbank ändern. Das kann u.U. zu Datenverlust führen. Außerdem müsstest du andere Applikationen die auf die Daten zugreifen dann auch entsprechend anpassen.
Sinnvoller wäre es hier dann die Zeichenkodierung bei der Ausgabe zu ändern.
Gruß
Mo -
Hallo!
So wie ich das im manual verstanden habe, habe ich den $new-link Wert gesetzt und alle meine Abfragen mit $verbindung gekennzeichnet. Es funktioniert aber nicht. Jetzt bekomme ich folgende Fehlermeldung zusätzlich zu denen am Anfang und die Tabelle ist weg.
Warning: mysql_fetch_object() expects parameter 2 to be string, resource given in /mnt/web8/52/09/5349109/htdocs/blog/wp-content/themes/wp-multiflex-3/siege.php on line 45
Mein Code sieht jetzt so aus:
PHP
Alles anzeigen<?php /* Template Name: Siege */ ?> <?php get_header(); ?> <div id="left-wrap"> <div id="content"> <div class="page"> <?php error_reporting(E_ALL); define('MYSQL_HOST', '******.strato.de'); define('MYSQL_USER', '*******'); define('MYSQL_PASS', '*****'); define('MYSQL_DATABASE', '*****'); $verbindung = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, true) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error()); mysql_select_db(MYSQL_DATABASE, $verbindung) OR die("Konnte Datenbank nicht benutzen, Fehlermeldung: ".mysql_error()); // Hier kann man jetzt MySQL-Querys senden $abfrage = "SELECT * FROM sieger ORDER BY nr DESC"; $ergebnis = mysql_query($abfrage, $verbindung); ?> <h2>Siegerliste</h2> <table border="0"> <tr> <td valign="top"><b>Sieg Nr.</b></td> <td valign="top">Jahr</td> <td valign="top"><b>Ort</b></td> <td><b>Bezeichnung</b><br>Renngemeinschaft<br><b>Mannschaft</b><br><b><i>Titel</i></b></td></tr> <?php while($row = mysql_fetch_object($ergebnis)) { echo "<tr><td valign=\"top\"><b>",$row->nr,"</b></td><td valign=\"top\">",$row->jahr,"</td><td valign=\"top\"><b>",$row->ort,"</b></td><td><b>",$row->bezeichnung,"</b><br>",$row->rgm,"<br><b>",$row->mannschaft,"</b><br><b><i>",$row->titel,"</i></b></td></tr>\n"; } ?> <?php mysql_close($verbindung); ?> </table> </div> </div> <?php get_sidebar(); ?> </div> <!-- Close id="left-wrap" --> <?php include (TEMPLATEPATH . '/right-sidebar.php'); ?> <?php get_footer(); ?> -
Die Sache mit den Sonderzeichen könnte daran liegen, dass die Daten in einem anderen Charset (vermutlich iso 8859-1/latin-1) vorliegen als die Codierung deines Blogs (vermutlich UTF-8).
Gruß
MoVielen dank! Das hat geklapt. Ist utf8 und mit diesem Codeschnipsel
PHP$verbindung = @mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS, true) OR die("Keine Verbindung zur Datenbank. Fehlermeldung:".mysql_error()); mysql_set_charset('utf8',$verbindung);
funktioniert wenigstens das.Leider sind meine sidebars weiterhin voll mit Fehlermeldungen. :confused::confused::confused:
-
Sieht eigentlich recht gut aus, mir fällt auf den 1. Blick kein Fehler auf. Kannst du mal ne URL posten wo man sich das anschauen kann? Die Siege werden aber ausgegeben?
-
Da ist es:
Siegerliste -
Ich glaube fast, da ist alles in Ordnung, nur die Plugins sind etwas schlampig programmiert (nicht initialisierte Variablen). Lass einfach mal die Zeile zum Error-Reporting weg.
-
das ist ja cool. manchmal sollten einem also kleine Fehler egal sein.:-D Was ich nicht weiß, macht mich nicht heiß.
Vielen vielen Dank.
-
Ja so ungefähr. Es sind ja in dem Fall "nur" Notices, un da sie aus den Plugincodes kommen kannst du da ja auch nicht so ohne weiteres eingreifen. Hoff einfach dass die Autoren es bei den nächsten Upgrades ihrer Plugins beheben. Du könntest ihnen ja auch einen Hinweis zukommen lassen. ;-)
Jetzt mitmachen!
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!