PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : auf zweite Datenbank zugreifen


Timo Trallala
11.01.2006, 11:03:15
Hallo Zusammen,

habe Problem uaf eine zweite Datenbank zuzugreifen.

Über eine Klasse dbconn werden die grundlegenden datenbakzugriffe gehandelt. Diese wird über eine session.php in die index includet.
<?
/**
* functions.php
*
* beinhaltet die Grundfunktionen des Session-Mangements insbes. Datenbankverbindung
*
* written by: Timo Trallala, germany (2005)
*/

include("config/constants.php");

class dbconn
{
var $connect;

/* dbconn - The Class-Construktor */

function dbconn()
{
$this->connect=mysql_connect(host, user, pass) or die(mysql_error());
mysql_select_db(name, $this->connect) or die(mysql_error());

$this->connect1=mysql_connect(host_ext, user_ext, pass) or die(mysql_error());
mysql_select_db(name_ext, $this->connect1) or die(mysql_error());
}
/* liefert Datenbank Query */

function query($query) { return mysql_query($query, $this->connect); }
}

;

$db=new dbconn;
?>

jetzt ist es aber notwendig, auf eine zweite datenbank auf einem anderen Server zuzugreifen, bzw. dort ein Paar inserts/ updates und deletes durchzuführen. Jetzt hab ich mir gedacht- was sich als Trugschluss herausstellte, eine weitere Funktion db_functs_ext.php einzubinden:
<?
/**
* db_ext_functions.php
*
* steuert Datenbank-Operationen auf externer Datenbank
*
* written by: Timo Trallala, germany (2005)
*/

include("config/constants.php");

class dbconn_ext
{
var $connect;

/* dbconn_ext - The Class-Construktor */

function dbconn_ext()
{
$this->connect=mysql_connect(host_ext, user_ext, pass_ext) or die(mysql_error());
mysql_select_db(name_ext, $this->connect) or die(mysql_error());
}

/* liefert Datenbank Query */

function query($query) { return mysql_query($query, $this->connect); }
}

;

$db_ext=new dbconn_ext;
?>

Einbindung über session.php
<?php
/**
* session.php
*
* Herzstück des Session-Managements: startet, beendet und verwaltet Sitzungen
*
* written by: Timo trallala, germany (2005)
*/
include ("cms_functions.php");
include ("db_ext_functions.php");
include ("db_functions.php");
include ("form.php");
include ("mailer.php");

class Session
{
var $username;
var $userlevel;
var $language;
var $loggedIn;
var $userinfo = array();
var $url;
var $referrer;
var $shopping_cart;

/* Session - The Class-Construktor */

function Session()
{
$this->time=time();
$this->startSession();
}

/* startet session & bestimmt, ob der User bereits eingeloggt ist
und setzt die session-Varaiablen */

function startSession()
{
global $db;

/* startet aktuelle Session */
session_start();

/* es wird bestimmt, ob User eingeloggt ist */
$this->loggedIn=$this->checkLogin();

Bekomm allerdings so ne fehlermeldung: Cannot Redeclare dbconn
Besten dank für etwaige Hinweise

meikel (†)
11.01.2006, 14:20:24
Bekomm allerdings so ne fehlermeldung: Cannot Redeclare dbconn
Weil das so falsch ist.

Normalerweise macht man das doch so:
class db
{
var $con = false;
function db($host='', $user='', $pass='', $dbname='')
{
if(! $this->con = @mysql_connect($host, $user, $pass))
die (mysql_error() );
if (! @mysql_select_db($dbname))
die (mysql_error() );

printf ('Ich bin drin auf Server %s <br>', $host);
}

# weitere Methoden

}

$data1 = &new db('localhost', 'user', 'geheim');
$data2 = &new db('andere_kiste', 'anderer_user', 'ganz_geheim');