Immernoch Klassen-Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Immernoch Klassen-Problem

    Guten Morgen,

    ich bekomme es immer noch nicht mit den Klassen gebacken. Wie kann ich in Klasse B auf eine Methode der Klass A zugreifen und diese verwenden? Ich habe es jetzt so versucht (gleich mal anhand meines Quellcodes):

    PHP-Code:
    class DB {
    var 
    $conn;
    var 
    $res;

    function 
    connect_db($host$user$pass) {
    if(!
    $this->conn mysql_connect($host$user$pass)) {
    die (
    mysql_error());
    }
    else { echo 
    "Verbindung: erfolgreich<br>"; }
    return 
    $this->conn;
    }

    function 
    select_db($db) {
    if(!
    mysql_select_db($db$this->conn)) {
    die (
    mysql_error());
    }
    else { echo 
    "Auswahl: erfolgreich<br>"; }
    }
    }

    class 
    Login extends DB {
    var 
    $res_id;

    function 
    check_user($un$up) {
    $sql "SELECT id FROM user WHERE uname='".$un."' AND upass='".$up."'";
    if(
    $this->res_id mysql_query($sql$this->conn)) {
    echo 
    "Funzt";
    }
    return 
    $this->res_id;
    }

    Wenn ich das Script nun ausführe erhalte ich folgende Fehlermeldung:

    "Warning: Supplied argument is not a valid MySQL-Link resource on line 34"

    In Line 34 steht das:

    PHP-Code:
     if($this->res_id mysql_query($sql$this->conn)) 
    conn kommt aus der Klasse DB() .


    Gruß Arndtinho

  • #2
    $conn ist ja nicht von der Klasse Login.
    Deshalb heisst die var ja net $this->conn sondern DB::conn.
    Btw. naechstes mal suchen.

    Kommentar


    • #3
      parent:: <-- besser als name der klasse ( passt immer )
      h.a.n.d.
      Schmalle

      http://impressed.by
      http://blog.schmalenberger.it



      Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
      ... nur ohne :-)

      Kommentar


      • #4
        Hi,

        jetzt bin ich völlig durcheinander und verstehe nichts mehr.
        Was bedeutet DB::conn und wo muss es wie eingesetzt werden?

        Gruß Arndtinho

        Kommentar


        • #5
          bitte mal im manual nachlesen:

          ::
          parent

          gruss

          Kommentar


          • #6
            Hallo,

            danke. Habe mir das angeschaut und meine Login Klasse sieht jetzt so aus (vorläufig):

            PHP-Code:
            class Login extends DB {
                function 
            check_user($un$up) {
                    
            parent::connect_db($host$user$pass);
                    
            parent::select_db($db);
                }

            Wenn ich jetzt das Script ausführe, wird die Connection erfolgreich aufgebaut. Beim DB-Select kommt aber ein Fehler:

            "No database selected."

            Was ist nun noch verkehrt? Denn wenn ich mir die einzelnen Funktionsresultate der DB Klasse ausgebe funzt es einwandfrei.

            Gruß Arndtinho

            Kommentar


            • #7
              die Methoden: connect_db und select_db erwarten Parameter die du der
              Klasse Login nicht übermitteln kannst, wie soll denn sowas funz? Die
              Verbindung zur DB war zustande gekommen, weil du vermutlich
              defaultmässig in php.ini festgelegt hast, sonst würde es auch nicht funz.

              Kommentar


              • #8
                Also ist es vermutlich besser nur eine einzige Klasse für das Login zu schreiben, welche die Connection usw. und die check_user-Funktion beinhalten, oder?

                Gruß Arndtinho

                Kommentar


                • #9
                  OffTopic:
                  wenn du weder weisst warum man classn benutzt, noch wie man sie benutzt, warum tust du es dann?
                  h.a.n.d.
                  Schmalle

                  http://impressed.by
                  http://blog.schmalenberger.it



                  Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
                  ... nur ohne :-)

                  Kommentar


                  • #10
                    um es zu lernen.

                    Kommentar

                    Lädt...
                    X