Page 1 sur 1

Class sql

Posté : 29 avr. 2007, 22:46
par dunbar
Bonsoir,
<?php
class sql
    {
    var $nbr_queries = 0;


    function sql($host,$user,$pass,$db)
        {
        $this->connect = mysql_connect($host,$user,$pass);
        if ($this->connect !== FALSE)
            {
            $this->db = mysql_select_db($db,$this->connect);
            if ($this->db === FALSE)
                {
                mysql_close($this->connect);
                $this->connect = FALSE;
                die('Impossible de sélectionner une base de données.');
                }
            return TRUE;
            }
        die('Impossible de se connecter à la base de données.');
        }


    function sql_close($int)
        {
        if ($this->connect !== FALSE)
            {
            $this->connect = mysql_close($this->connect);
            if ($int === 1) { echo '<p>Il y a eu '.$this->nbr_queries.' requêtes.</p>'; }
            return $this->connect;
            }
        return FALSE;
        }


    function sql_change_db($db)
        {
        if ($this->connect !== FALSE)
            {
            $this->db = mysql_select_db($db,$this->connect);
            if ($this->db === FALSE)
                {
                mysql_close($this->connect);
                $this->connect = FALSE;
                die('Impossible de sélectionner une base de données.');
                }
            return TRUE;
            }
        return FALSE;
        }


    function sql_query($query,$fetch_array = FALSE)
        {
        $this->query = $query;
        if (!empty($this->query) AND $this->connect !== FALSE)
            {
            $this->result = mysql_query($this->query,$this->connect);
            $this->nbr_queries++;
            $this->error = ($this->result === FALSE) ? TRUE : FALSE;
            if ($fetch_array AND !$this->error)
                {
                $this->result = mysql_fetch_array($this->result);
                $this->error = ($this->result === FALSE) ? TRUE : FALSE;
                }
            $this->result = ($this->error) ? $this->query."\n".mysql_errno($this->connect).' : '.mysql_error($this->connect) : $this->result;
            if ($this->error) die($this->result);
            return $this->result;
            }
        $this->error = TRUE;
        $this->result = 'La requète SQL est vide.';
        die($this->result);

        }


    function sql_table($table,$db = '',$like = '')
        {
        $db = (empty($db)) ? '' : ' FROM `'.$db.'`';
        $like = (empty($like)) ? '' : " LIKE '$like'";
        $this->query = 'SHOW TABLES'.$db.$like;
        $this->result = $this->sql_query($this->query);
        $isset_table = FALSE;
        while ($result_table = mysql_fetch_array($this->result))
            {
            if (is_array($table))
                {
                foreach ($table as $value)
                    {
                    $isset_table = ($result_table[0] == $value) ? TRUE : $isset_table;
                    }
                }
            else
                {
                $isset_table = ($result_table[0] == $table) ? TRUE : $isset_table;
                }
            }
        return $isset_table;
        }
    }
?>
Je suis tomber là dessus sur un autre poste, qui pourrais m'expliquer le principe exact de cette class et surtout quelle avantage possede t'elle par apport un simple fichier connect ?
Merci

Posté : 29 avr. 2007, 23:00
par Sékiltoyai
Les classes sont très utiles, elles permettent de regroupper en une entitée les données et les méthodes de traitement de ces données, de manière à rationnaliser le traitement.

Ici, le but est d'avoir une entité qui gère totalement la ressource sql, qui gère les erreurs. Il y a une grosse majorité du code que l'on n'a pas à réécrire, et on ne met pas des morceaux un peu partout, ensuite l'objet créé connait sa ressource, donc il n'y a pas à se trimballer avec 36 variables pour gérer sa connexion. Enfin, si on modifie une partie de la manière dont on veut traiter les requètes sql, tout est au même endroit, on peut facilement faire les changements.