PHP-Datei in Code einbinden
-
Hallo,
ich habe folgendes Problem: Ich möchte in einem php-Code zu einer php-Datei zwecks Verbindung zur Datenbank (auf dem gleichen Server aber andere Tabelle) per include einbinden. Doch irgendwie bekomme ich das nicht hin und ich habe auch schon nach Lösungen im Internet gesucht, aber leider nichts gefunden, das mir weiter hilft.
Meine Fragen sind daher: Geht das überhaupt? Und wenn ja, wie?
Die Seite, für die ich Hilfe brauche: [Anmelden, um den Link zu sehen]
-
Deine Frage ist sicher besser dort aufgehoben:
https://wordpress.stackexchange.com/da es hier im Forum eher um Anwenungsprobleme mit WordPress geht.
Aber wenn du den Code postest – welcher Code in welchen Code integriert werden soll – kann dir vielleicht auch hier geholfen werden.
Vielleicht hilft auch das schon weiter?
https://wordpress.stackexchange.com/search?q=INCLUDE+PHP+CODEDanke für den Hinweis! Ich wusste nicht, dass es dieses Forum gibt.
Ich habe diesen php-Code im Code-Snippets Plugin:
<?php include('db.php');
echo '<table
style="width: 100%; text-align: left; margin-left: auto; margin-right: auto;"
border="0" cellpadding="1" cellspacing="2">
<tbody>
<tr>
<td colspan="4" rowspan="1"
style="text-align: center;"></td>
</tr>
<tr>
<td
style="text-align: center; font-size: 14px; font-weight: bold; background-color: rgb(234, 226, 218);">Platz</td>
<td
style="text-align: center; font-size: 14px; font-weight: bold; background-color: rgb(234, 226, 218);">Prüfung</td>
<td
style="text-align: center; font-size: 14px; font-weight: bold; background-color: rgb(234, 226, 218);">Veranstaltung</td>
<td
style="text-align: center; font-size: 14px; font-weight: bold; background-color: rgb(234, 226, 218);">Ort</td>
</tr>';
$sql = "SELECT * FROMintererfolge
WHERE pferdename = 'Charm Bracelet' OR pferdename = ' Charm Bracelet' ORDER BY platz ASC";
$result = mysqli_query($con, $sql );
while($data = mysqli_fetch_array($result))
{
echo'
<tr>
<td style="text-align: center; font-size: 12px;">'.$data['platz'].'<br></td>
<td style="text-align: center; font-size: 12px;">'.$data['pruefung'].'<br></td>
<td style="text-align: center; font-size: 12px;">'.$data['veranstaltung'].'</a></td>
<td style="text-align: center; font-size: 12px;">'.$data['ort'].'</td>
</tr>';
}
echo '</tbody>
</table>';
?>Und ich möchte die db.php Datei inkludieren:
<?php
$con = mysqli_connect( 'localhost', 'user', 'passwort', 'tabelle' );
?>Ich weiß allerdings nicht wo ich die speichern kann und wie dann der korrekte Pfad lauten würde. Ich habe schon einiges ausprobiert wie z. B. die Tabelle in die WordPress Datenbank kopiert mit geänderten Namen und dann über die wp-config.php Datei mit der Datenbank verbinden. Leider zeigte mir das Plugin Code-Snippets immer wieder Fehlermeldungen.
Vorab, um Missverständnisse zu vermeiden und einer falschen Erwartungshaltung (oder sogar Anspruchsdenken) vorzubeugen: OpenSource bedeutet, dass du eine Software kostenlos zur Verfügung gestellt bekommst, dir den Quellcode anschauen und nach Belieben verändern kannst. Bei Anwendungsproblemen bieten wir hier außerdem Hilfe zur Selbsthilfe an und teilen unsere Erfahrung mit anderen Anwendern/-innen. OpensSource bedeutet aber nicht, dass jemand auf Zuruf etwas kostenlos für dich programmiert. Auf WordPress Stackexchange gelten die gleichen Regeln und dir wird nur geholfen, wenn du mit einer bestimmten Funktion nicht zurecht kommst und ein Verständnisproblem hast.
Um ein weiteres Missverständnis zu vermeiden: niemand will dir hier irgendetwas „unterstellen“. Ich weise nur darauf hin, weil wir gelegentlich Nutzer im Forum haben, die eine völlig falsche Vorstellung haben und erwarten, dass hier „Mitarbeiter einer Firme WordPress“ irgendwelche (unbezahlten) Leistungen schulden.Jetzt aber endlich zu deiner Frage, die ich in zwei Teile aufteilen möchte:
1. Ich möchte einen php-Code auf meinen Webseiten einbinden.
Dazu kannst du einen eigenen Shortcode erstellen. Shortcodes sind in eckige Klammern gesetzt Namen für Makros, die bei der Ausgabe einer Seite oder eines Beitrags gerendert und entsprechend einer PHP-Funktion, die dahinter steckt, ausgeben. Hier ein Beispiel: Nehmen wir an, du hast eine PHP-Funktion, die „Hallo Welt!“ ausgeben soll:
function say_hello() {
echo "Hello world!";
}Nun möchtest du einen Shortcode
[sayhello]
erstellen, der diese Funktion aufruft und im Text der Seite oder des Beitrags ausgibt. Dazu verwendest du die WordPress-Funktionadd-shortcode()
:add_shortcode( 'sayhello', 'say_hello' );
Das erste Argument der Funktion legt den Namen des Shortcodes fest, hier
[sayhello]
. Das zweite Argument gibt an, welche Funktion bei Aufruf des Shortcodes ausgeführt werden soll, hiersay_hello()
.Nun kannst du in beliebigen Seiten und Beiträgen den Shortcode
[sayhello]
einfügen, der im Frontend alsHello world!
ausgegeben wird. Allerdings gibt es noch einen kleinen Haken: das PHP-Sprachkonstruktecho
gibt den Text unmittelbar aus, also noch bevor der restliche Text erscheint. Damit die ZeichenketteHello world!
richtig an den Shortcode übergeben wird, müssen wir die Zeile inreturn "Hello world!"
ändern. Hier nochmal der komplette Code:function say_hello() {
return "Hello world!";
}
add_shortcode( 'sayhello', 'say_hello' );Steht die Funktion
say_hello()
in einer anderen PHP-Datei, kannst du diese z.B. in derfunctions.php
eines Child-Themes oder innerhalb deines Plugins mitrequire_once()
einbinden. In einem Plugin könnte das z.B. so aussehen:define( 'MY_PLUGIN_PATH', plugin_dir_path( __FILE__ ) );
require_once( MY_PLUGIN_PATH . 'unterverzeichnis/datei.php' );Wenn du in Templates die Funktion direkt ausführen möchtest, kannst du sie auch ohne den Shortcode verwenden:
<?php echo say_hello(); ?>
2. Ich möchte Daten aus der WordPress-Datenbank abrufen, die in einer anderen Tabelle stehen
Aus Sicherheitsgründen sollten direkte Aufrufe der MySQL-Datenbank nach Möglichkeit vermieden werden (vgl. Database Queries). Statt dessen bietet WordPress ein PHP-Objekt
WPDB
, mit dem du SQL-Befehle ausführen kannst – z.B. (sinngemäß passend zu deinem Beispiel):global $wpdb;
$results = $wpdb->get_results( "SELECT * FROM intererfolge WHERE pferdename = 'Charm Bracelet' OR pferdename = ' Charm Bracelet' ORDER BY platz ASC", OBJECT );Ansonsten kannst du den von dir bereits verwendeten Code mit der Änderung nutzen, dass du statt der direkten Ausgabe per
echo
HTML und Anfragergebnisse in einer Variablen speicherst und den Inhalt dieser Variable per return an die Shortcode-API zurückgibst. Also sowas wie …<?php
$html = '';
$html .= '<table
style="width: 100%; text-align: left; …>' …;
$html .= '</tbody></table>';
return $html;
?>Ich hoffe, das gibt dir einen Überblick über die Vorgehensweise.
Es kann effizienter sein, einen Freelancer einzubinden, als sich selbst den Kopf über Code zu zerbrechen, der dann unter Umständen auch noch Sicherheitslücken enthält. Ein Jobportal findest du z.B. auf https://jobs.wordpress.net/. (Hier im Forum sind Jobangebite jeder Art ausdrücklich unerwünscht.)
Ich würde gerade bei Verwendung von Dateien in der individuellen Programmierung empfehlen das nicht über Code Snippets zu machen sondern es gleich als eigenes Plugin oder Child-Theme anzulegen. Code Snippets ist eher für kleinere Dinge gedacht die in wenigen Zeilen erledigt sind, nicht um Dateien mit einzubinden. Das Plugin-Handbuch für Entwickler findest Du hier: https://developer.wordpress.org/plugins/
- Du musst angemeldet sein, um auf dieses Thema zu antworten.