Anzeige:
Ergebnis 1 bis 6 von 6

Thema: PHP-Framework, DB-Classes

  1. #1
    Registrierter Benutzer
    Registriert seit
    05.08.2004
    Beiträge
    8

    PHP-Framework, DB-Classes

    Hallo zusammen,
    Ich muss nächstens ein PHP-Projekt realisieren. Jetzt möchte ich nicht das Rad neu erfinden und alle MySQL-Funktionen z.b selber schreiben. Einige Frameworks habe ich mir angeschaut, diese sind aber z.T. viel zu gross -> PRADO.
    Gibt es ganz schlanke Frameworks, wo ich z.b nur Teile benutzen kann, oder noch besser, nur fertige Klassen die ich verwenden kann?

    Gruss,
    Chrigu

  2. #2
    Registrierter Benutzer
    Registriert seit
    22.08.2002
    Ort
    Nürnberg
    Beiträge
    638
    Wie wäre es mit dem zu PHP gehörenden Projekt: PEAR?

    Pingu
    Homepage: www.pingu.info

  3. #3
    Registrierter Benutzer Avatar von Gaert
    Registriert seit
    09.05.2002
    Ort
    Nußloch
    Beiträge
    1.317
    Hallo,

    ich verwende für mein Framework auch PEAR DB, allerdings gekapselt in einer Static Klasse, damit nur ein einziges mal die Datenbankverbindung geöffnet werden muss.
    http://pear.php.net/package/DB

    Gruß,

    Gaert


  4. #4
    Registrierter Benutzer
    Registriert seit
    05.08.2004
    Beiträge
    8
    *D'oh*
    Das Einfachste ist mir selber nicht in den Sinn gekommen
    Danke, ist genau was ich gesucht habe..

    Gruss,
    Chrigu

  5. #5
    Registrierter Benutzer
    Registriert seit
    15.10.2005
    Ort
    Franken
    Beiträge
    362
    Also mit Pear bin ich überhaupt nicht zufrieden.
    Datenbankklassen gibt es zu hauf, hier mal meine Ausprägung davon:
    PHP-Code:
    <?
    /**
    * Stellt eine Datenbankverbindung zu einer MySQL-Datenbank her
    * @package THR_lib
    * @version 2.1
    * @author Michael Baumann aka Turbohummel
    * @author Hans Markow aka Randomizer
    */

    $con = false;


    class DB {
      var $counter, $db_name, $db_host, $db_user, $db_password, $dblink, $result, $last;

      /**
      * Erzeugt das Datenbankobjekt
      */
      function DB(){
        global $con;
        $this->db_host = DB_HOST;
        $this->db_user = DB_USER;
        $this->db_pw = DB_PASSWORD;
        $this->db_name = DB_NAME;
        $this->counter = 0;
        
        if($con == false){
          $this->dblink = @mysql_connect($this->db_host, $this->db_user ,$this->db_pw)
            or die('FEHLER 113 - NO DATABASE SERVER ON THIS DATA');
          $con = $this->dblink;
          mysql_select_db($this->db_name)
            or die ('FEHLER 118 - DATABASE NOT FOUND');
        } else {
          $this->dblink = $con;
        }
      }

      /**
      * Setzt eine Anfrage an die Datenbank ab
      */
      function query($sql){
        $this->last = $sql;
        $this->result = mysql_query($sql);
        $this->counter ++;
        return $this->error_report(true);

      }

      /**
      * Baut eine einfache SELECT-Abfrage zusammen und setzt sie ab
      */
      function select($table, $fields = '*'){
        $sql = 'SELECT '.$fields.' FROM '.$table;
        return $this->query($sql);
      }
      
      /**
      * Escaped einen String für sichere Benutzung in der Datenbank
      */
      function escape($string, $quotes = true){
        $buffer =  mysql_escape_string($string);
        if($quotes) return '"'.$buffer.'"';
        else return $buffer;
      }
      
      /**
      * Descaped einen String, der für die Datenbank escaped wurde.
      */
      function descape($string){
        return stripslashes($string);
      }
      
      /**
      * Liefert den Fehler einer Abfrage
      */
      function error_report($expand = false){
        if(mysql_errno() != 0){
          $msg =  'FEHLER 126 - DATABASE ERROR: '.mysql_errno();
          if($expand) $msg .= ' - '.mysql_error().'<br /> Query:<pre>'.$this->last.'</pre>';
          die($msg);
          return false;
        }
        else return true;
      }
      
      /**
      * Liefert die Anzahl der betroffenen Datensätze
      */
      function affected(){
        $anz = @mysql_affected_rows($this->dblink);
        if($anz) return $anz;
        else return 0;
      }
      
      /**
      * Liefert den nächsten Datensatz
      */
      function next_record(){
        return @mysql_fetch_assoc($this->result);
      }

      /**
      Liefert ein Element des nächsten datendatzes
      */
      function next_col($col){
        if($buffer = $this->next_record()){
          return $buffer[$col];
        }
        return false;
      }
      
      
      /**
      * Liefert alle Datensätze der letzten Abfrage, indizierung 1 - n oder $index
      */
      function all_records($index = false){
        $erg = array();
        while($buffer = $this->next_record()){
          if($index){
            $erg[$buffer[$index]] = $buffer;
          } else {
            $erg[] = $buffer;
          }
        }
        return $erg;
      }

      /**
      * Gibt die ID des letzten Inserts zurück
      */
      function last_insert(){
        return @mysql_insert_id($this->dblink);
      }


      /**
      * Gibt ein Array aus
      */
      function dump($erg){
        echo $this->last;
        echo '<pre>';
        var_dump($erg);
        echo '</pre>';
      }
      
      /**
      * Lieft den nächsten Datensatz als numerisches Array
      */
      function next_row() {
        return @mysql_fetch_row($this->result);
      }
      
    }

    ?>
    Selbstverständlich zur freien Verwendung.
    DB_HOST; DB_USER; DB_PASSWORD; DB_NAME;
    sind über define() erzeugt worden.

    Eine Version für PHP5 und MySQL5, sowie ein Transaktionsmodell, ist zur Zeit in Entwicklung, aber noch nicht ganz ausgereift, da ich ernsthaft erst seit ein paar Tagen mit PHP5 arbeite (vorher habe ich nur damit rumgespielt).
    Geändert von Turbohummel (21-02-2006 um 15:31 Uhr)
    Dank der Rekursion kann ich IF-Schleifen bauen.

    In neuem Glanz: www.turbohummel.de

  6. #6
    Registrierter Benutzer
    Registriert seit
    05.08.2004
    Beiträge
    8
    Zitat Zitat von Turbohummel
    Also mit Pear bin ich überhaupt nicht zufrieden.
    Warum? Ich hab mir jetz DB angeschaut und Sigma, sieht ziemlich toll aus!

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •