Willkommen in der Webstatt Zum Webstatt Blog und Stories
Rebel4s Rebel4s am 19.11.06 15:26

Hallo,
Ich habe eine Klasse, mit der ich meine MySQL Abfragen ausführe.

Nun habe ich eine neue Klasse, mit der ich Sessions in die Datenbank eintragen will, mithilfe der MySQL Klasse. Nur wenn ich das mache, sagt er mir

Fatal error: Call to a member function on a non-object in /www/htdocs/.../class_session.php on line 39

Wenn ich jetzt mit Vererbung mache, funktioniert es soweit, nur dann gibt er mir ein SQL error.

Die MySQL Klasse wird aber vor der Session Klasse aufgerufen. Muss ich die MySQL Klasse in der Session Klasse aufrufen? Oder wie löse ich das am geschicktesten.
Die MySQL Klasse benötigt dazu noch die Datenbank daten.

Hier mal das Beispiel:
<?php

class db {

var $server = "";
var $user = "";
var $password = "";
var $database = "";

function db($server,$user,&$password,$database) {

.....
}

......


<?PHP

class session {

var $user_name;
var $user_id;
var $user_pw;
var $user_rights=0;

var $session_name;
var $session_id;


function session ($session_name, $session_id)
{
...

$proof_session = $db->query("SELECT userid, sid FROM sessions WHERE userid='$this->user_id' AND sid='$this->session_id'");

...
}

...


require("./class_mysql.php");
$db = new db($sqlhost,$sqluser,$sqlpassword,$sqldb);

require("./class_session.php");
$session = new session(session_name(), session_id());



Ich weiß, dass das Falsch ist, aber ich weiß auch nicht, wie ich das anders machen soll.

netcup.de Warum gibt es hier Werbung?
Dustwolf Dustwolf am 19.11.06 15:29

Musst du die DB-Class überhaupt nochmal starten? Genügt nicht die Subclass?

Kann sein, dass dein Problem darin besteht, dass du ne MySQL-Connection hast und noch eine anlegst.

Edit: Das meine ich bei:
class datenbank
und
class sessions extends datenbank

Rebel4s Rebel4s am 19.11.06 15:41

Quote
Original von Dustwolf
Musst du die DB-Class überhaupt nochmal starten? Genügt nicht die Subclass?

Kann sein, dass dein Problem darin besteht, dass du ne MySQL-Connection hast und noch eine anlegst.

Edit: Das meine ich bei:
class datenbank
und
class sessions extends datenbank


Jo, das hatte ich auch versucht, dann muss ich ja in
$proof_session = $this->query("SELECT userid, sid F.....
umbennen.

Nur dann spuckt er mir Errors aus. Wahrscheinlich weil die Datenbank Daten nicht initialisiert wurden.

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /www/htdocs/xxxx/class_mysql.php on line 44
SQL-DATABASE ERROR

Database error: SQL Fehler: DELETE FROM sessions WHERE time<'1163943758'
mysql error:
mysql error number: 0
Date: 19.11.2006 @ 15:42
Script: /xxx/
Referer:

sili sili am 19.11.06 16:14

Entferne die Hochkommas bei den Zahlenvariablen ;)

Rebel4s Rebel4s am 19.11.06 16:14

Quote
Original von sili
Entferne die Hochkommas bei den Zahlenvariablen ;)


DAs bringt auch nichts.

sili sili am 19.11.06 16:17

Gehts mit [FONT=courier new]parent::query(...);[/FONT] ?

Dustwolf Dustwolf am 19.11.06 16:18

Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? :D

Rebel4s Rebel4s am 19.11.06 16:26

Quote
Original von Dustwolf
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? :D


Genau da liegt mein problem.
Mit parent gehts auch nicht

sili sili am 19.11.06 17:13

Quote
Original von Dustwolf
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? :D


Im Konstruktor der Kindklasse :)

Rebel4s Rebel4s am 19.11.06 17:15

Quote
Original von sili
[quote]Original von Dustwolf
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? :D


Im Konstruktor der Kindklasse :)[/quote]

Ich glaub ich weiß was du meinst, aber kannst du mir mal ein Besipiel geben?

Dustwolf Dustwolf am 19.11.06 20:06

Quote
Original von sili
[quote]Original von Dustwolf
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? :D


Im Konstruktor der Kindklasse :)[/quote]

Ich will demnächst meine Seite komplett OOP schreiben. Da muss ich dann aber ziemlich viele (!) Parameter in einer einzelnen Funktion übergeben, wenn ich Template- und Datenbanksystem mit nem eigentlichen Seitenobjekt koppeln würde.
Ich denke da so an übergebene Datenbankangaben, Template, Seitenzahlen, ArtikelID, etc. :D

nuit nuit am 19.11.06 20:15

also...ich mach es immer so: dass ich eine klasse hab, die mir die einzelnen klassen verwaltet...und über die kann ich dann auf die einzelnen instanzen zugreifen *fg*

Rebel4s Rebel4s am 20.11.06 16:15

Jo, habs einfach mit der Klasse für sessions gelassen. Das nächste mal versuch ich das mit der Verwaltungsklasse.
Kannste mal zeigen, wie da deine so ungefähr aussieht.

okraina am 21.11.06 19:23

Würde mich auch interessieren...

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt