[PHP] Problem mit objekten



  • Hallo Leute,
    ich bin hier schier am verzweifeln... und zwar hab ich 2 Klassen, ne Datenbankklasse und ne Adminklasse... die Adminklasse soll auf die Datenbankzugreifen können, geht aber nicht, weil er das Objekt der Datenbankklasse nicht richtig speichert?!?!

    Auszug:

    class Admin {
    
    var $db;
    
    function createAdmin($db_given) {
    $db = $db_given;		
    session_start();
    }
    
    function Login($array) {
    $res = $db->GetRow("SELECT COUNT(id) FROM admin WHERE user = ? AND passwd = ?", array($array['username'],md5($array['passwd'])),1);
    if($res == 1) {
    $_SERVER['user'] = $array['username'];
    return true;
    }
    return false;
    }
    }
    

    als fehlermeldung bekomme ich:

    Fatal error: Call to a member function GetRow() on a non-object in D:\xampp\xampp\htdocs\bums\admin\admin_class.php on line 38

    Jemand ne Ahnung woran das liegt? Hab auch versucht es mit is_object rauszufinden, aber hat nix gebracht...



  • 1. schreibst du in einer veralteten Syntax. Unter PHP5 sollte man var nicht mehr benutzen, auch, wenn es ab PHP6 ein Synonym für publich sein wird.
    2. instanzierst du mit $db in createAdmin() und Login() (übrigens eine uneinheitliche Funktionsnomenklatur) eine lokale Variable $db. Ich denke, was du schreiben willst, wäre $this->db.
    3. rücke mal bitte deine Codezeilen ein! Es ist eine Qual, sich durch solche Codes zu quälen; bzw. wenn sie an Umfang steigen, wird es unmöglich!



  • zu 1.: thx wusst ich ned... wollte eigentlich public verwenden aber da wurde gemeckert
    2.: aso und ich weiß dass ich die Methodennamen noch änder... war ja nur schnell probiert..
    3. keine angst, mach ich schon nur hats das a weng verhauen ^^



  • zu 1.: thx wusst ich ned... wollte eigentlich public verwenden aber da wurde gemeckert

    Bei public-Attributen würde ich auch heftigst meckern.

    class Admin
    {
        private $db;
    
        public function __construct($db)
        {
            $this->db = $db;
        }
    
        public function login($array) 
        {
            $this->res = $db->GetRow(...);
            ...
        }
    }
    


  • verdammt... du hast recht -.-
    nya lernt man heutzutage aufm TGI au nix mehr 😃



  • nya lernt man heutzutage aufm TGI au nix mehr

    wie auch, bei dem Schneckentempo wies da vorangeht 😃



  • Das stimmt allerdings... Nya gut... ich konnte ja vorher schon programmieren, aber ich geb zu, OOP hab ich in PHP noch nie benutzt 😃



  • Ich gebs ja zu, ich hab mir des OOP zeuch mit dem OOP in PHP beigebracht 🙄 Es ging ja nur ums prinzip 😉

    Nya gut... ich konnte ja vorher schon programmieren

    Jau, ging mir auch so, zum glück...die Anderen, dies vorher nciht konnten, (was heißt eigentlich können?) haben ziemliche schwirigkeiten.



  • mein lehrer hats erkannt... gibt 3 leute in der Klasse die programmieren können, wir müssen die aufgaben die wir gestellt bekommen nicht machen, wir sollen nur rumlatschen und den anderen helfen 😃
    Wir machen Java im TGI...

    sorry für OffTopic


Anmelden zum Antworten