@GaMbIt_: bitte poste doch deine Module in einem eigenen thread, den hier schießt das Modul IMO etwas über das Ziel hinaus sowie am Ziel vorbei.
Contenido verwendet als DB-Layer die nun schon etwas in die Jahre gekommene
PHPLIB.
Diese Lib findet man im Verzeichnis /conlib.
In der Datei prepend.php werden benötigte Klassen der Lib eingebunden und in der Datei local.php werden diese Klassen dann soweit notwendig überschrieben.
Dort wird auch die Klasse DB_Contenido, welche die Klasse DB_Sql erweitert, eingeführt.
Diese Klasse, bzw. eine Instanz davon, wird in Contenido durchgängig als Object in der Variablen $db geführt.
Diese Variable/Instanz steht dir grundsätzlich in deinen Modulkontext automatisch zur Verfügung. Trotzdem sollte man prüfen, ob diese Instanz vorhanden ist und gegebenenfalls neu Erzeugen.
Benötigt man mehrer Instanzen der DB, z.B. für weitere SQL-Abfragen in Ergebnisschleifen der letzten Abfrage, so wird das allgemein durch Anhängen einer Zahl gemacht.
Nun kann man die Klassenfunktionen zum Abfragen bzw. Schreiben der DB nutzen.
Die Contenido eigenen Tabellennamen werden, wie von GaMbIt_ schon richtig gesagt, im $cfg-Array unter 'tab' vorgehalten. Diese sollte man im eigenen Modul nutzen, da hierbei auf den DB-Prefix geachtet wird, der ja nicht immer con_ sein muss.
Welche das sind kann man in der Datei contenido/includes/cfg_sql.inc.php nachschauen.
Benötigt man eigene Tabellen, so könnte man sie dort im entsprechenden Format eintragen, besser ist es aber, das im Modul zu machen.
Hier mal ein einfaches Beispiel:
Code: Alles auswählen
$sql = "SELECT realname, email FROM ".$cfg["tab"]["phplib_auth_user_md5"]." WHERE user_id = '".$auth->('uid')."'";
$db->query($sql);
while($db->next_record()) {
echo "Angemeldet ist: ".$db->f('realname')."<br />Email: ".$db->f('email');
}
Bin ich im Back- oder Frontend angemeldet, wird aus der Usertabelle der reale Name und die Email des angemeldeten Users
$auth->('uid') ausgelesen und angezeigt.
Auf die einzelnen Feldnamen kann über
$db->f('feldname') zugegriffen werden.
Interessant ist auch noch eine von den Contenidoentwicklern implementierte Funktion
$db->copyResultToArray(), die einem ein Ergebnis-Array der Abfrage liefert, welches man daher am Besten in eine Variable zur weiteren Verarbeitung speichert, Bsp.:
Code: Alles auswählen
$db->query($sql);
while($db->next_record()) {
$meinArray = $db->copyResultToArray();
}
Soweit zur DB-Klasse in Contenido
Gruß aus Franken
Ortwin