Ankündigung

Einklappen
Keine Ankündigung bisher.

Klasse an einem Beispiel erklären!

Einklappen

Neue Werbung 2019

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

  • Klasse an einem Beispiel erklären!

    Kann mir jemand erklären was man mit dieser Klasse machen kann, wenn es geht mit einem Beispiel!
    Die Funktion conn_db verstehe ich da wird die Datenbank geöffnet!
    Aber was helfen mir die anderen Funktionen? Wenn mir das einer erklären kann! Wäre super nett! Ich komm einfach nicht weiter!

    Hier die Klasse:
    class db {

    var $db_conn = false;
    var $db_host = "localhost";
    var $db_user = "";
    var $db_pass = "";
    var $db_name = "";

    // Variablendefinitionen
    var $sql = 0;
    var $row = 0;
    var $num_rows = 0;
    var $num_fields= 0;
    var $last_id = 0;
    var $select_id = "";
    var $error = "";
    var $spalte = "";
    var $tables = "";

    function connect_db() {
    $this->db_conn = mysql_connect($this->db_host, $this->db_user, $this->db_pass)
    or die($this->get_mysql_error("Konnte keine Verbindung herrstellen"));
    mysql_select_db($this->db_name, $this->db_conn) or $this->get_mysql_error("Konnte Datenbank nicht finden!");
    }

    function disconnect() {
    mysql_close($this->db_conn);
    }

    function query() {
    $this->error = "";
    $this->result = mysql_query($this->sql,$this->db_conn);
    if (mysql_error()) {$this->error = mysql_error();return;}
    $this->num_rows = mysql_num_rows($this->result);
    if (mysql_error()) {$this->error = mysql_error();return;}
    $this->num_fields = mysql_num_fields($this->result);
    }

    function insert() {
    $this->error = "";
    $this->query();
    if ($this->error) return;
    $this->last_id=mysql_insert_id();
    $this->error=mysql_error();
    }

    function fetch_row() {
    $this->error = "";
    $content = @mysql_fetch_row($this->result);
    $this->error = mysql_error();
    return $content;
    }

    function fetch_array() {
    $this->error = "";
    $content = @mysql_fetch_array($this->result);
    $this->error = mysql_error();
    return $content;
    }


    }
    Ich verzweifle!


  • #2
    Code:
    <?php
    
    class db {
    
        var $db_conn = false;
        var $db_host = "localhost";
        var $db_user = "";
        var $db_pass = "";
        var $db_name = "triowestag";
    
        // Variablendefinitionen
        var $sql = 0;
        var $row = 0;
        var $num_rows = 0;
        var $num_fields= 0;
        var $last_id = 0;
        var $select_id = "";
        var $error = "";
        var $spalte = "";
        var $tables = "";
    
        function connect_db() {
            $this->db_conn = mysql_connect($this->db_host, $this->db_user, $this->db_pass)
            or die($this->get_mysql_error("Konnte keine Verbindung herrstellen"));
            mysql_select_db($this->db_name, $this->db_conn)
            or $this->get_mysql_error("Konnte Datenbank nicht finden!");
        }
    
        function disconnect() {
            mysql_close($this->db_conn);
        }
    
        function query() {
            $this->error = "";
            $this->result = mysql_query($this->sql,$this->db_conn);
            if (mysql_error()) {
                $this->error = mysql_error();
                return;
            }
            $this->num_rows = mysql_num_rows($this->result);
            if (mysql_error()) {
                $this->error = mysql_error();
                return;
            }
            $this->num_fields = mysql_num_fields($this->result);
        }
    
        function insert() {
            $this->error = "";
            $this->query();
            if ($this->error) return;
            $this->last_id=mysql_insert_id();
            $this->error=mysql_error();
        }
    
        function fetch_row() {
            $this->error = "";
            $content = @mysql_fetch_row($this->result);
            $this->error = mysql_error();
            return $content;
        }
    
        function fetch_array() {
            $this->error = "";
            $content = @mysql_fetch_array($this->result);
            $this->error = mysql_error();
            return $content;
        }
    } 
    
    // Klasse starten
    $mysql = &new DB();
    
    // MySQL-Daten
    $mysql->db_host = 'localhost';
    $mysql->db_user = 'root';
    $mysql->db_pass = '****';
    $mysql->db_name = 'xxxxxx';
    // Verbindung aufbauen
    $mysql->connect_db();
    
    // mysql_query
    $mysql->sql = 'SELECT * FROM user WHERE ID=1';
    $mysql->query();
    
    ?>
    so in etwa? habs nun nicht getestet. Habs aber mal ein wenig kommentiert.

    Kommentar


    • #3
      Kannst Du mir erklären was da gemacht wird?
      Wie sieht das ganze aus wenn ich ein mysql_fetch_array mache?
      Fragen über Fragen!

      Kommentar


      • #4
        Code:
        /* ... */
        
        // Klasse starten
        $mysql = &new DB();
        
        // MySQL-Daten
        $mysql->db_host = 'localhost';
        $mysql->db_user = 'root';
        $mysql->db_pass = '****';
        $mysql->db_name = 'xxxxxx';
        // Verbindung aufbauen
        $mysql->connect_db();
        
        // mysql_query
        $mysql->sql = 'SELECT * FROM user WHERE ID=1';
        $mysql->query();
        
        // mysql_fetch_array
        $mysql->fetch_array();
        
        ?>
        glaube ich zumindest :!

        Kommentar


        • #5
          Das heißt im Klartext das ich mir Schreibarbeit mit einer Klasse einspare, zwar nicht viel aber es leppert sich!

          Wie verhält sich das ganze kommt kein Konflikt mit der Variablenbelegung auf?

          Kommentar


          • #6
            Zitat von alter mann
            Das heißt im Klartext das ich mir Schreibarbeit mit einer Klasse einspare, zwar nicht viel aber es leppert sich!
            Die Klasse ist auch reichlich umständlich.

            Wie verhält sich das ganze kommt kein Konflikt mit der Variablenbelegung auf?
            Nein, weil die Klassenvariablen nicht im globalen Namensraum verfügbar sind.

            Kommentar


            • #7
              Die Klasse ist auch reichlich umständlich.
              Wie kann man denn das besser schreiben?

              Kommentar


              • #8
                Zitat von alter mann
                Die Klasse ist auch reichlich umständlich.
                Wie kann man denn das besser schreiben?
                - für die Logindaten Konstanten verwenden (die sind auch innerhalb einer Klasse gültig).
                - den SQL String gleich bei $instanz->query($sql) übergeben können.

                ein paar weiter Methoden fehlen:
                - das Abholen eines Datensatzes bei Übergabe eines SELECT Strings
                - das Abholen eines numerisch und assoziativen Ergebnis Arrays bei Übergabe eines SELECT Strings
                - bei INSERT und UPDATE muß das Ergebnis entweder false oder true sein

                Für beide Fälle eine entsprechende Methode, die aus einem assoziativen Array den SQL String ergänzt. usw.

                OOP soll ja die Programmierung vereinfachen.

                Kommentar

                Lädt...
                X