php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 26-02-2005, 18:28
Eagle
 Guest
Eagle
Beiträge: n/a
Question [Bug] MySQL-Klasse in anderer Klasse nutzen

Grüße!

Ich habe eine eigene MySQL-Klasse geschrieben, die auch wunderbar funktioniert.
Nun bin ich ein kleiner "Statistik-Fetischist" und wollte mir gern PHP- und MySQL-Generierungszeiten anzeigen lassen.
Das funktioniert ebenfalls wunderbar, bis auf eine Kleinigkeit: die Anzahl der Queries. - Hier gibt's irgendwie einen Bug und ich sitze jetzt schon 2 Wochen dran und habe alles Mögliche probiert, aber es will einfach nicht!

Grundsätzlich funktioniert der Queries-Zähler schon, das ist nicht das Problem.
Allerdings habe ich noch einige für mich sehr nützliche Funktionen, die sich in einer 2. Klasse befinden und in dieser Klasse nutze ich ALLE Funktionen, die ich in der 1. Klasse habe.
Nun ist es bekannt, dass man via "extends" einer 2. Klasse die Funktionen einer anderen Klasse übergeben kann - nur genau hier kommt der Bug ins Gespräch: der Queries-Zähler (und eventuell auch der MySQL-Generation-Counter, kann das ja schlecht stoppen ) streikt und zählt nicht!

Bitte helft mir, ich bin wirklich vollends verzweifelt...


Quellcode von Klasse 1:
PHP-Code:
class mysql
{
    var 
$database 'DB_NAME';
    var 
$hostname 'localhost';
    var 
$username 'my_user';
    var 
$password 'my_pass';

    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();
        }

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

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

        return 
$this->open;
        return 
$this->select;
    }

    function 
query($dbQuery)
    {
        global 
$sql_queries;
        global 
$sql_gentime;

        
$sql_starttime microtime();
        
$this->query mysql_query($dbQuery);
        
$sql_endtime microtime();

        !isset(
$sql_queries) ? $sql_queries '0' $sql_queries++;
        !isset(
$sql_gentime) ? $sql_gentime '0.000' $sql_gentime round(
(
$sql_endtime $sql_starttime), 3) + $sql_gentime;

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

        return 
$this->query;
    }

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

        return 
$this->fetch;
    }

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

        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();
        }

        return 
$this->shut;
    }
}

$mysql = new mysql

Und hier nun der Quellcode der 2. Klasse, die die Funktionen der 1. Klasse nutzt:
PHP-Code:
class tools extends mysql
{
    function 
bbc($code)
    {
        
// ...
    
}

    {
        
$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;
    }
}

$tools = new tools(); 

Geändert von Eagle (26-02-2005 um 21:07 Uhr)
Mit Zitat antworten
freelancermap.de - IT Projektvermittlung für Selbständige und Freiberufler
  #2 (permalink)  
Alt 26-02-2005, 20:03
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard Re: [Bug] MySQL-Klasse in anderer Klasse nutzen

falsche Kategorie, das gehört ins PHP Developer...


Zitat:
PHP-Code:
function open()
    {
        
$this->open mysql_connect($this->hostname$this->username
$this->password);

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

        return 
$this->open;
        return 
$this->select;
    } 
Das doppelte return am Ende hat keinen Sinn, nach dem ersten Return ist die Funktion zuende, d.h. er kommt nicht bis zum zweiten return...


Zitat:
PHP-Code:
$this->query mysql_query($dbQuery); 
Die Variable ist in der Klasse gar nicht deklariert, genauso wie einige anderen die du mit $this-> benutzt...


Willst du die Querys aller Objekte in einer Variablen hochzählen, oder reicht es nicht, wenn du die Zahlen von jedem Objekt einzeln bekommst?


btw. Zeilenumbruch in deinem PHP-Code fehlt!
Waagrecht scrollen ist out >_<
Mit Zitat antworten
  #3 (permalink)  
Alt 26-02-2005, 21:05
Eagle
 Guest
Eagle
Beiträge: n/a
Standard

Öhm, ich dachte, Brainstorming ist, wenn man weiß wie, nur der Lösungsansatz fehlt?!? - Weil hab mir die Forenbeschreibung durchgelesen und danach fand ich's besser in Brainstorming zu posten...

Hmm, wie kann ich denn 2 Variablen gleichzeitig per return zurück geben lassen?
PHP-Code:
return $this->open$this->select
So vielleicht?!?

Ich weiß, dass die Variable nicht deklariert ist - nur komischerweise geht's trotdem... (register_globals = "0"!!!) O.o

Ich möchte die exakte Anzahl, wie oft mysql_query() ausgeführt wird/wurde und wenn ich die Klasse "mysql" in der Klasse "tools" so nutze, wie es momentan der Fall ist, zählt er die Queries, die in der tools-Klasse ausfgeführt werden, nicht mit - und genau DAS möchte ich mit eurer Hilfe ändern, weil ich hab 2 Wochen rumgebastelt und es will trotzdem nicht!

Ich weiß...
Mit Zitat antworten
  #4 (permalink)  
Alt 26-02-2005, 21:31
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Eagle
Öhm, ich dachte, Brainstorming ist, wenn man weiß wie, nur der Lösungsansatz fehlt?!? - Weil hab mir die Forenbeschreibung durchgelesen und danach fand ich's besser in Brainstorming zu posten...
Wenn du dir mal die Threads in den Kategorien angeschaut hättest (die Threadtitel hätten gereicht), wüsstest du es besser *hust*

Zitat:
Hmm, wie kann ich denn 2 Variablen gleichzeitig per return zurück geben lassen?
gar nicht?
Du kannst höchstens überprüfen ob beide true sind und dann true zurückgeben, ansonsten eben false. Und wenn du es genauer willst, musst du noch ne Variable an die Funktion per Referenz übergeben, wo die Klasse dann ggf. eine Fehlermeldung reinschreibt.

btw. würde ich es mal besser so versuchen:
PHP-Code:
function open()
    {
        
$this->open mysql_connect($this->hostname$this->username
$this->password);

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

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

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

        return 
true;
    } 

Zitat:
PHP-Code:
return $this->open$this->select
So vielleicht?!?
kein Kommentar >_>

Zitat:
Ich weiß, dass die Variable nicht deklariert ist - nur komischerweise geht's trotdem...
Nur, weil PHP so weichherzig ist...

Zitat:
(register_globals = "0"!!!) O.o
Hat damit nur leider nichts zutun...

Zitat:
Ich möchte die exakte Anzahl, wie oft mysql_query() ausgeführt wird/wurde und wenn ich die Klasse "mysql" in der Klasse "tools" so nutze, wie es momentan der Fall ist, zählt er die Queries, die in der tools-Klasse ausfgeführt werden, nicht mit - und genau DAS möchte ich mit eurer Hilfe ändern, weil ich hab 2 Wochen rumgebastelt und es will trotzdem nicht!
Try this one:
PHP-Code:
<?php
    
class mysql
    
{
        static 
$query_count;
        
        function 
get_query_count()
        {
            return 
self::$query_count;
        }
        
        function 
query()
        {
            
self::$query_count++;
            return 
true;
        }
    }
    
    class 
tools extends mysql
    
{
        function 
query2()
        {
            
$this->query();
            return 
true;
        }
    }
    
    
$tool = new tools();
    
$tool2 = new tools();
    
    
$tool->query2();
    
$tool->query2();
    
    
$tool2->query2();
    
$tool2->query2();
    
    echo 
$tool->get_query_count();
?>
Gibt bei mir ne 4 aus, allerdings hab ich PHP5, ich weiß nicht ob das Schlüsselwort "static" in 4 schon funktioniert...
Wenn es nicht funktioniert, geh und hole dir Version5, ist für OOP besser geeignet. Eben für solche Anwendunszwecke, wie du ihn grade hast, existiert nämlich das Schlüsselwort static, was eine Variable klassenweit zugänglich macht.


Und bricht deinen verdammten Code um, nochmal sage ich es nicht...
Mit Zitat antworten
  #5 (permalink)  
Alt 26-02-2005, 23:28
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

brainstorming ist hier 100% perfekt gewählt ...

lasse mal das global raus. sowas hat in einer class nichts verloren.

ausserdem solltest du den gesamtcounter in der basis-class definieren.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #6 (permalink)  
Alt 27-02-2005, 01:01
Eagle
 Guest
Eagle
Beiträge: n/a
Standard

Zitat:
Original geschrieben von ghostgambler
Wenn du dir mal die Threads in den Kategorien angeschaut hättest (die Threadtitel hätten gereicht), wüsstest du es besser *hust*
Wie gesagt, ich hab mich an die Forenbeschreibung gehalten und Abraxax gibt mir ja Recht, dass das richtig war...


Zitat:
Original geschrieben von ghostgambler
gar nicht?
Du kannst höchstens überprüfen ob beide true sind und dann true zurückgeben, ansonsten eben false. Und wenn du es genauer willst, musst du noch ne Variable an die Funktion per Referenz übergeben, wo die Klasse dann ggf. eine Fehlermeldung reinschreibt.
Es gibt in PHP keine Möglichkeit, 2 Funktionswerte zurückzugeben?!? Das kann doch gar nicht sein?!? O.o
Wie dem auch sei, ich werd's mit deiner Variante probieren...


Zitat:
Original geschrieben von ghostgambler
kein Kommentar >_>
Was soll mir dieser Smilie sagen?!?


Zitat:
Original geschrieben von ghostgambler
Nur, weil PHP so weichherzig ist...
Möglich, aber vielleicht ist PHP genau deshalb so beliebt: es verzeiht kleinere Schnitzer...
Aber okay, ich deklarier's als Variable direkt zu Beginn der Klasse, wo Username und Password deklariert sind...


Zitat:
Original geschrieben von ghostgambler
Gibt bei mir ne 4 aus, allerdings hab ich PHP5, ich weiß nicht ob das Schlüsselwort "static" in 4 schon funktioniert...
Wenn es nicht funktioniert, geh und hole dir Version5, ist für OOP besser geeignet. Eben für solche Anwendunszwecke, wie du ihn grade hast, existiert nämlich das Schlüsselwort static, was eine Variable klassenweit zugänglich macht.
Auf meinem Webserver sind noch andere Accounts und ich muss mit der installierten PHP-Version leben - zurzeit ist das 4.3.10 und PHP 5 wird's so schnell nicht auf dem Server geben... :-/

Ansonsten bin ich dir zwar dankbar für deinen Code, aber 'ne kleine Erklärung was was in deinem Snippet tut, wär' echt hilfreich, denn in Sachen OOP bin ich zwar kein Anfänger, aber auch kein Profi - ich würd' mich selbst als "beginnenden Fortgeschrittenen" bezeichnen...


Zitat:
Original geschrieben von ghostgambler
Und bricht deinen verdammten Code um, nochmal sage ich es nicht...
Wenn du mal direkt auf die Edit-Zeit meines 1. Posts siehst, würdest du bemerken, dass ich direkt im Anschluss an meine Antwort auf deinen Kommentar meinen 1. Post geändert habe und ich hab' in Mozilla mit AKTIVER Sidebar auch nur etwa 1000 Pixel Platz für die Websiten - und bei mir ist nix mit vertikalem Scrolling...
Aber es gibt da so 'n Add-On in JavaScript, hat einer bei WebmasterPro im Forum mal geschrieben - das bettet Code als IFrame ein und hat so ein "+"-Zeichen vorne dran, was den Code normal darstellt (mit Scrollbalken im IFrame) oder halt ohne Scrollbalken und dafür eventuell das Layout "zerfetzend"...


Zitat:
Original geschrieben von Abraxax
brainstorming ist hier 100% perfekt gewählt ...

lasse mal das global raus. sowas hat in einer class nichts verloren.

ausserdem solltest du den gesamtcounter in der basis-class definieren.
Danke, also war meine Überlegung doch richtig!

Hmm, das mit dem "global raus" hab ich gemacht - allerdings bekomme ich dann keine Query-Generation-Time und auch keine Queries-Anzahl mehr zurück, da steht dann einfach nix, wo sonst die Zeit / Anzahl steht...
Und warum hat das "global" da drin nix verloren?!?
Ich denke, "global" macht Variablen auch außerhalb von Funktionen/Klassen verfügbar?!? O.o

Was verstehst du unter "Gesamtcounter"?!?

Geändert von Eagle (27-02-2005 um 01:12 Uhr)
Mit Zitat antworten
  #7 (permalink)  
Alt 27-02-2005, 10:06
JfK
 Newbie
Links : Onlinestatus : JfK ist offline
Registriert seit: Feb 2005
Beiträge: 13
JfK ist zur Zeit noch ein unbeschriebenes Blatt
JfK eine Nachricht über ICQ schicken
Standard

Zitat:
Original geschrieben von Eagle
Es gibt in PHP keine Möglichkeit, 2 Funktionswerte zurückzugeben?!? Das kann doch gar nicht sein?!? O.o
Wie dem auch sei, ich werd's mit deiner Variante probieren...
Naja, eine Möglichkeit gäbe es da.
Du fasst 2 Variablen in einer zusammen, trennst sie durch ein Zeichen, dass 100% nicht in einer der Variablen vorkommt und danach ziehst du sie anhand des trennenden Zeichens wieder außeinander



Zitat:
Original geschrieben von Eagle
Ich denke, "global" macht Variablen auch außerhalb von Funktionen/Klassen verfügbar?!?
Nein, nur IN Funktionen.
Mit Zitat antworten
  #8 (permalink)  
Alt 27-02-2005, 10:20
ghostgambler
 Master
Links : Onlinestatus : ghostgambler ist offline
Registriert seit: Jul 2004
Ort: DE - NRW
Beiträge: 4.620
ghostgambler ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Eagle
Wie gesagt, ich hab mich an die Forenbeschreibung gehalten und Abraxax gibt mir ja Recht, dass das richtig war...
persönliche Ansichtssache...hier helfen nicht soviele Leute wie in der anderen Kategorie!

Zitat:
Es gibt in PHP keine Möglichkeit, 2 Funktionswerte zurückzugeben?!? Das kann doch gar nicht sein?!? O.o
Wie dem auch sei, ich werd's mit deiner Variante probieren...
Doch, als Array aber das willst du nicht haben!

Zitat:
Auf meinem Webserver sind noch andere Accounts und ich muss mit der installierten PHP-Version leben - zurzeit ist das 4.3.10 und PHP 5 wird's so schnell nicht auf dem Server geben... :-/
Frag einfach mal deinen Provider, bei all-inkl bieten die auf Nachfrage auch Version5 an!

Zitat:
Ansonsten bin ich dir zwar dankbar für deinen Code, aber 'ne kleine Erklärung was was in deinem Snippet tut, wär' echt hilfreich, denn in Sachen OOP bin ich zwar kein Anfänger, aber auch kein Profi - ich würd' mich selbst als "beginnenden Fortgeschrittenen" bezeichnen...
eigentlich war der Code nicht zum Verstehen, sondern ich wollte einfach nur wissen, ob er bei der eine 4 ausgibt oder ne Fehlermeldung oder sonstwas.
Wenn ich weiß dass es bei dir funktioniert, erklär ich dir den Code auch, ansonsten wäre es vergeudete Zeit meinerseits und im Anbetracht, dass ich noch ein Referat machen muss, spar ich mir die Zeit dann momentan lieber auf!

Zitat:
Wenn du mal direkt auf die Edit-Zeit meines 1. Posts siehst, würdest du bemerken, dass ich direkt im Anschluss an meine Antwort auf deinen Kommentar meinen 1. Post geändert habe und ich hab' in Mozilla mit AKTIVER Sidebar auch nur etwa 1000 Pixel Platz für die Websiten - und bei mir ist nix mit vertikalem Scrolling...
Momentan ist da auch nix mehr, aber als ich meinen zweiten Post abgeschickt hatte, war da unten bei mir noch ein Balken _-_

Zitat:
Hmm, das mit dem "global raus" hab ich gemacht - allerdings bekomme ich dann keine Query-Generation-Time und auch keine Queries-Anzahl mehr zurück, da steht dann einfach nix, wo sonst die Zeit / Anzahl steht...
@Abraxax:
ganz so einfach ist es nicht

Zitat:
Und warum hat das "global" da drin nix verloren?!?
Ich denke, "global" macht Variablen auch außerhalb von Funktionen/Klassen verfügbar?!? O.o
global ist böse!!!
Nur in allernötigsten Notfällen nutzen, eigentlich gibt es immer auch ne andere Möglichkeit!
Mit Zitat antworten
  #9 (permalink)  
Alt 27-02-2005, 10:32
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

ghostgamblers code für php < 5:
PHP-Code:
<?php
class mysql
    
{
        var 
$query_count=0;

        function 
query()
        {
            
$this->query_count++;
            return 
true;
        }
    }

    class 
tools extends mysql
    
{
        function 
query2()
        {
            
parent::query();
            return 
true;
        }
    }

    
$tool = new tools();
    
$tool->query2();
    
$tool->query2();
    
$tool->query2();
    
$tool->query2();
    echo 
$tool->get_query_count;  // direkte abfrage der var
?>
@eagle
wenn du deine werte nicht innerhalb der class ablegst sondern (statt $this->var ... $var benutzt), darfst du dich nicht wundern, wenn die nach dem return aus der methode futsch sind. legst du sie jedoch in klassenvariablen ab, sind alle werte solange verfügbar, wie sie nicht überschrieben werden, bzw. das script läuft.
__________________
Kissolino.com
Mit Zitat antworten
  #10 (permalink)  
Alt 27-02-2005, 10:32
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Original geschrieben von ghostgambler
persönliche Ansichtssache...hier helfen nicht soviele Leute wie in der anderen Kategorie!
deswegen verschieben wir wohl andauernd immer deine threads in das richtige forum.

hör auf so zu denken, und poste immer im passenden forum.

Zitat:
Original geschrieben von JfK
Du fasst 2 Variablen in einer zusammen, trennst sie durch ein Zeichen, dass 100% nicht in einer der Variablen vorkommt und danach ziehst du sie anhand des trennenden Zeichens wieder außeinander
das ist ja absoluter humbug. sowas habe ich ja noch nie gehört. arrays sind hier die einzige sinnvolle lösung.

alternativ sind eben classen, welche die variablen innerhalb der class verwenden.

Zitat:
Original geschrieben von Eagle
Hmm, das mit dem "global raus" hab ich gemacht - allerdings bekomme ich dann keine Query-Generation-Time und auch keine Queries-Anzahl mehr zurück,
nunja ... du musst natürlich nun in der class selber die werte verwalten und nicht mehr ausserhalb, wie du es bisher gemacht hast, und absolut keinen sinn bei classen macht.
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #11 (permalink)  
Alt 27-02-2005, 10:36
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

@wurzel
PHP-Code:
// falsch
echo $tool->get_query_count;  // direkte abfrage der var

// richtig
echo $tool->query_count;  // direkte abfrage der var

// besser auch ohne direkte abfrage. aber das weisst du ja auch. ;-)
// in der class mysql noch dies einfügen.
function get_query_count()
{
    return 
$this->query_count;
}

// und im hauptscript dann bitte ...
echo $tool->get_query_count(); 
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #12 (permalink)  
Alt 27-02-2005, 10:59
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

*hupps, vertippt

die direkte var-abfrage habe ich extra gemacht ... aber was weisst du schon
__________________
Kissolino.com
Mit Zitat antworten
  #13 (permalink)  
Alt 27-02-2005, 11:00
Abraxax
  THE REAL HAXE (Administrator)
Links : Onlinestatus : Abraxax ist offline
Registriert seit: Jul 2002
Ort: neuss.nrw.de
Beiträge: 22.623
Abraxax befindet sich auf einem aufstrebenden Ast
Standard

OffTopic:
Zitat:
Original geschrieben von Wurzel
aber was weisst du schon
du mich auch ...
__________________
INFO: Erst suchen, dann posten! | MANUAL(s): PHP | MySQL | HTML/JS/CSS | NICE: GNOME Do | TESTS: Gästebuch | IM: Jabber.org |


Mit Zitat antworten
  #14 (permalink)  
Alt 27-02-2005, 11:02
Wurzel
 Master
Links : Onlinestatus : Wurzel ist offline
Registriert seit: Jul 2002
Ort: double-u-upper-valley
Beiträge: 7.477
Wurzel ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Original geschrieben von Abraxax
OffTopic:
du mich auch ...
OffTopic:
da fehlt mindestens ein verb
/ot
__________________
Kissolino.com
Mit Zitat antworten
  #15 (permalink)  
Alt 27-02-2005, 11:57
Eagle
 Guest
Eagle
Beiträge: n/a
Standard

Zitat:
Original geschrieben von Wurzel
@eagle
wenn du deine werte nicht innerhalb der class ablegst sondern (statt $this->var ... $var benutzt), darfst du dich nicht wundern, wenn die nach dem return aus der methode futsch sind. legst du sie jedoch in klassenvariablen ab, sind alle werte solange verfügbar, wie sie nicht überschrieben werden, bzw. das script läuft.
Ups, stimmt...

Naja, ich hab das jetzt mal geändert und der Code für die 2 Klassen sieht nun so aus:

PHP-Code:
class mysql
{
    var 
$database 'DB_NAME';
    var 
$hostname 'localhost';
    var 
$username 'user';
    var 
$password 'pass';
    var 
$mysqldbQuery 0;
    var 
$fetchedQuery 0;
    var 
$numrowsQuery 0;
    var 
$sql_gentime 0;
    var 
$sql_queries 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->open;
        return 
$this->select;    /* hier muss ich noch was ändern,
                                weil ich die Öffnung der Verbindung
                                und das auswählen der DB in EINER
                                Funktion haben will. Ich weiß
                                aber nach wie vor nicht, wie ich
                                das machen kann... :/ */
    
}

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

        !isset(
$this->sql_queries) ? $this->sql_queries '0' $this->sql_queries++;
        !isset(
$this->sql_gentime) ? $this->sql_gentime '0.000' :
$this->sql_gentime round(($this->sql_endtime $this->sql_starttime), 3) + $this->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-Code-Funktionen...
    
}

    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

Jetzt zeigt er zwar wieder SQL-Generation-Time und Query-Anzahl an, allerdings ist die Zahl nicht korrekt!
Denn alle Queries, die ich in der Tools-Klasse in der usage()-Funktion tätige zählt er nicht mit, die Endzahl für die Queries-Anzahl ist genau um diese 4 Queries zu niedrig...

Geändert von Eagle (27-02-2005 um 12:01 Uhr)
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an


PHP News

PHP Marktplatz-Software
PHP Marktplatz-SoftwareEs hat sich viel getan! Die neue Version 7.5.9 unserer PHP Marktplatz-Software ebiz-trader steht ab sofort zur Verfügung.

28.10.2019 | Berni

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni


 

Aktuelle PHP Scripte

SMT

Server Monitoring & Management Tool Das SMT wurde von einem Administrator für Administratoren entwickelt, es vereinfacht den Alltag in der klassischen Administration und Verwaltung. Mit dem SMT kannst Du alle Deine Server & Dienste verwalten und überwach

04.09.2020 palle_1977 | Kategorie: PHP
numaeks Web-Farbmixer

Die RGB-Farben lassen sich hier auf unterschiedliche Weise mischen. Zur Einstellung werden auch die Dreh- und Schieberegler mit Canvas verwendet. Gespeichert werden die Farben in einem Cookie.

04.09.2020 numaek | Kategorie: JAVASCRIPT/ Tools
phplinX-Erotikportal 4 ansehen phplinX-Erotikportal 4

Erweiterbares Portal speziell für Erotik mit den Modulen Webkatalog, Bannermanagement und Kleinanzeigenmarkt. Sämtliche Module können über einen einzigen Adminbereich verwaltet werden.

18.06.2020 Cosinus14 | Kategorie: PHP/ Anzeigenmarkt
 Alle PHP Scripte anzeigen

Alle Zeitangaben in WEZ +2. Es ist jetzt 22:26 Uhr.