Webstatt.org - Community seit 2006 - 2012 (2024?)

OOP Klassenübergreifend

Avatar user-287
19.11.2006 14: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'"zwinkern;

...
}

...



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

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



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

Avatar user-168
19.11.2006 14: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

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-287
19.11.2006 14:41

Original von user-168
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:

Avatar user-300
19.11.2006 15:14

Entferne die Hochkommas bei den Zahlenvariablen zwinkern

Avatar user-287
19.11.2006 15:14

Original von user-300
Entferne die Hochkommas bei den Zahlenvariablen zwinkern


DAs bringt auch nichts.

Avatar user-300
19.11.2006 15:17

Gehts mit parent::query(...); ?

Avatar user-168
19.11.2006 15: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? Fettes Grinsen

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-287
19.11.2006 15:26

Original von user-168
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? Fettes Grinsen


Genau da liegt mein problem.
Mit parent gehts auch nicht

Avatar user-300
19.11.2006 16:13

Original von user-168
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? Fettes Grinsen


Im Konstruktor der Kindklasse lächeln

Avatar user-287
19.11.2006 16:15

Original von user-300
Original von user-168
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? Fettes Grinsen


Im Konstruktor der Kindklasse lächeln


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

Avatar user-168
19.11.2006 19:06

Original von user-300
Original von user-168
Das ist echt mal ne gute Frage. Wie kann ich bei Anlegen einer Extented Class der übergeordnete Class Parameter für ne "Startfunktion" geben? Fettes Grinsen


Im Konstruktor der Kindklasse lächeln


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. Fettes Grinsen

Dustwolf ------------------------- Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein. F. Nietzsche
Avatar user-271
19.11.2006 19: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*

#!/bin/bash
traurig){ neutral:& };:
Avatar user-287
20.11.2006 15: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-273
21.11.2006 18:23

Würde mich auch interessieren...