Problem OOP

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

  • #16
    Ja hab das selber geschrieben alles! Die Fehlerbehandlung sonstiges war auch kein großes Problem, nur hier sehe ich zurzeit kein Land so richtig, bis jetzt.
    Logisch $user und $pass, oder bin ich jetzt total aufm falschen Weg?
    Irgendwie stelle ich mich gerade voll dumm an......*selbsteinschätzung*
    Danke für die geduld!

    Kommentar


    • #17
      Also[list=1][*]Du musst bei extend keine neue Klasse zusätzlich erstenllen[*]Musst du den Konstruktor auch aufrufen wenn du extend benutzt und den ursprüngilchen Konstruktor überschreibst[/list=1] - praktisch sieht das so aus:
      PHP-Code:
       <?php  

      class mysql{
         ...
      }    

      class 
      counter extends mysql
      {
          function 
      test ( )
          {
              
      parent::query(...);
          }
      }

      $counter = new counter '[i]SQL Username[/i]''[i]SQL Passwort[/i]' );
      // counter erbt den Konstruktor von mysql.
      // Diese Klasse erwartet zwei Argumente

      $conter -> test ( ); // Query wird ausgeführt
      ?>
      Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

      Kommentar


      • #18
        ok hab ich gemacht! nur jetzt kommt ne neue Fehlermeldung:
        "Debug-Fehler: D:\Programme\xampp\htdocs\test.php Zeile 30 - Call to a member function query() on a non-object"

        Die Code der Zeile ist:
        PHP-Code:
        return $this->dbh->query($sql); 

        Kommentar


        • #19
          und jetzt?

          mal ins manual gucken:
          http://de3.php.net/manual/en/language.oop5.decon.php

          was steht dort über den aufruf der parent-konstruktoren?

          Kommentar


          • #20
            Das man die mit parent::__construct() aufruft oder sehe ich das falsch?

            Kommentar


            • #21
              genau. und da kannst du deine parameter übergeben.

              Kommentar


              • #22
                Ok also:
                PHP-Code:
                parent::__construct("root",""
                Nur was hat das mit der Fehlerzeile zu tun?
                Denn hab das eingebaut und trotzdem kommt der Fehler noch!
                PHP-Code:
                class counter extends mysql
                {
                    function 
                test()
                    {
                        
                parent::__construct("root","");
                        
                        
                parent::query("INSERT INTO test(abc) VALUES ('irgfgrgrt5')");
                    }

                Zuletzt geändert von BlackPerfect; 18.04.2007, 18:16.

                Kommentar


                • #23
                  da kommen am besten keine konstanten hin, sondern tatsächlich _parameter_.

                  Nur was hat das mit der Fehlerzeile zu tun?
                  was besagt sie denn?

                  edit: du sollst den konstruktor für counter schreiben, der den von mysql aufruft.

                  und dann zeig noch mal, wie du was aufrufst.
                  Zuletzt geändert von penizillin; 18.04.2007, 18:19.

                  Kommentar


                  • #24
                    Ei, ei, ei. So viele erklärungen für ein simples problem.
                    Wenn der OP mal etwas mehr zum thema gelesen hätte
                    dann hätte er hier auch nicht fragen brauchen.
                    Mir ist auch schleierhaft warum hier nicht durchgängig
                    php5-konstrukte benutzt werden oder eben durchgängig php4.
                    Aber für eins solltest du dich bitte entscheiden.

                    Also @BP ruf den parent-ctor richtig auf und überleg dir mal
                    ob es gut ist im exceptionfall die exception nicht weiter zuwerfen.

                    Ich drücke die daumen, du schaffst das schon. Ansonsten fragst
                    du hier eben noch zehn mal bis einer genervt den kompletten code
                    posted. Das funktioniert doch immer

                    greets
                    (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                    Kommentar


                    • #25
                      Schön das ihr den Humor noch nicht verloren habt. Irgendwie stehe ich heute auf Kriegsfuss mit PHP weiß auch nicht. Also das nochmal versucht, aber wie ihr euch schon denken könnt ging es mal wieder schief!

                      Hier der code:

                      PHP-Code:
                      public function __construct($user$pass) {
                       
                       
                      parent::mysql($user$pass);
                       
                      parent::query("INSERT INTO test(abc) VALUES ('irgfgrgrt5')");
                       } 
                      Ach mano.....

                      Kommentar


                      • #26
                        und jetzt?

                        Kommentar


                        • #27
                          was mache ich denn nur falsch?.......*noch verzweifel*........

                          Kommentar


                          • #28
                            du rätst.
                            du zeigst nicht, was du machst.
                            du erklärst nicht, was dir nicht gelingt.

                            PHP-Code:
                            <?php  

                            class mysql{

                                var 
                            $dbh;

                                function 
                            mysql($user,$pass)
                                {
                                    
                            $this->dbh 'irgendwas';
                                }    

                                function 
                            query()
                                {
                                    return 
                            'der wert ist: '.$this->dbh;
                                }

                            }  

                            class 
                            counter extends mysql
                            {
                                function 
                            counter($a$b){
                                    
                            parent::__construct($a,$b);
                                }
                                
                                function 
                            test()
                                {
                                    echo 
                            $this->query();
                                }
                            }

                            $counter = new counter("a""b");

                            $counter->test();

                            ?>

                            Kommentar


                            • #29
                              Hehe,

                              sieht aus als wär penizillin heut mal der "genervte" der
                              den (zumindest halbfertigen) code serviert.

                              greets
                              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                              Kommentar

                              Lädt...
                              X