Daten aus der Datenbank auslesen

Begonnen von Barbeytes, 14 Mai 2008, 11:33:00

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

Barbeytes

Hallo,

ich bastel gerade an einem Modul und möchte dieses gern zu PragmaMx kompatibel machen.

Da ich in Sachen Pragma und Datenbank noch nicht so fit bin (eigentlich voll der Änfänger), werde ich es ohne Hilfe nicht sauber hinbekommen. :red:

Ich habe das Script soweit in einer Datenbank laufen, möchte aber die Parameter der config.php von Pragma nutzen.

Zur Zeit rufe ich es so ab:

require_once 'inc/config.inc.php';
require_once 'inc/dbopen.inc.php';


Kann ich mich einfach per

require_once 'config.php';

auf die config.php beziehen oder include ich die mainfile.php und frage von dort mit

($GLOBALS['dbhost'], $GLOBALS['dbuname'], $GLOBALS['dbpass'])

die Parameter ab?

JoergK

Hoi ;)

Sobald ein Modul über den Link "h..p://www.domain.tld/modules.php?name=Modulname" aufgerufen und zur Anzeige gebracht werden kann, sind eigentlich bereits alle Vorraussetzugen erfüllt, um mittels der pragmaMx-API auf die Datenbank zuzugreifen.
Ein zusätzliches Ermitteln der DB-Zugangsdaten und hierauf basierendes Öffnen einer DB-Verbindung im Modul ist nicht mehr notwendig, da die Verbindung bereits beim Aufruf des Moduls existiert.

Wenn Du Dir mal einige Module und/oder Blöcke vom pragmaMx anschaust, wirst Du auf die pragmaMx-"eigenen" Befehle (Funktionen) stossen, um auf die Datenbank zuzugreifen.

Zum Beispiel findest Du im Modul Downloads (index.php) in den Zeilen 54-56 folgendes:

<?php

54        
// Anzahl ALLER Downloads in dieser Kategorie
55        $result sql_query("select count(lid) from " $prefix "_downloads_downloads where cid=" intval($cid) . " AND cid > 0");
56        list($countincat) = sql_fetch_row($result);

?>



pragmaMx: sql_query()
PHP:           mysql_query()

pragmaMx: sql_fetch_row()
PHP:           mysql_fetch_row()

Wie Du siehst, ähneln die Namen der pragmaMx-Funktionen denen von PHP, um so gleich zu erkennen, welche MySQL-Funktion von PHP dahintersteckt, nur dass wir noch einiges an Üperprüfungen und Sicherheit hinzugesetzt haben.

Um Dir einen Überblick zu verschaffen, welche pragmaMx-eigenen DB-Zugriffsfunktionen es gibt, werf mal einen Blick in die Datei /includes/sql_layer.php. ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

Barbeytes

Hallo,

Danke für Deine schnelle Antwort  :thumbup:

Das ganze ist für mich noch recht verwirrend, da ich mich mit der Syntax ansich noch auseinandersetzen muß.

Zu Zeit sieht es bei mir so aus, daß ich die Verbindung zur PmX-Datenbank über eine config.inc.php und dbopen.inc.php herstelle.
Vielleicht kannst Du mir diese Abfrage umstellen damit ich es besser verstehe.

$res_modul    = mysql_query("SELECT * FROM {$config['db']['prefix']}radiosender ORDER BY id asc LIMIT 100");

Tomzp

Hallo Barbeytes,

ich würde sagen so, wenn der Meister mir nicht widerspricht:

$res_modul = sql_query("SELECT * FROM ".$prefix."_radiosender ORDER BY id asc LIMIT 100");

Gruss

Tom


Barbeytes

Hallo Tomzp,

genau so habe ich es auch versucht  :smile: habe nur den Unterstrich bei _radiosender übersehen.

Klasse ! Die Einträge aus der Datenbank werden angezeigt. Nun kann ich weiter basteln.

Herzlichen Dank an Euch beiden!!  :thumbup:


Barbeytes

Ich hätte noch eine Frage.

Neue Situation - In die Datenbank schreiben habe ich in 2 Variationen versucht:

$sql=" INSERT INTO ".$prefix."_radiosender (sendername,url) VALUES ('".$_POST['newname']."', '".$_POST['newurl']."')";

$sql=" INSERT INTO ".$prefix."_radiosender SET
sendername='".$_POST['newname']."',
url='".$_POST['newurl']."')";


Dies gibt zwar keine Fehlermeldung aber funktioniert leider nicht.

Ist der Parameter für (sendername,url) richtig oder übersehe ich etwas anderes?

Webfan

Hallo Barbeytes,
die 2. Variante ist schonmal grundfalsch, SET wird beim Updaten der Tabelle benutzt.
Die erste Variante sollte richtiger sein, bis auf folgendes:
- Die Benutzereingaben sollten nicht ungefiltert ind die DB übernommen werden, die Daten solten zumindest mit der PMX Funktion bearbeitet werden mxAddSlashesForSQL:
$sql="INSERT INTO ".$prefix."_radiosender (sendername,url) VALUES ('".mxAddSlashesForSQL($_POST['newname'])."', '".mxAddSlashesForSQL($_POST['newurl'])."')";
vielleicht auch noch mit strip_tags oder so...?
- dann mußt Du den Query natürlich noch ausführen:
sql_query($sql);
- als letztes muß sendername, url der Tabellenstruktur auch entsprechen, dann solte es eigentlich gehen, ich kann mir vorstellen, daß  hier vl. der Fehler liegt?!

mfg
  :)

Barbeytes

Ja, es funktioniert wunderbar! Dankeschön  :thumbup:

Den Rest konnte ich mir erarbeiten.

Muß ich die Verbindung zu Datenbank wieder schließen oder macht das auch das CMS?

Future

ZitatMuß ich die Verbindung zu Datenbank wieder schließen oder macht das auch das CMS?

Moin,

nein das brauchst du nicht. Das übernimmt ebenfalls das CMS für dich.