Problem OOP

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

  • Problem OOP

    Hi Leute,
    ich hab ein Problem mit der Kindklasse(counter).
    Die Funktion "test" führt der nicht aus bzw. den Query nicht. Wenn ich
    Code:
    $counter=new counter
    einfüge
    dann bringt er mir Acces Denied, lasse ich das weg, verbindet er korrekt zur DB.
    Hoffe ihr könnt mir helfen weil ich noch nicht so viele Erfahrungen habe mit OOP!!!
    Hier noch der Code:

    Code:
    <?php  
    
    class mysql{
    
    var $dbh;
    
    function mysql($user,$pass)
    {
    
    try{
    			
    $this->dbh = new PDO('mysql:host=localhost;dbname=test',$user,$pass);
    
    }
    
    catch (Exception $exception)
    
    {
    	
    	$this->message ="Passwort oder Benutzername falsch!";
    	
    	$this->exception_handler($exception);
    	}	
    }	
    
    function query($sql)
    
    {
    
    	return $this->dbh->query($sql);
    
    }
    
    function exception_handler($exception)
    	{
    
    		$message = $this->message; 
    	
    		echo $message."<br>", $exception->getMessage()."<br>".
    		 
    		"Im Script".$exception->getFile()." und in der 
    
                     Zeile ".$exception->getLine().
    		
    		" ist der Fehler";
    	}	
    }	
    //**********************************************************************************
    
    class counter extends mysql
    {
    	function test()
    	{
    		parent::query("INSERT INTO test(abc) VALUES ('irgfgrgrt5')");
    	}
    }
    
    $pdo = new mysql("root","");
    
    $counter = new counter();
    ?>
    :

  • #2
    Bitte die php-Tags benutzen und den Code richtig einrücken.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      auf den ersten blick scheint da einiges nicht zu stimmen. lies dir mal meine einführung zur oop durch, villeicht hilft dir das weiter.

      gruß
      peter
      Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
      Meine Seite

      Kommentar


      • #4
        ok, hier ist in php Tag

        PHP-Code:
        <?php  

        class mysql{

        var 
        $dbh;

        function 
        mysql($user,$pass)
        {

        try{
                    
           
        $this->dbh = new PDO('mysql:host=localhost;dbname=test',$user,$pass);

        }

        catch (
        Exception $exception)

        {
            
            
        $this->message ="Passwort oder Benutzername falsch!";
            
            
        $this->exception_handler($exception);
            }    
        }    

        function 
        query($sql)

        {

            return 
        $this->dbh->query($sql);

        }

        function 
        exception_handler($exception)
            {

                
        $message $this->message
            
                echo 
        $message."<br>"$exception->getMessage()."<br>".
                 
                
        "Im Script".$exception->getFile()." und in der 

                 Zeile "
        .$exception->getLine().
                
                
        " ist der Fehler";
            }    
        }    
        //**********************************************************************************

        class counter extends mysql
        {
            function 
        test()
            {
                
        parent::query("INSERT INTO test(abc) VALUES ('irgfgrgrt5')");
            }
        }

        $pdo = new mysql("root","");

        $counter = new counter();
        ?>
        Das Tutorial hab ich mir schon angeschaut auch die Bsp. Codes!
        Nur durchlesen ist die eine Seite aber wenn es praktisch anwendet macht man doch denn einen oder anderen Fehler.
        Und an Fehler lernt man am besten. Daher hoffe ich das du mir dabei hilfst die Fehler zu finden und diese dann lösen!

        Kommentar


        • #5
          vollkommen richtig, und wenn du error_reporting hochstellst, fällt dir auf, dass beim impliziten aufruf des parent-konstruktors die argumente fehlen. soll php an der stelle raten?

          Kommentar


          • #6
            OffTopic:
            richtig eingerückt ist der Code immer noch nicht~, siehe erste Funktion

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              nein natürlich nicht! aber ich dachte mit der SQL Befehl würde ich denn sagen, was er machen soll, aber wie es aussieht hab ich da falsch gedacht! Und könntest du mir sagen wie ich es richtig machen muss?!

              Kommentar


              • #8
                schau dir einfach mal im MySQL-Manual die Syntax des INSERT-Befehls an
                it's not a bug,
                it's a feature!

                Kommentar


                • #9
                  Dran ist nichts falsch, weil hab gerade denn Befehl bei phpmyadmin eingefügt und ausgeführt, funktioniert einwandfrei! Also daran das kann es nicht liegen!
                  Demzufolge muss was anderes falsch sein, an der Klasse! Was für Argumente fehlen genau bzw. wie binde ich die ein?
                  Sry für die ganzen fragen aber, jeder Anfang ist schwer!

                  Kommentar


                  • #10
                    hä?
                    Es geht nicht um den Query, da fehlen einfach die Parameter oO;
                    Original geschrieben von penizillin
                    beim impliziten aufruf des parent-konstruktors die argumente fehlen
                    will heißen diese Zeile ist falsch
                    PHP-Code:
                    $counter = new counter(); 

                    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                    Wie man Fragen richtig stellt

                    Kommentar


                    • #11
                      was ist an der Zeile falsch? Also ich habe zusätzlich zu der Zeile noch:
                      PHP-Code:
                      $counter->query(); 
                      hinzugefügt, aber hat mich auch nicht weiter gebracht.....

                      Kommentar


                      • #12
                        Original geschrieben von BlackPerfect
                        was ist an der Zeile falsch?
                        Es fehlen die Parameter, die der Konstruktor verlangt!
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          imho musst du die Argumente übergeben, die der Konstruktor der mysql-Klasse erwartet.
                          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                          Kommentar


                          • #14
                            Ok, das ist mir mittlerweile auch klar geworden weil der Konstruktur bei der Elternklasse nicht automatisch mit geladen wird, wenn ich das richtig verstanden haben.... oder?
                            Aber wie ich das initaliesiere weiß ich nicht so recht?

                            Kommentar


                            • #15
                              Original geschrieben von BlackPerfect
                              Ok, das ist mir mittlerweile auch klar geworden weil der Konstruktur bei der Elternklasse nicht automatisch mit geladen wird, wenn ich das richtig verstanden haben.... oder?
                              Deine Klasse hat ihren Konstruktor von der "Elternklasse" geerbt.
                              Also muss er auch genauso bedient werden.
                              Aber wie ich das initaliesiere weiß ich nicht so recht?
                              Hast du das selber geschrieben, oder nicht ...?

                              function mysql($user,$pass)
                              - mal überlegen, welche Parameter will diese Funktion - die auf Grund der Namensgleichheit unter PHP4 den Konstruktor der Klasse mysql darstellt - wohl bekommen?
                              Vielleicht einen Längen- und einen Breitengrad? Ja, das muss es wohl sein, die Parameternamen klingen ja danach ...
                              I don't believe in rebirth. Actually, I never did in my whole lives.

                              Kommentar

                              Lädt...
                              X