Willkommen in der Webstatt
User-1 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?
User-2 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

User-1 am 19.11.06 15:41

Quote
Original von xyz-58
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:

User-3 am 19.11.06 16:14

Entferne die Hochkommas bei den Zahlenvariablen ;)

User-1 am 19.11.06 16:14

Quote
Original von xyz-190
Entferne die Hochkommas bei den Zahlenvariablen ;)


DAs bringt auch nichts.

User-3 am 19.11.06 16:17

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

User-2 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

User-1 am 19.11.06 16:26

Quote
Original von xyz-58
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

User-3 am 19.11.06 17:13

Quote
Original von xyz-58
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 :)

User-1 am 19.11.06 17:15

Quote
Original von xyz-190
[quote]Original von xyz-58
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?

User-2 am 19.11.06 20:06

Quote
Original von xyz-190
[quote]Original von xyz-58
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

User-4 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*

User-1 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.

User-5 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