n'abend,
class DB {
function connect() {
include ("configs.php");
$connection = mysql_connect($server,$user,$pass) or die(mysql_error());
mysql_select_db($db,$connection) or die(mysql_error());
}
function close() {
//mysql_free_result($ergebnis);
mysql_close($connection);
}
}
aha. du hast ein Datenbank-interface, das aber außer Verbindung öffnen und schließen nichts weiter kann?
$DB = new DB();
Dein Datenbankinterface möchtest du höchstwahrscheinlich als Singleton zur Verfügung stellen. Sprich die Klasse wird nur einmal initialisiert, sprich es wird auch nur eine Verbindung zur Datenbank aufgebaut.
class Board {
var $Subboard = array();
var $Themen = array();
var $Antworten = array();function show() {
$DB->connect();
$DB existiert nicht.
$ergebnis = mysql_query("SELECT subboard,threads,answers FROM board",$connection) or die(mysql_error());
Eingangs sprachst du von OOP. Das hier sieht nicht sehr OOP aus. Wieso stellst du in deiner DB-Klasse nicht eine Methode ausführen() zur Verfügung? und Warum gibt die Methode ausführen() eine Resource-ID zurück, wenn sie doch ein neues Objekt der Klasse DBErgebnis zurückgeben könnte, in welchem du alle nötigen Zugriffe auf die Resultatmenge gekapselt hast...? (siehe unten)
Davon mal abgesehen übergibst du der mysql_query() eine Verbindungsresource $connection - die es an dieser Stelle aber gar nicht gibt. mysql_query weiß da nicht mit welcher Verbindung es arbeiten soll.
while ($res=mysql_fetch_assoc($ergebnis)) {
array_push($this->Subboard,$res[subboard]);
array_push($this->Themen,$res[threads]);
array_push($this->Antworten,$res[answers]);
}
array_push() kann man sich der schönheit halber auch durch $arrayname[] = $neuesElement
einsparen
Nur was bitte habe ihc falsch gemacht, wenn diese Fehlermeldung kommt:
Fatal error: Call to a member function connect() on a non-object in C:\xampp\htdocs\nedias\classes.php on line 23 ??
Ins deutsche Übersetzen würde meist schon helfen. Oder mal in der Zeile nachschauen, was da ggf. los sein könnte.
class DatabaseConnection
{
private $con; // Verbindungsresource
public function __construct( $host, $user, $password, $db)
{
$this->con = mysql_connect( $host, $user, $password );
if( !this->con )
die( $this->mysql_errno() .' - '. mysql_error() );
if( !mysql_select_db( $db ) )
die( $this->mysql_errno($this->con) .' - '. mysql_error($this->con) );
}
public function exec( $sql )
{
$res = mysql_query( $sql, $this->con );
return new DatabaseResultSet( $this, $res );
}
}
class DatabaseResultSet
{
private $db;
private $res;
public function __connect( $db, $resource )
{
$this->db = $db;
$this->res = $resource;
}
public function nextRow()
{
return mysql_fetch_assoc( $this->res );
}
}
// Anwendung:
$db = new Database( 'localhost', 'local', 'horst', 'foo' );
$res = $db->exec( 'SELECT foo FROM bar WHERE baz = 42' );
while( $r = $res->nextRow() )
{
echo $r['foo'];
}
Das ist nur ein Beispiel, wie man das angehen könnte (resp. sehr vereinfacht das, was z.b. ADODB macht).
weiterhin schönen abend...
Freundlich wie man war, hat man mir Großbuchstaben geschenkt.
sh:( fo:# ch:# rl:| br:> n4:& ie:{ mo:} va:) de:] zu:} fl:( ss:? ls:[ js:|