{"id":816,"date":"2018-02-11T14:09:20","date_gmt":"2018-02-11T13:09:20","guid":{"rendered":"http:\/\/evileu.de\/zum-schwarzen-pinguin\/?p=816"},"modified":"2018-02-11T14:09:20","modified_gmt":"2018-02-11T13:09:20","slug":"darf-ich-mal-kurz-vorstellen-jdatabase","status":"publish","type":"post","link":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/2018\/02\/11\/darf-ich-mal-kurz-vorstellen-jdatabase\/","title":{"rendered":"Darf ich mal kurz vorstellen: JDatabase"},"content":{"rendered":"<p>Genau wie WordPress bringt auch Joomla ein eigene Logik f\u00fcr Operationen auf der Datenbank mit, nachlesen kann man das en Detail in der Joomla Dokumentation zum Thema JDatabase. Wir wollen uns f\u00fcr den Anfang mal vornehmen, bestimmte Daten aus einer Joomla-Tabelle in einem Artikel auszugeben. Zum Thema Select schauen sie mal <a href=\"https:\/\/docs.joomla.org\/Selecting_data_using_JDatabase\">hier in die JDatabase-Dokumentation<\/a>.<\/p>\n<h2>Die Ausgangstabelle: contents<\/h2>\n<p>Wir holen uns mal zum \u00dcben ein paar Datens\u00e4tze aus der (prefix)_contents. Um das Tabellenpr\u00e4fix nicht fest verdrahten zu m\u00fcssen, benutzt man die eingebaute Variable #, der Select sieht dann so aus:<\/p>\n<p>SELECT * FROM #__content<\/p>\n<h2>Das Datenzugriffsobjekt<\/h2>\n<p>Die folgende Syntax erzeugt ein neues Datenzugriffsobjekt in der Variablen $db:<\/p>\n<p><em>$db = JFactory::getDBO();<\/em><\/p>\n<p>Jetzt bauen wir uns eine Variable f\u00fcr den Select:<br \/>\n<em>$query = &#8222;SELECT * FROM #__content;&#8220;;<\/em><\/p>\n<p>Und weisen diese dem Datenzugriffsobjekt als Query zu<br \/>\n<em>$db-&gt;setQuery($query);<\/em><\/p>\n<p>Ausgef\u00fchrt wird dieses Statement dann mit der Zuweisung<br \/>\n<em>$result = $db-&gt;execute();<\/em><\/p>\n<h2>Erste Information: wieviele Datens\u00e4tze wurden selektiert?<\/h2>\n<p>Das kommt einem doch sehr bekannt vor:<\/p>\n<p><em>$anzahl_zeilen = $db-&gt;getNumRows();<\/em><br \/>\n<em>echo $anzahl_zeilen.&#8220; Zeilen selektiert&lt;br&gt;&#8220;;<\/em><\/p>\n<h2>Zeilenweise Ausgabe bestimmter Spalten des Select-Ergebnisses<\/h2>\n<p>Wir wollen ja nicht die ganze Tabelle #__contents ausgeben, sondern nur ausgew\u00e4hlte Spalten, ich nehme mal f\u00fcrs Beispiel die ID, den Title und den Alias. Daf\u00fcr holen wir uns die ausgew\u00e4hlten Datens\u00e4tze als Liste von Objekten, durch die wir nachher einfach iterieren k\u00f6nnen:<\/p>\n<p>$results = $db-&gt;loadObjectList();<\/p>\n<p>In der Object List stecken die einzelnen Datens\u00e4tze des Select-Ergebnisses, und deren Spalten kann man mit dem <strong>Namen<\/strong> ansprechen. Wir packen das Ganze wie schon oft\u00a0gehabt in eine Foreach-Anweisung, das sieht dann so aus:<\/p>\n<p>foreach ($results as $zeile) :<br \/>\necho $zeile-&gt;<strong>id<\/strong>;<br \/>\necho $zeile-&gt;<strong>title<\/strong>;<br \/>\necho $zeile-&gt;<strong>alias<\/strong>;<br \/>\necho &#8222;&lt;br&gt;&#8220;;<br \/>\nendforeach;<\/p>\n<p>Ihre Ausgabe sollte jetzt so etwas in der Art gleichsehen:<\/p>\n<div id=\"attachment_817\" style=\"width: 378px\" class=\"wp-caption alignnone\"><img aria-describedby=\"caption-attachment-817\" decoding=\"async\" loading=\"lazy\" class=\"size-full wp-image-817\" src=\"http:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/liste_content.jpg\" alt=\"liste_content\" width=\"368\" height=\"460\" srcset=\"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/liste_content.jpg 368w, https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-content\/uploads\/2018\/02\/liste_content-240x300.jpg 240w\" sizes=\"(max-width: 368px) 100vw, 368px\" \/><p id=\"caption-attachment-817\" class=\"wp-caption-text\">liste_content<\/p><\/div>\n<p>Zugegeben, an der Formatierung ist noch einiges optimierbar, aber wir haben das Ergebnis unseres Select jetzt als Liste in den Artikel eingef\u00fcgt. Doch schon mal nicht schlecht f\u00fcr den Anfang, darauf kann man aufbauen.<\/p>\n<h2>Weitere Datenbankoperationen<\/h2>\n<p>Zu den weiteren Operationen wie Insert, Update und Delete gibt es hier tiefersch\u00fcrfende Informationen:<\/p>\n<p class=\"title\"><a href=\"https:\/\/docs.joomla.org\/Inserting,_Updating_and_Removing_data_using_JDatabase\">Inserting, Updating and Removing data using JDatabase<\/a><\/p>\n<h2>Konnektieren zu einer externen Datenbank<\/h2>\n<p>Auch das ist genau wie in WordPress\u00a0 m\u00f6glich, n\u00e4here Informationen findet man hier:<\/p>\n<p><a href=\"https:\/\/docs.joomla.org\/Connecting_to_an_external_database\">Connecting to an external database<\/a><\/p>\n<p>Damit lasse ich es mal gut sein mit den Datenbankoperationen. Jetzt wirds Zeit, mal ein bisschen die Stammdaten von Joomla zu durchforsten, und dazu gibt es einen neuen Beitrag.<\/p>\n<p>&nbsp;<\/p>\n<h2><\/h2>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Genau wie WordPress bringt auch Joomla ein eigene Logik f\u00fcr Operationen auf der Datenbank mit, nachlesen kann man das en Detail in der Joomla Dokumentation zum Thema JDatabase. Wir wollen uns f\u00fcr den Anfang mal vornehmen, bestimmte Daten aus einer Joomla-Tabelle in einem Artikel auszugeben. Zum Thema Select schauen sie mal hier in die JDatabase-Dokumentation. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[28],"tags":[],"_links":{"self":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/816"}],"collection":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/comments?post=816"}],"version-history":[{"count":2,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/816\/revisions"}],"predecessor-version":[{"id":819,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/posts\/816\/revisions\/819"}],"wp:attachment":[{"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/media?parent=816"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/categories?post=816"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/evileu.de\/zum-schwarzen-pinguin\/wp-json\/wp\/v2\/tags?post=816"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}