{"type":"rich","html":"<div style=\"width: 640; height: 426; font-family: sans-serif,arial,freesans;\" ><div id=\"shared_container_584439873\" class=\"shared_container\"><div id=\"shared_header_584439873\" class=\"shared_header\"><a href=\"https:\/\/voidofxulub.com\/channel\/warzazel\"><img src=\"https:\/\/voidofxulub.com\/photo\/profile\/s\/2\" alt=\"\ud835\udd9c\ud835\udd86\ud835\udd97\ud835\udd9f\ud835\udd86\ud835\udd9f\ud835\udd8a\ud835\udd91\u26e7 (Hubzilla)\" height=\"32\" width=\"32\" loading=\"lazy\" \/><\/a><span><a href=\"https:\/\/voidofxulub.com\/channel\/warzazel\">\ud835\udd9c\ud835\udd86\ud835\udd97\ud835\udd9f\ud835\udd86\ud835\udd9f\ud835\udd8a\ud835\udd91\u26e7 (Hubzilla)<\/a>  wrote the following  <a href=\"https:\/\/voidofxulub.com\/item\/e335db32-b684-4dda-820e-5dabcd76ff4d\">post <\/a><span class=\"autotime\" title=\"2026-02-26T23:14:38+01:00\">Thu, 26 Feb 2026 23:14:38 +0100<\/span><\/span><\/div><div id=\"reshared-content-584439873\" class=\"reshared-content\"><strong>Eintr\u00e4ge pro Kategorie z\u00e4hlen in Hubzilla-Datenbank<\/strong><br \/>Diesmal werden alle vorhandenen Kategorien einzeln ausgez\u00e4hlt und sortiert angezeigt, folgender Code teil muss angepasst werden:<br \/><br \/><pre><code>$params[$ph] = &quot;https:\/\/voidofxulub.com\/cards\/warzazel?cat={$cat}&quot;;<br \/>}<\/code><\/pre><br \/><a class=\"zrl\" href=\"https:\/\/voidofxulub.com\/photos\/warzazel\/image\/a9ece0f4-64c1-4c9a-87f8-9b26610db039\" target=\"_blank\" rel=\"nofollow noopener\"><img class=\"zrl\" style=\"max-width: 100%;\" src=\"https:\/\/voidofxulub.com\/photo\/a9ece0f4-64c1-4c9a-87f8-9b26610db039-2.png\" alt=\"Screenshot der Ausgabe, es werden alle Kategorienamen namentlich angezeigt und dahinter jeweils die gez\u00e4hlten Eintr\u00e4ge\" title=\"Screenshot der Ausgabe, es werden alle Kategorienamen namentlich angezeigt und dahinter jeweils die gez\u00e4hlten Eintr\u00e4ge\" loading=\"eager\" \/><\/a><br \/><br \/><blockquote>\/* --------------------------------------------------------------<br \/>Verbindung zur Datenbank (wie bisher)<br \/>-------------------------------------------------------------- *\/<br \/>$host = 'localhost';<br \/>$dbname = '...';<br \/>$user = '...';<br \/>$password = '...';<br \/><br \/>try {<br \/>$pdo = new PDO(<br \/>&quot;mysql:host=$host;dbname=$dbname;charset=utf8mb4&quot;,<br \/>$user,<br \/>$password,<br \/>[PDO::ATTR_ERRMODE =&gt; PDO::ERRMODE_EXCEPTION]<br \/>);<br \/>} catch (PDOException $e) {<br \/>die('Verbindung fehlgeschlagen: ' . $e-&gt;getMessage());<br \/>}<br \/><br \/>\/* --------------------------------------------------------------<br \/>Welche Kategorien willst du z\u00e4hlen?<br \/>Einfach das Array erweitern, wenn du neue hinzuf\u00fcgst.<br \/>-------------------------------------------------------------- *\/<br \/>$categories = [<br \/>'Belletristik',<br \/>'Holocaust',<br \/>'Krimi',<br \/>'Psychothriller',<br \/>'Thriller'<br \/>];<br \/><br \/>\/* --------------------------------------------------------------<br \/>Platzhalter f\u00fcr das IN\u2011Statement bauen<br \/>-------------------------------------------------------------- *\/<br \/>$placeholders = [];<br \/>$params = [];<br \/><br \/>foreach ($categories as $i =&gt; $cat) {<br \/>$ph = &quot;:cat$i&quot;;<br \/>$placeholders[] = $ph;<br \/>\/\/ Vollst\u00e4ndige URL, wie sie in deiner Tabelle steht<br \/>$params[$ph] = &quot;https:\/\/voidofxulub.com\/cards\/warzazel?cat={$cat}&quot;;<br \/>}<br \/><br \/>\/* --------------------------------------------------------------<br \/>SQL\u2011Abfrage: Gruppiere nach URL und z\u00e4hle pro Gruppe<br \/>-------------------------------------------------------------- <em>\/<br \/>$sql = &quot;<br \/>SELECT url, COUNT(<\/em>) AS anzahl<br \/>FROM term<br \/>WHERE url IN (&quot; . implode(', ', $placeholders) . &quot;)<br \/>GROUP BY url<br \/>&quot;;<br \/><br \/>$stmt = $pdo-&gt;prepare($sql);<br \/><br \/>\/* --------------------------------------------------------------<br \/>Parameter sicher binden<br \/>-------------------------------------------------------------- *\/<br \/>foreach ($params as $ph =&gt; $val) {<br \/>$stmt-&gt;bindValue($ph, $val, PDO::PARAM_STR);<br \/>}<br \/><br \/>\/* --------------------------------------------------------------<br \/>Ausf\u00fchren und Ergebnis verarbeiten<br \/>-------------------------------------------------------------- *\/<br \/>$stmt-&gt;execute();<br \/><br \/>\/* --------------------------------------------------------------<br \/>Ergebnis in ein \u00fcbersichtliches Array packen<br \/>-------------------------------------------------------------- *\/<br \/>$counts = []; \/\/ Schl\u00fcssel = Kategorie, Wert = Anzahl<br \/>while ($row = $stmt-&gt;fetch(PDO::FETCH_ASSOC)) {<br \/>\/\/ URL wieder in die reine Kategorie zur\u00fcck\u00fcbersetzen<br \/>\/\/ (wir gehen davon aus, dass das Muster immer gleich ist)<br \/>preg_match('\/cat=([^&]+)\/', $row['url'], $m);<br \/>$category = $m[1] ?? 'unbekannt';<br \/>$counts[$category] = (int)$row['anzahl'];<br \/>}<br \/><br \/>\/* --------------------------------------------------------------<br \/>Ausgabe <br \/>-------------------------------------------------------------- *\/<br \/>echo &quot;\ud83d\udcca Ergebnisse pro Kategorie:\\n&quot;;<br \/>foreach ($categories as $cat) {<br \/>$anz = $counts[$cat] ?? 0; \/\/ falls keine Eintr\u00e4ge gefunden wurden<br \/>echo &quot;- $cat: $anz Eintr\u00e4ge\\n&quot;;<br \/>}<\/blockquote><br \/>#<a class=\"zrl\" href=\"https:\/\/voidofxulub.com\/search?tag=Hubzilla\" target=\"_blank\" rel=\"nofollow noopener\">Hubzilla<\/a> #<a class=\"zrl\" href=\"https:\/\/voidofxulub.com\/search?tag=Datenbank\" target=\"_blank\" rel=\"nofollow noopener\">Datenbank<\/a> #<a class=\"zrl\" href=\"https:\/\/voidofxulub.com\/search?tag=MySQL\" target=\"_blank\" rel=\"nofollow noopener\">MySQL<\/a><\/div><\/div><br \/><\/div>","width":640,"height":426}