Hallo,
ich nutze eigenen PHP-Code, den ich in Artikeln inkludiere. Mit welchem Befehl stelle ich innerhalb der TL-Syntax eine Verbindung zur Datenbank her, bevor ich dann meine select-Abfragen starte?
Danke! Ricks
Hallo,
ich nutze eigenen PHP-Code, den ich in Artikeln inkludiere. Mit welchem Befehl stelle ich innerhalb der TL-Syntax eine Verbindung zur Datenbank her, bevor ich dann meine select-Abfragen starte?
Danke! Ricks
Wird php-code in Artikeln überhaupt ausgeführt?? ich meine nicht..
ansonsten:
$vebrindung = mysql_connect($host, $user, $pass);
mysql_select_db($verbindung, "Datenbank");
ich würde aber aufpassen!
denn wenn der code nicht ausgeführt wird, dann erscheinen die zugangsdaten im Artikel, der ja öffentlich ist
Du kannst mittels InsertTag ein php-File einbinden.
Das praktische daran ist, du hast dann Zugriff auf die Klassen von TL.
Also eine Abfrage kann dann so aussehen:
PHP-Code:
$objQuery = $this->Database->prepare("SELECT * FROM tbl WHERE id=?")
->limit(1)
->execute(6);
// Ausgabe aller Attribute des Datensatzes mit der ID 6
Contao Core-Entwickler @terminal42 gmbh
Wir sind Contao Premium-Partner!
Für Individuallösungen kannst du uns gerne kontaktieren.
PS: Heute schon getrakked?
Danke, jedoch greife ich auf eine Tabelle zu, die nicht von TL generiert wurde sondern von mir manuell angelegt. Wie müsste dann einfach nur der Verbindungsaufbau zur DB aussehen?
Und was hat es mit dem execute(6); auf sich, bzw. mit dem Attribut ID6, das sich daraus ergibt? Kannst Du einen Codeschnipsel als Beispiel geben?
Danke! Ricks
deine eigene Tabelle trägst du bei toflars beispiel bei tbl ein. Der Execute Parameter wird an der Stelle des Fragezeichens ersetzt.PHP-Code:
$objQuery = $this->Database->prepare("SELECT * FROM tbl WHERE id=?")
->limit(1)
->execute(6);
// Ausgabe aller Attribute des Datensatzes mit der ID 6
Du könntest das in diesem Fall auch einfach händisch in die Abfrage eintragen. Ansonsten ist die Abfrage ja meistens dynamisch dann gehts einfach über execute.
Danke! Ricks
Beispiel :
PHP-Code:
$objQuery = $this->Database->prepare("SELECT * FROM my_table WHERE id=?")
->limit(1)
->execute(6);
/*
Damit wird aus deiner Tabelle der Datensatz mit der id = 6 geladen.
Dann kannst du die Daten weiterverarbeiten
*/
while ($objQuery->next())
{
$myDataArr[0]=$objQuery->firstname;
$myDataArr[1]=$objQuery->lastname;
}
/*
Auf die einzelnen Spalten der Tabelle greifst du über die Spaltennamen zu. firstname ist in meinem Beispiel also eine Spalte von der Tabelle my_table
Du kannst die Daten natürlich so speichern/weiterverarbeiten wie du es möchtest.
*/
Danke Sarvo!
Wenn ich eine komplexere Abfrage habe wie "where id < 200 and online = 1 ... etc.", dann kann ich das einfach so in den obigen String einsetzen, oder spricht da etwas dagegen?
Und den * ersetze ich durch die Original-Feldbezeichnungen der Tabelle, die ich auslesen möchte?
Und kann mir vielleicht jemand einen Codeschnipsel posten der zeigt, wie ich einen Wert speichere. Also wie ich z.B. dem Datensatz mit der ID 100 für das Feld 'online' den Wert '1' zuweise?
Viele Fragen, ich weiß, aber wenn man es einmal sieht, wie es korrekt ist, dann kommt man danach zügig weiter.
Danke! Ricks
Sowas?PHP-Code:
$objQuery = $this->Database->prepare("UPDATE mytable SET online=? WHERE id=?")
->execute(1,100);
Contao Core-Entwickler @terminal42 gmbh
Wir sind Contao Premium-Partner!
Für Individuallösungen kannst du uns gerne kontaktieren.
PS: Heute schon getrakked?
Aktive Benutzer in diesem Thema: 2 (Registrierte Benutzer: 0, Gäste: 2)
Lesezeichen