[Bug] MySQL-Klasse in anderer Klasse nutzen

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

  • #31
    Original geschrieben von ghostgambler
    Das ist klar, immerhin sind oben die falschen Daten angegeben, aber er sollte ja auch nur zählen und nichts ausgeben
    Nein, eben nicht! - Ich hatte das wohlweißlich geändert, also die korrekten Daten eingegeben!!!


    Original geschrieben von ghostgambler
    Weil du zu blöd bist das einzubauen
    Das nehm' ich jetzt persönlich!


    Original geschrieben von ghostgambler
    scheinbar gar nicht...sei doch froh, dass es überhaupt funktioniert ^^
    OOP in PHP4 ist richtig arm, kann man nicht anders sagen *drop*
    SCHEINBAR war die Welt vor Galileo Galile auch eine Scheibe - heute ist's 'ne Kugel...


    Original geschrieben von ghostgambler
    Selbst wenn du mir immer sofort geantwortet hättest, hätte ich nicht so schnell die Ergebnisse abrufen können, und während ich den Code 50 mal mit jeweils leichten Veränderungen bei mir getestet hab, hast du ihn vielleicht 5 mal getestet, weil du ihn immer erst wieder kopieren musst, dann einen Post machen musst, usw.
    Ja gut, äh... - Ach egal!


    Original geschrieben von ghostgambler
    Den Spam hab ich ausgeschaltet, ich guck hier doch auch so ständig vorbei und mein Postfach, tschuldigung, meine Postfächer, sind sowieso überfüllt mit 3 MLs und "richtigem" Spam und auch ein paar E-Mails die mich interessieren
    LOL...


    Original geschrieben von ghostgambler
    Och, dass du mein Weihnachtsgeschenk schon so früh kaufst
    Ja, aber pssst: ist noch geheim, weil du denkst, du kriegst es, dabei ist's für mich...

    Kommentar


    • #32
      Original geschrieben von Eagle
      Nein, eben nicht! - Ich hatte das wohlweißlich geändert, also die korrekten Daten eingegeben!!!
      Ka...ich hab den Code doch nicht auf Funktionialität getestet , sondern nur auf das, was du haben wolltest


      Ja, aber pssst: ist noch geheim, weil du denkst, du kriegst es, dabei ist's für mich...
      Kauf dir nen Dektop-Rechner, sind billiger

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

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

      Kommentar


      • #33
        Original geschrieben von ghostgambler
        Ka...ich hab den Code doch nicht auf Funktionialität getestet , sondern nur auf das, was du haben wolltest

        Kauf dir nen Dektop-Rechner, sind billiger
        Öhm, wär' das machbar, dass du mir da mal hilfst, also wegen der Funktionalität?!? *ganzliebundbravguck*

        Ja ne, ich brauch Laptop komplett neu und Desktop-Rechner muss nahezu komplett aufgerüstet werden...

        Kommentar


        • #34
          Original geschrieben von Eagle
          Öhm, wär' das machbar, dass du mir da mal hilfst, also wegen der Funktionalität?!? *ganzliebundbravguck*
          Was ist das Problem? Variablen oben vor der Klasse mit 0 initialisieren, in der Klasse nur hochzählen, deine if (isset()) usw. rausschmeißen, weil sie immer gesetzt ist und 0 ist, wenn sie noch nicht benutzt wurde, und die Ausgabe ist unten demonstiert!!!

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

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

          Kommentar


          • #35
            Original geschrieben von ghostgambler
            Was ist das Problem? Variablen oben vor der Klasse mit 0 initialisieren, in der Klasse nur hochzählen, deine if (isset()) usw. rausschmeißen, weil sie immer gesetzt ist und 0 ist, wenn sie noch nicht benutzt wurde, und die Ausgabe ist unten demonstiert!!!
            Das Problem ist, dass es nicht funktioniert!
            Also dein Array arbeitet schon - nur krieg ich immer noch "5" statt "9" Queries zurückgeliefert und ich hab selbst nachgezählt, ich mach auf der einen Seite bei mir 5 "normale" Queries und dann wird noch $tool->usage(); ausgegeben und in der Usage-Funktion nutze ich 4 Queries - und eben GENAU DIE zählt er nicht mit und auch die zusätzliche Zeit, die er dafür braucht, wird nicht zur Query-Time hinzugerechnet!
            (Ich kann das deshalb sagen, weil eine Abfrage ETWA 0.001 Sekunden (vorher gerundet ) dauert (bei 5 Queries zeigt er dann 0.006) und bei 9 Queries müssten es dann logischerweise mindestens 0.009 sein... )


            Bitte hilf mir - ich krieg echt einen an der Klatsche!

            Kommentar


            • #36
              Original geschrieben von Eagle
              Das Problem ist, dass es nicht funktioniert!
              Also dein Array arbeitet schon - nur krieg ich immer noch "5" statt "9" Queries zurückgeliefert und ich hab selbst nachgezählt, ich mach auf der einen Seite bei mir 5 "normale" Queries und dann wird noch $tool->usage(); ausgegeben und in der Usage-Funktion nutze ich 4 Queries - und eben GENAU DIE zählt er nicht mit und auch die zusätzliche Zeit, die er dafür braucht, wird nicht zur Query-Time hinzugerechnet!
              (Ich kann das deshalb sagen, weil eine Abfrage ETWA 0.001 Sekunden (vorher gerundet ) dauert (bei 5 Queries zeigt er dann 0.006) und bei 9 Queries müssten es dann logischerweise mindestens 0.009 sein... )


              Bitte hilf mir - ich krieg echt einen an der Klatsche!
              Wie sieht denn dein Code jetzt aus?
              btw. der letzte Absatz ist Schwachsinn...ein Query mit nem INNER JOIN, plus 3 Tabellen abrufen dauert länger als ein SELECT * FROM test...

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

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

              Kommentar


              • #37
                Original geschrieben von ghostgambler
                Wie sieht denn dein Code jetzt aus?
                btw. der letzte Absatz ist Schwachsinn...ein Query mit nem INNER JOIN, plus 3 Tabellen abrufen dauert länger als ein SELECT * FROM test...
                Code -> Siehe Ende dieses Postings...

                Öhm, nicht, das ich unwissend bin, aber was ist ein "Inner Join"?!?
                Das es länger dauert, ist mir schon klar - abfragen, was da ist, geht auch im Real-Life schneller, als bestimmte Dinge im Real-Life auszusortieren und anschließend zu löschen...

                PHP-Code:
                $GLOBALS['class']['sql_queries'] = 0;
                $GLOBALS['class']['sql_gentime'] = '0.000';    /*   Standard soll 0.000 sein, nicht 0
                                                                    und ohne zwei mal ' zeigt er nur 0 an... :( */

                class mysql
                {
                    var 
                $database 'MY_DB';
                    var 
                $hostname 'localhost';
                    var 
                $username 'user';
                    var 
                $password 'pass';
                    var 
                $mysqldbQuery 0;
                    var 
                $fetchedQuery 0;
                    var 
                $numrowsQuery 0;

                    function 
                open()
                    {
                        
                $this->open mysql_connect($this->hostname$this->username$this->password);

                        if (!
                $this->open)
                        {
                            echo 
                "MySQL-Error #: " mysql_errno() . "\n
                <br />\nMySQL-Error: " 
                mysql_error() . "\n<br />\n<br />\n";
                        }

                        
                $this->select mysql_select_db($this->database);

                        if (!
                $this->select)
                        {
                            echo 
                "MySQL-Error #: " mysql_errno() . "\n
                <br />\nMySQL-Error: " 
                mysql_error() . "\n<br />\n<br />\n";
                        }

                        return 
                $this->select;    /* Ich brauch nur die Rückgabe vom select_db-Befehl,
                                                    also ist das zurückgeben von open() unnötig,
                                                    da shut() die letzte aktive MySQL-Verbindung
                                                    schließt, wenn man keine Verbindungskennung
                                                    angibt... ;) */
                    
                }

                    function 
                query($mysqldbQuery)
                    {
                        
                $sql_starttime microtime();    /* Ist das ohne $this-> und/oder
                                                            Deklaration am Klassen-Beginn
                                                            trotzdem so richtig?!? */

                        
                $this->query mysql_query($mysqldbQuery);
                        
                $sql_endtime microtime();

                        
                $GLOBALS['class']['sql_queries']++;
                        
                $GLOBALS['class']['sql_gentime'] = round(($sql_endtime $sql_starttime), 3)
                $GLOBALS['class']['sql_gentime'];

                        if (
                $this->query == false)
                        {
                            echo 
                "MySQL-Error #: " mysql_errno() . "\n
                <br />\nMySQL-Error: " 
                mysql_error() . "\n<br />\n
                MySQL-Query: " 
                $mysqldbQuery "\n<br />\n<br />\n";
                        }

                        return 
                $this->query;
                    }

                    function 
                fetch($fetchedQuery)
                    {
                        
                $fetchedQuery == $this->fetch mysql_fetch_array($this->query) : $this->fetch =
                mysql_fetch_array($fetchedQuery);

                        return 
                $this->fetch;
                    }

                    function 
                num_rows($numrowsQuery)
                    {
                        
                $numrowsQuery == $this->num_rows mysql_num_rows($this->query) : $this->num_rows =
                mysql_num_rows($numrowsQuery);

                        return 
                $this->num_rows;
                    }

                    function 
                shut()
                    {
                        
                $this->shut mysql_close($this->open);

                        if (!
                $this->shut)
                        {
                            echo 
                "MySQL-Error #: " mysql_errno() . "\n
                <br />\nMySQL-Error: " 
                mysql_error() . "\n<br />\n<br />\n";
                        }

                        return 
                $this->shut;
                    }
                }

                $mysql = new mysql();


                class 
                tools extends mysql
                {
                    function 
                bbc($code)
                    {
                        
                // BBC-Stuff... ;)
                    
                }

                    function 
                usage()
                    {
                        
                $this->open();
                        
                $this->query("DELETE
                                      FROM server_usage
                                      WHERE time < " 
                . (time() - 86400));
                        
                $this->query("INSERT
                                      INTO server_usage (time, ip)
                                      VALUES (" 
                time() . ", '" $_SERVER['REMOTE_ADDR'] . "')");
                        
                $this->query("SELECT time
                                      FROM server_usage"
                );
                        
                $this->num_rows();
                        
                $this->shut();

                        return 
                $this->num_rows;
                    }

                    function 
                version()
                    {
                        
                $this->open();
                        
                $build $this->fetch($this->query("SELECT VERSION()"));
                        
                $this->shut();
                        
                $this->version substr($build[0], 0, -4);

                        return 
                $this->version;
                    }
                }

                $tool = new tools();    /*  Ob ich erst NACH dieser Zeile die MySQL-Klasse
                                            initiere (wie in deinem Code-Snippet) oder
                                            gleich nach der MySQL-Klasse, macht keinen
                                            Unterschied, der Fehler bleibt.. :( */
                ?> 

                Kommentar


                • #38
                  Original geschrieben von Eagle
                  Öhm, nicht, das ich unwissend bin, aber was ist ein "Inner Join"?!?
                  Das es länger dauert, ist mir schon klar - abfragen, was da ist, geht auch im Real-Life schneller, als bestimmte Dinge im Real-Life auszusortieren und anschließend zu löschen...
                  Ein INNER JOIN ist, wenn du in einer Tabelle, z.B: Postings die User-ID speicherst und dann beim Abruf den Usernamen aus einer anderen Tabelle anhand der ID gleichzeitig mitbekommen willst, ohne einen zweiten Query abzusetzen.

                  PHP-Code:
                  $GLOBALS['class']['sql_queries'] = 0;
                  $GLOBALS['class']['sql_gentime'] = '0.000';    /*   Standard soll 0.000 sein, nicht 0
                                                                      und ohne zwei mal ' zeigt er nur 0 an... :( */ 
                  Versuch mal so:
                  PHP-Code:
                  $GLOBALS['class']['sql_queries'] = 0;
                  $GLOBALS['class']['sql_gentime'] = (float)0;    /*   Standard soll 0.000 sein, nicht 0
                                                                      und ohne zwei mal ' zeigt er nur 0 an... :( */ 

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

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

                  Kommentar


                  • #39
                    Original geschrieben von ghostgambler
                    Ein INNER JOIN ist, wenn du in einer Tabelle, z.B: Postings die User-ID speicherst und dann beim Abruf den Usernamen aus einer anderen Tabelle anhand der ID gleichzeitig mitbekommen willst, ohne einen zweiten Query abzusetzen.

                    Versuch mal so:
                    PHP-Code:
                    $GLOBALS['class']['sql_queries'] = 0;
                    $GLOBALS['class']['sql_gentime'] = (float)0;    /*   Standard soll 0.000 sein, nicht 0
                                                                        und ohne zwei mal ' zeigt er nur 0 an... :( */ 

                    Ach so, na dann ist's mir klar...
                    Das ist dann also dieses "WHERE news_id = comments_id" in MySQL-Abfragen, wo man nur die Kommentare, die zur News gehören, haben will, oder?!?

                    Den Code hab ich versucht - Ergebnis: 0 statt 0.000, aber laut http://de.php.net/float (unten bei den "User Notes" ) hängt die Art und Weise, was PHP mit "(float) 0.000" macht, von den locale-Einstellungen ab. Denn in den User Notes steht was davon, dass 0.1234 mal zu 12.34 und auch mal zu 1234 werden kann...
                    Deshalb hab' ich's wieder als String gemacht...

                    Aber mein Hauptproblem ist immer noch: dein "$GLOBALS['class']['sql_queries']" bzw. "$GLOBALS['class']['sql_gentime']" funktioniert prima - allerdings werden die 4 Queries in der Usage-Funktion in der Tools-Klasse einfach nicht mitgezählt bzw. bei der Query-Time hinzugerechnet!

                    Warum?!? - Hiiiiiiiiiiiiiiiiiiiiiiiiiilfeeeeeeeeeeeeee, ich verzweifle noch!!!

                    OffTopic:
                    Horizontal-Scrolling is out!

                    Kommentar


                    • #40
                      Original geschrieben von Eagle
                      Ach so, na dann ist's mir klar...
                      Das ist dann also dieses "WHERE news_id = comments_id" in MySQL-Abfragen, wo man nur die Kommentare, die zur News gehören, haben will, oder?!?
                      ne, bzw. eigentlich weiß ich grade nicht, was du meinst ^^
                      in INNER JOINS wird das eigentlich mit "ON news_id = comments_id" gemacht, nicht mit WHERE...


                      Häng mal deine komplette Test-PHP-Datei an, ohne irgendwas zu kürzen!
                      Mit Objekt-Erstellung und Ausgabe am Ende + deine Ausgabe.

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

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

                      Kommentar


                      • #41
                        Ach so, naja, DAS sagt mir wiederum gar nix... ^^

                        Wie dem auch sei, hier nun mein Quellcode - aber eins musst du noch wissen: der Code für die 2 Klassen steht in einer Datei, die wiederum per include() in die Hauptdatei eingebunden wird!

                        So, den Code nutze ich im Moment und der will wie gesagt nicht die 4 Queries in der Usage-Funktion zählen und folglich auch nicht die Query-Time für die 4 Queries mit zur Gesamt-Query-Time dazurechnen:

                        PHP-Code:
                        <?php

                        $GLOBALS
                        ['class']['sql_queries'] = 0;
                        $GLOBALS['class']['sql_gentime'] = '0.000';

                        class 
                        mysql
                        {
                            var 
                        $database 'MY_DB';
                            var 
                        $hostname 'localhost';
                            var 
                        $username 'user';
                            var 
                        $password 'pass';
                            var 
                        $mysqldbQuery 0;
                            var 
                        $fetchedQuery 0;
                            var 
                        $numrowsQuery 0;

                            function 
                        open()
                            {
                                
                        $this->open mysql_connect($this->hostname$this->username$this->password);

                                if (!
                        $this->open)
                                {
                                    echo 
                        "MySQL-Error #: " mysql_errno() . "\n
                        <br />\nMySQL-Error: " 
                        mysql_error() . "\n<br />\n<br />\n";
                                }

                                
                        $this->select mysql_select_db($this->database);

                                if (!
                        $this->select)
                                {
                                    echo 
                        "MySQL-Error #: " mysql_errno() . "\n
                        <br />\nMySQL-Error: " 
                        mysql_error() . "\n<br />\n<br />\n";
                                }

                                return 
                        $this->select;
                            }

                            function 
                        query($mysqldbQuery)
                            {
                                
                        $sql_starttime microtime();
                                
                        $this->query mysql_query($mysqldbQuery);
                                
                        $sql_endtime microtime();

                                
                        $GLOBALS['class']['sql_queries']++;
                                
                        $GLOBALS['class']['sql_gentime'] = round(($sql_endtime $sql_starttime), 3)
                        $GLOBALS['class']['sql_gentime'];

                                if (
                        $this->query == false)
                                {
                                    echo 
                        "MySQL-Error #: " mysql_errno() . "\n
                        <br />\nMySQL-Error: " 
                        mysql_error() . "\n<br />\n
                        MySQL-Query: " 
                        $mysqldbQuery "\n<br />\n<br />\n";
                                }

                                return 
                        $this->query;
                            }

                            function 
                        fetch($fetchedQuery)
                            {
                                
                        $fetchedQuery == $this->fetch mysql_fetch_array($this->query) : $this->fetch =
                        mysql_fetch_array($fetchedQuery);

                                return 
                        $this->fetch;
                            }

                            function 
                        num_rows($numrowsQuery)
                            {
                                
                        $numrowsQuery == $this->num_rows mysql_num_rows($this->query) : $this->num_rows =
                        mysql_num_rows($numrowsQuery);

                                return 
                        $this->num_rows;
                            }

                            function 
                        shut()
                            {
                                
                        $this->shut mysql_close($this->open);

                                if (!
                        $this->shut)
                                {
                                    echo 
                        "MySQL-Error #: " mysql_errno() . "\n
                        <br />\nMySQL-Error: " 
                        mysql_error() . "\n<br />\n<br />\n";
                                }

                                return 
                        $this->shut;
                            }
                        }

                        $mysql = new mysql();


                        class 
                        tools extends mysql
                        {
                            function 
                        bbc($code)
                            {
                                
                        // BB-Code-Stuff...
                            
                        }

                            function 
                        usage()
                            {
                                
                        $this->open();
                                
                        $this->query("DELETE
                                              FROM server_usage
                                              WHERE time < " 
                        . (time() - 86400));

                                
                        $this->query("INSERT
                                              INTO server_usage (time, ip)
                                              VALUES (" 
                        time() . ", '" $_SERVER['REMOTE_ADDR'] . "')");
                                
                        $this->query("SELECT time
                                              FROM server_usage"
                        );
                                
                        $this->num_rows();
                                
                        $this->shut();

                                return 
                        $this->num_rows;
                            }

                            function 
                        version()
                            {
                                
                        $this->open();
                                
                        $build $this->fetch($this->query("SELECT VERSION()"));
                                
                        $this->shut();
                                
                        $this->version substr($build[0], 0, -4);

                                return 
                        $this->version;
                            }
                        }

                        $tool = new tools();

                        ?>

                        Kommentar


                        • #42
                          stupid guy...

                          den Code hab ich jetzt 5 Mal hier im Thread vor mir...

                          Ich will, dass du daraus EINE Datei machst, wo die beiden Klassen drin sind, und eine Testausgabe, plus Benutztung der Klasse, damit es was zum Ausgeben gibt und dass du DIESE Datei dann anhängst, komplett...einfach zum Testen!

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

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

                          Kommentar


                          • #43
                            Original geschrieben von ghostgambler
                            stupid guy...

                            den Code hab ich jetzt 5 Mal hier im Thread vor mir...

                            Ich will, dass du daraus EINE Datei machst, wo die beiden Klassen drin sind, und eine Testausgabe, plus Benutztung der Klasse, damit es was zum Ausgeben gibt und dass du DIESE Datei dann anhängst, komplett...einfach zum Testen!
                            Ja mei, sag's doch gleich!

                            Hab's angehängt, mit Comments...
                            Angehängte Dateien

                            Kommentar


                            • #44
                              Original geschrieben von Eagle
                              Ja mei, sag's doch gleich!
                              habsch doch...

                              Hab's angehängt, mit Comments...
                              OffTopic:
                              du musst die Kommentare nicht in Englisch schreiben...ich kann auch Deutsch

                              Also ich bekomm da für die Queries oben ne 2 und unten ne 6 zurück, und sofern ich das überblicken kann, ist das das, was auch rauskommen sollte...
                              Und was funktioniert jetzt nicht?

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

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

                              Kommentar


                              • #45
                                Original geschrieben von ghostgambler
                                habsch doch...

                                OffTopic:
                                du musst die Kommentare nicht in Englisch schreiben...ich kann auch Deutsch

                                Also ich bekomm da für die Queries oben ne 2 und unten ne 6 zurück, und sofern ich das überblicken kann, ist das das, was auch rauskommen sollte...
                                Und was funktioniert jetzt nicht?
                                Ajo...

                                @ OT: Ich schreibe international verständlichen Quellcode und hab in vielen Dateien Kommentare - die sind ALLE auf Englisch

                                @ Script: OMG! - Sag, dass das nicht wahr ist!!!
                                Das kann doch nicht sein, ich krieg bei dem Scheißdreck immer 5 zurück und bei dir geht's?!? O.o

                                Mach mal (rein aus Spaß an der Sache ) das:

                                $your_var = $mysql->fetch($mysql->query(DEIN QUERY));

                                Und das halt auch paar mal - mal gucken, ob's dann immer noch geht!

                                Kommentar

                                Lädt...
                                X