Annonce

#1 2006-03-24 18:06:00

GoldenEye
Membre
Inscription : 2006-03-24
Messages : 7

Re : Une class SQL

Salut, j'ai créé une class SQL qui est sous license GPL (GNU) j'aimerais votre avis:

<?php
/***************************************************************************
 *               sql_pusher.class.php
 *            ------------------------
 *       commencé                   : 19/03/2006
 *       copyright                 :  GoldenEye
 *       mail                                   :  goldeneye@jeuxvideopop.info
 *       site web de l'auteur         :  http://www.jeuxvideopop.info
 *      version du programme     : 2 beta 2
 *        dernière modification     : 22 mars 2006
 *
 *
 ***************************************************************************/

/***************************************************************************
*
*  Ce programme est un programme libre; vous pouvez le reditribuer et/ou le modifier
*  sous les termes de la GNU (License au grand public) publié par
*  la Free Software Foudation (FSF);
*
*
****************************************************************************/

/***************************************************************************
 *
 *  This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *
 ***************************************************************************/
//Déclaration de la class SQL
class sql
    {
    //Déclaration de la variable $nbr_requete et mise à zéro de cette variable
    var $nbr_requete = 0;
    //Déclaration de la fonction connect (Pour se connecter à MySQL)
    function connect($host,$username,$password,$database)
        {
        //Connexion à mysql
        $this->connect = @mysql_connect($host,$username,$password);
        //Si on est connecté (si la valeur de $this->connect est différente de FALSE)
        if ($this->connect !== FALSE)
            {
            //On selectionne la Base de donnée souhaitée
            $this->database = @mysql_select_db($database,$this->connect);
            //Si la valeur de $this->database est identique à FALSE (impossible de selectionner la BDD)
            if ($this->database === FALSE)
                {
                //Deconnection de MySQL (puisque la base de donnée n'a pas été selectionnée)
                @mysql_close($this->connect);
                //Et on prévient que la variable $this->connect va valoir FALSE
                $this->connect = FALSE;
                //On tue la phrase d'erreur et on la remplace
                die('Impossible de selectionner la Base de Donnée.');
                }
                //$this->connect va retourner TRUE
                return TRUE;
                }
            //Si la connexion ne s'est pas effectuée   
            die('Impossible de se connecter à la Base de donnée.');
        }
    //Déclaration de la fonction close (Pour fermer MySQL)      
    function close()
        {
        //Si on est connecté à MySQL
        if ($this->connect !== FALSE)
            {
            //Deconnection à MySQL
            $this->connect = @mysql_close($this->connect);
            return $this->connect;
            }
        //Si $this-connect vaut TRUE   
        else ($this->connect === FALSE)
            {
            //On prévient qu'on est pas connecté à MySQL
            die('Veuillez supprimer la fonction close du fichier', __FILE__,' ligne', __LINE__ );
            }
            //$this->connect retourne à présent FALSE (donc non connecté)   
            return FALSE;
        }
    //Déclaration de la fonction change_db (pour changer de base de donnée)   
    function change_db($database)
        {
        //Si on est connecté à MySQL
        if ($this->connect !== FALSE)
            {
            //On choisi la base de donnée
            $this->database = @mysql_select_db($database,$this->connect);
            //Si le changement de base de donnée echoue
            if ($this->database === FALSE)
                {
                //On ferme la connexion
                @mysql_close($this->connect);
                //On déclare que $this->connect vaut FALSE
                $this->connect = FALSE;
                //Et on affiche l'erreur
                die('Impossible de changer de Base de donnée.');
                }
            //Si le changement a réussi, on retourne $this->database comme TRUE
            return TRUE;
            }
        //Sinon on retourne FALSE   
        return FALSE;
        }
    //On déclare la fonction query   
    function query($query)
        {
        //On prévient un changement de variable
        $this->query = $query;
        //Si $this->query et vide et que $this->connect ne retourne pas FALSE
        if (!empty($this->query) AND $this->connect !== FALSE)
            {
            //On execute la requête
            $this->result = @mysql_query($this->query,$this->connect);
            //Et on ajoute une requête en plus à chaque requête effectués
            $this->nbr_requete++;
            return TRUE;
            }
        //Sinon   
        else
            {
            //On affiche une erreur de reqêuete et de connection
            die('La requête SQL est vide ou vous n\'êtes pas connecté.');
            //On retourne false
            return FALSE;
            }
        }
    //On déclare la fonction fetch_array   
    function fetch_array($this->result)
        {
        //Si on est connecté et qu'il y a une requête
        if ($this->connect !== FALSE AND $this->query !== FALSE)
            {
            //On fait le mysql_fetch_array
            $this->row = @mysql_fetch_array($this->result);
            //Et on retourne TRUE
            return TRUE;
            }
        //Sinon   
        else
            {
            //On affiche une erreur
            die('Vous n\'êtes pas connecté et/ou il n\'y a pas de requête.');
            //On retourne FALSE
            return FALSE;
            }
        }
    //On déclare la fonction query_fetch_array   
    function query_fetch_array($query)
            {
        //On prévient un changement de variable
        $this->query = $query;
        //Si $this->query et vide et que $this->connect ne retourne pas FALSE
        if (!empty($this->query) AND $this->connect !== FALSE)
            {
            //On execute la requête
            $this->result = @mysql_query($this->query,$this->connect);
            //On fait le mysql_fetch_array
            $this->row = @mysql_fetch_array($this->result);
            //Et on ajoute une requête en plus à chaque requête effectués
            $this->nbr_requete++;
            return TRUE;
            }
        //Sinon   
        else
            {
            //On affiche une erreur de reqêuete et de connection
            die('La requête SQL est vide et/ou vous n\'êtes pas connecté.');
            //On retourne false
            return FALSE;
            }
        }

    }
?> 

Hors ligne

#2 2006-03-24 18:15:57

Bobe
Administrateur
Lieu : La Rochelle
Inscription : 2002-05-27
Messages : 5 299

Re : Une class SQL

La ligne 87 n'est pas correcte:

die('Veuillez supprimer la fonction close du fichier', __FILE__,' ligne', __LINE__ );

die() n'accepte qu'un argument.

La déclaration de la fonction fetch_array() n'est pas bonne

function fetch_array($this->result)

Soit tu passes $result en argument, soit tu ne passes rien et tu utilises $this->result. Ça m'étonne que php ne te renvoie pas d'erreur pour cette ligne.


PHP et MySQL, un duo gagnant !

Hors ligne

#3 2006-03-24 18:18:17

GoldenEye
Membre
Inscription : 2006-03-24
Messages : 7

Re : Une class SQL

je comprend pas très bien et merci pour le signalement des erreurs (je suis seulement en beta 2)

Hors ligne

#4 2006-03-26 20:41:02

GoldenEye
Membre
Inscription : 2006-03-24
Messages : 7

Re : Une class SQL

Voila j'ai fait les modifications:

<?php
/***************************************************************************
 *                    sql_pusher.class.php
 *                ------------------------
 *    commencé              : 19/03/2006
 *    copyright            :  GoldenEye
 *        mail                                   :  goldeneye@jeuxvideopop.info
 *    site web de l'auteur         :  http://www.jeuxvideopop.info
 *        version du programme     : 2 beta 5
 *        dernière modification     : 22 mars 2006
 *        dernier debogage beta    : 5 
 *
 *
 ***************************************************************************/

/***************************************************************************
*
*  Ce programme est un programme libre; vous pouvez le reditribuer et/ou le modifier
*  sous les termes de la GNU (License au grand public) publié par
*  la Free Software Foudation (FSF); 
*
*
****************************************************************************/

/***************************************************************************
 *
 *  This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *
 ***************************************************************************/
//Déclaration de la class SQL
class sql
    {
    //Déclaration de la variable $nbr_requete et mise à zéro de cette variable
    var $nbr_requete = 0;
    //Déclaration de la fonction connect (Pour se connecter à MySQL)
    function connect($host,$username,$password,$database)
        {
        //Connexion à mysql
        $this->connect = @mysql_connect($host,$username,$password);
        //Si on est connecté (si la valeur de $this->connect est différente de FALSE)
        if ($this->connect !== FALSE)
            {
            //On selectionne la Base de donnée souhaitée
            $this->database = @mysql_select_db($database,$this->connect);
            //Si la valeur de $this->database est identique à FALSE (impossible de selectionner la BDD)
            if ($this->database === FALSE)
                {
                //Deconnection de MySQL (puisque la base de donnée n'a pas été selectionnée)
                @mysql_close($this->connect);
                //Et on prévient que la variable $this->connect va valoir FALSE
                $this->connect = FALSE;
                //On tue la phrase d'erreur et on la remplace
                die('Impossible de selectionner la Base de Donnée.');
                }
            //$this->connect va retourner TRUE
            return TRUE;
            }
        //Si la connexion ne s'est pas effectuée    
        die('Impossible de se connecter à la Base de donnée.');
        }
    //Déclaration de la fonction close (Pour fermer MySQL)        
    function close()
        {
        //Si on est connecté à MySQL
        if ($this->connect !== FALSE)
            {
            //Deconnection à MySQL
            $this->connect = @mysql_close($this->connect);
            return $this->connect;
            }
        //$this->connect retourne à présent FALSE (donc non connecté)    
        return FALSE;
        }
    //Déclaration de la fonction change_db (pour changer de base de donnée)    
    function change_db($database)
        {
        //Si on est connecté à MySQL
        if ($this->connect !== FALSE)
            {
            //On choisi la base de donnée
            $this->database = @mysql_select_db($database,$this->connect);
            //Si le changement de base de donnée echoue
            if ($this->database === FALSE)
                {
                //On ferme la connexion
                @mysql_close($this->connect);
                //On déclare que $this->connect vaut FALSE
                $this->connect = FALSE;
                //Et on affiche l'erreur
                die('Impossible de changer de Base de donnée.');
                }
            //Si     le changement a réussi, on retourne $this->database comme TRUE
            return TRUE;
            }
        //Sinon on retourne FALSE    
        return FALSE;
        }
    //On déclare la fonction query    
    function query($query)
        {
        //On prévient un changement de variable
        $this->query = $query;
        //Si $this->query et vide et que $this->connect ne retourne pas FALSE
        if (!empty($this->query) AND $this->connect !== FALSE)
            {
            //On execute la requête
            $this->result = @mysql_query($this->query,$this->connect);
            //Et on ajoute une requête en plus à chaque requête effectués
            $this->nbr_requete++;
            return TRUE;
            }
        //Sinon    
        else
            {
            //On affiche une erreur de reqêuete et de connection
            die('La requête SQL est vide ou vous n\'êtes pas connecté.');
            //On retourne false
            return FALSE;
            }
        }
    //On déclare la fonction fetch_array    
    function fetch_array($result)
        {
        $result = $this->result;
        //Si on est connecté et qu'il y a une requête
        if ($this->connect !== FALSE AND $this->query !== FALSE)
            {
            //On fait le mysql_fetch_array
            $this->row = @mysql_fetch_array($this->result);
            //Et on retourne TRUE
            return TRUE;
            }
        //Sinon    
        else
            {
            //On affiche une erreur
            die('Vous n\'êtes pas connecté et/ou il n\'y a pas de requête.');
            //On retourne FALSE
            return FALSE;
            }
        }
    //On déclare la fonction query_fetch_array    
    function query_fetch_array($query)
        {
        //On prévient un changement de variable
        $this->query = $query;
        //Si $this->query et vide et que $this->connect ne retourne pas FALSE
        if (!empty($this->query) AND $this->connect !== FALSE)
            {
            //On execute la requête
            $this->result = @mysql_query($this->query,$this->connect);
            //On fait le mysql_fetch_array
            $this->row = @mysql_fetch_array($this->result);
            //Et on ajoute une requête en plus à chaque requête effectués
            $this->nbr_requete++;
            return TRUE;
            }
        //Sinon    
        else
            {
            //On affiche une erreur de reqêuete et de connection
            die('La requête SQL est vide et/ou vous n\'êtes pas connecté.');
            //On retourne false
            return FALSE;
            }
        }

    } 
?>

malheuresement la fonction query_fetch_array a l'ai de boguer

Hors ligne

#5 2006-04-25 21:07:29

GoldenEye
Membre
Inscription : 2006-03-24
Messages : 7

Re : Une class SQL

Voila alors j'ai fais une grosse modification de ma class SQL qui en est déjà à ça version 3.0.0 comprenant 395 ligne. Elle est sous license GNU GPL (cf: www.gnu.org)
Elle est très complète, avec vous pouvez faire une SGBD facilement, la voici:

<?php
/***************************************************************************
 *                    sql_pusher.class.php
 *
 *    commencé              : 19/03/2006
 *    copyright            : GoldenEye
 *    mail                : goldeneye@jeuxvideopop.info
 *    site web de l'auteur    : http://www.jeuxvideopop.info
 *    version du programme    : 3.0.0
 *    dernière modification    : 25 avril 2006
 *
 *
 ***************************************************************************/

/***************************************************************************
*
*  Ce programme est un programme libre; vous pouvez le reditribuer et/ou le modifier
*  sous les termes de la GNU (License au grand public) publié par
*  la Free Software Foudation (FSF); 
*
*
****************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *
 ***************************************************************************/
//Déclaration de la class SQL
class sql
{
    //Déclaration de la variable $nbr_requete et mise à zéro de cette variable
    var $nbr_requete = 0;
    //Déclaration de la fonction connect (Pour se connecter à MySQL)
    function sql($host,$username,$password,$database)
    {
        //Connexion à mysql
        $this->connect = @mysql_connect($host,$username,$password);
        //Si on est connecté (si la valeur de $this->connect est différente de FALSE)
        if ($this->connect !== FALSE)
        {
            //On selectionne la Base de donnée souhaitée
            $this->database = @mysql_select_db($database,$this->connect);
            //Si la valeur de $this->database est identique à FALSE (impossible de selectionner la BDD)
            if ($this->database === FALSE)
            {
                //Deconnection de MySQL (puisque la base de donnée n'a pas été selectionnée)
                @mysql_close($this->connect);
                //Et on prévient que la variable $this->connect va valoir FALSE
                $this->connect = FALSE;
                //On tue la phrase d'erreur et on la remplace
                die('Impossible de selectionner la Base de Donnée.');
            }
            //$this->connect va retourner TRUE
            return TRUE;
        }
        //Si la connexion ne s'est pas effectuée
        die('Impossible de se connecter à la Base de donnée.');
    }
    function create_database($db_name, $connect = $this->connect)
    {
        //On  créé $this->db_name
        $this->db_name = $db_name;
        // On créé $this->connect
        $this->connect = $connect;
        // Si $this->db_name  n'est pas vide et que nous sommes connecté
        if(!empty($this->db_name) AND $this->connect !== FALSE)
        {
            // On lance la création de la base de donnée
            $this->create = mysql_create_db($this->db_name, $this->connect);
            // On rajoute +1 aux nombres de requêtes
            $this->nbr_requete++;
            // On renvoi la requête
            return $this->create;
        }
        // Ca n'a pas fonctionné on envoi une erreur
        die('Impossible de créer une nouvelle base de donnée.');
    }
    function create_database_query($db_name,$connect = $this->connect)
    {
        // On créé $this->db_name
        $this->db_name = $db_name;
        // On créé $this->connect
        $this->connect = $connect;
        // Si $this->db_name  n'est pas vide et que nous sommes connecté
        if(!empty($this->db_name) AND $this->connect !== FALSE)
        {
            // On lance la requête
            $this->result = @mysql_query('CREATE DATABASE '.$this->db_name,$this->connect);
            // On ajoute + 1 aux nombre de requêtes
            $this->nbr_requete++;
            //$this->error = Si $this->result vaut FALSE $this->eror vaut TRUE sinon $this->error vaut FALSE
            $this->error = ($this->result === FALSE) ? TRUE : FALSE;
            // Si il y a une erreur on créé le message d'ereur MySQL
            $this->result = ($this->error) ? $this->db_name."\n".mysql_errno($this->connect).' : '.mysql_error($this->connect) : $this->result;
            // Il y a bien erreur on affiche l'erreur
            if ($this->error) die($this->result);
            // On envoie le resultat de la requête.
            return $this->result;
        }
        //Sinon $this->error vaut TRUE
        $this->error = TRUE;
        // On affiche l'ereur
        die('Impossible de créer une nouvelle base de donnée.');
    }
    function ping($connect = $this->connect)
    {
        // On prévient que this->connect est $connect
        $this->connect = $connect;
        // On effectue un mysql_ping
        $this->ping = @mysql_ping($this->connect);
        // Si $this->ping à été activé et fonctionne
        if ($this->ping !== FALSE)
        {
            // On return TRUE
            return TRUE;
        }
        else
        {
        // On affiche un message d'erreur
        die('La reconnection a échouée.');
        // On return FALSE
        return FALSE;
        }
    }
    function encoding($connect = $this->connect)
    {
        //On créé $this->connect
        $this->connect = $connect;
        // On effectue un mysql_client_encoding
        $this->encoding = @mysql_client_encoding($this->connect);
        // Si $this-encoding à été activé et fonctionne
        if ($this->encoding !== FALSE)
        {
            // On return TRUE
            return TRUE;
        }
        else
        {
        // On affiche un message d'erreur
        die('Impossible de retourner le jeu de charactère.');
        // On return FALSE
        return FALSE;
        }
    }
    //Déclaration de la fonction close (Pour fermer MySQL)
    function close()
    {
        //Si on est connecté à MySQL
        if ($this->connect !== FALSE)
        {
            //Deconnection à MySQL
            $this->connect = @mysql_close($this->connect);
            return $this->connect;
        }
        //$this->connect retourne à présent FALSE (donc non connecté)
        return FALSE;
    }
    //Déclaration de la fonction change_db (pour changer de base de donnée)
    function change_db($database)
    {
        //Si on est connecté à MySQL
        if ($this->connect !== FALSE)
        {
            //On choisi la base de donnée
            $this->database = @mysql_select_db($database,$this->connect);
            //Si le changement de base de donnée echoue
            if ($this->database === FALSE)
            {
                //On ferme la connexion
                @mysql_close($this->connect);
                //On déclare que $this->connect vaut FALSE
                $this->connect = FALSE;
                //Et on affiche l'erreur
                die('Impossible de changer de Base de donnée.');
            }
            //Si     le changement a réussi, on retourne $this->database comme TRUE
            return TRUE;
        }
        //Sinon on retourne FALSE
        return FALSE;
    }
    function listable($db_name)
    {
        // On créé la variable de la class
        $this->db_name = $db_name;
        // Si nous sommes connecté
        if($this->connect !== FALSE)
        {
            // On lance le listage
            $this->listable = mysql_query('SHOW TABLES FROM '.$db_name);
            // Si $this->listable est différent de FALSE
            if($this->listable !== FALSE)
            {
                //On renvoi $this->listable
                return $this->listable;
            }
            else
            {
                //On affiche un message d'erreur
                die('Impossible de lister les tables de la base de donnée: '.$db_name);
            }
        }
        // On affiche un mesage d'erreur
        die('Vous n\'êtes pas connecté');
    }
    //On déclare la fonction query
    function query($query)
    {
        // On créé $this->query
        $this->query = $query;
        // Si la requête n'est pas vide et que nous sommes connecté
        if(!empty($this->query) AND $this->connect !== FALSE)
        {
            // On lance la requête
            $this->result = @mysql_query($this->query,$this->connect);
            // On ajoute + 1 aux nombre de requêtes
            $this->nbr_requete++;
            //$this->error = Si $this->result vaut FALSE $this->eror vaut TRUE sinon $this->error vaut FALSE
            $this->error = ($this->result === FALSE) ? TRUE : FALSE;
            // Si il y a une erreur on créé le message d'ereur MySQL
            $this->result = ($this->error) ? $this->query."\n".mysql_errno($this->connect).' : '.mysql_error($this->connect) : $this->result;
            // Il y a bien erreur on affiche l'erreur
            if ($this->error) die($this->result);
            // On envoie le resultat de la requête.
            return $this->result;
        }
        //Sinon $this->error vaut TRUE
        $this->error = TRUE;
        // On affiche l'ereur
        die('La requête SQL et vide et/ou vous n\'êtes pas connecté');
    }
    function numfields($result)
    {
        // On créé $this->result
        $this->result = $result;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        // On fait un mysql_field_name
        $this->row = @mysql_num_fields($this->result);
        return $this->row;
        }
    }    
    function fieldtype($result, $field_offset)
    {
        // On créé $this->result & $this->field_offset
        $this->result = $result;
        $this->field_offset = $field_offset;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        // On fait un mysql_field_name
        $this->row = @mysql_field_type($this->result, $this->field_offset);
        return $this->row;
        }
    }    
    function fieldname($result, $field_offset)
    {
        // On créé $this->result & $this->field_offset
        $this->result = $result;
        $this->field_offset = $field_offset;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        // On fait un mysql_field_name
        $this->row = @mysql_field_name($this->result, $this->field_offset);
        return $this->row;
        }
    }
    function fieldlen($result, $field_offset = 0)
    {
        // On créé $this->result & $this->field_offset
        $this->result = $result;
        $this->field_offset = $field_offset;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        // On fait un mysql_field_len
        $this->row = @mysql_field_len($this->result, $this->field_offset);
        return $this->row;
        }
    }
    function fiedflags($result, $field_offset = 0)
    {
        // On créé $this->result & $this->field_offset
        $this->result = $result;
        $this->field_offset = $field_offset;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        // On fait un mysql_field_flags
        $this->row = @mysql_field_flags($this->result, $this->field_offset);
        return $this->row;
        }
    }
    function fetchrow($result)
    {
        //On créé $this->resukt
        $this->result = $result;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_row
        $this->row = @mysql_fetch_row($this->result);
        return $this->row;
        }
    }
    function fetchobject($result)
    {
        //On créé $this->resukt
        $this->result = $result;
        // Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_object
        $this->row = @mysql_fetch_object($this->result);
        return $this->row;
        }
    }    
    function result($result)
    {
        //On créé $this->result
        $this->result = $result;
        //Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_array
        $this->row = @mysql_free_result($this->result);
        return $this->row;
        }
    }
    function numrows($result)
    {
        //On créé $this->result
        $this->result = $result;
        //Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_array
        $this->row = @mysql_num_row($this->result);
        return $this->row;
        }
    }    
    function assoc($result)
    {
        //On créé $this->result
        $this->result = $result;
        //Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_array
        $this->row = @mysql_fetch_assoc($this->result);
        return $this->row;
        }
    }
    function affected($result)
    {
        //On créé $this->result
        $this->result = $result;
        //Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_array
        $this->row = @mysql_affected_rows($this->result);
        return $this->row;
        }
    }
    function fetcharray($result)
    {
        //On créé $this->result
        $this->result = $result;
        //Si on est connecté
        if($this->connect !== FALSE)
        {
        //On fait un mysql_fetch_array
        $this->row = @mysql_fetch_array($this->result);
        return $this->row;
        }
    }
}
?>

Voici à quoi servent les fonctions:

sql() : prend 4 paramètres: l'host, le pseudo, le mot de passe et le nom de la base de donnée ( se connecte)
create_database(): prend 2 paramètre dans le 2ème est facultatif: le nom de la base de donnée et la connexion en cours (cette fonction n'est pas conseillé pour créé une base de donnée) (créé une nouvelle base de donnée)
create_database_query(): Pareil que tout à l'heure sauf que cette fonction est plus conseillé
ping(): Prend un paramètre optionnel : la connexion en cours (se reconnecte à mysql (cf: fr2.php.net/mysql_ping))
encoding(): Affiche le jeu de charactère de MySQL qui prend le même paramètre optionnel que ping()
close(): Ferme la connexion en cours
change_db(): prend un paramètre: le nom de la base de donée à prendre. (Fait un changement de Base de donnée)
listable(): prend un paramètre: le nom de la base de donnée (Affiche toute les tables d'une base de donnée)
query(): prend un paramètre: la requête a effectuer (fait un mysql_query())
numfields(): Retourne le nombre de champs ans une table. Prend le paramètre de la requête à prendre pour ce retorunement
fieldtype(): Prend 2 paramètres: la requête à prendre et le nombre de type à afficher ( même nombre que de champs ) (affiche le type de champs (int, text, begint, ...)
fieldname(): Prend 2 paramètres: Les même que au-dessus (Affiche le nom de champs)
fieldlen(): Prend les 2 mêmes paramètres que au-dessus (Affiche la taille maximale autorisé du champs)
fieldflags(): Prend les 2 même paramètre (Affiche si le champ est en NULL, Not Null, Primary Key, ....)
fetchrow(): Fonctionne pareil que mysql_fetch_row()
fetchobject(): Je ne sais pas comment vous expliquer alors allez sur fr2.php.net/mysql_fetch_object
result(): Fonctionne pareil que mysql_free_result()
numrows(): Fonctionne pareil que mysql_num_rows()
assoc(): Fonctionne pareil que mysql_fetch_assoc()
affected(): Fonctionne pareil que mysql_affected_rows()
fetcharray(): Fonctionne pareil que mysql_fetch_array()

Hors ligne

#6 2006-05-12 21:54:29

GoldenEye
Membre
Inscription : 2006-03-24
Messages : 7

Re : Une class SQL

Enorme mise à jour, ma class fonctionne. Avec je suis en train de créer MySQL-Soft-Admin qui est un PMA mais en plus simple.

Je vous rapelle que la class est sous license GNU GPL (merci à Bobe pour l'explication du comment faire) et elle fait 434 lignes (avant 395 avec la moitié en commentaire la j'ai enlevé les commentaires)

La voici:

<?php
/****************************************************************************
|    
|    #    Nom: sql_pusher.class.php
|    #    Auteur : Groupe Active Board
|    #    Commencé : Le 19 Mars 2006
|    #    Description : Cette classe permet de gérer MySQL simplement
|    #    Version: 3.0.0
|
****************************************************************************/

/***************************************************************************
*
*  Ce programme est un programme libre; vous pouvez le reditribuer et/ou le modifier
*  sous les termes de la GNU (License au grand public) publié par
*  la Free Software Foudation (FSF); 
*
*
****************************************************************************/

/***************************************************************************
 *
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *    (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 *
 *
 ***************************************************************************/
//Déclaration de la class SQL
class sql
{
    #
    #-----------[ DECLARATION VARIABLES ]--------------#
    #
    var $sql            =    '';
    var $nbr_requete     =    0;
    
    var $connect;
    #
    #-----------[ DECLARATION FONCTIONS ]------------#
    #
    
    
    
    
    function sql(&$sql)
    {
        $this->sql =& $sql;
    }
    
    
    
    function connect($host,$username,$password)
    {
        $this->connect = @mysql_connect($host,$username,$password);
        if($this->connect === FALSE)
        {
            die('Impossible de se connecter à MySQL.');
        }
        return TRUE;    
    }
    
    
    
    function connectdb($host,$username,$password,$database)
    {
        $this->connect = @mysql_connect($host,$username,$password);
        if($this->connect === FALSE)
        {
            die('Impossible de se connecter à MySQL.');
        }
        else
        {
            if($this->connect !== FALSE)
            {
                $this->db = @mysql_select_db($database, $this->connect);
                if($this->db === FALSE)
                {
                    die('Impossible de selectionner la base de donnée');
                }
            }
            else
            {
                die('Vous n\'êtes pas connecté à MySQL.');
            }
            return TRUE;    
        }
        return TRUE;    
    }
    
    
    
    function db($database)
    {
        if($this->connect !== FALSE)
        {
            $this->db = @mysql_select_db($database, $this->connect);
            if($this->db === FALSE)
            {
                die('Impossible de selectionner la base de donnée');
            }
        }
        else
        {
            die('Vous n\'êtes pas connecté à MySQL.');
        }
        return TRUE;    
    }    
    
    
    
    function listdb()
    {
        if($this->connect !== FALSE)
        {
            $this->list_db = mysql_list_dbs();
            $this->nbr_requete++;
            return $this->list_db;
        }
    die('Impossible de lister les bases de données.');
    }
    
    
    
    function create_database($db_name)
    {
        $this->db_name = $db_name;
        if(!empty($this->db_name) AND $this->connect !== FALSE)
        {
            $this->create = mysql_create_db($this->db_name);
            $this->nbr_requete++;
            return $this->create;
        }
        die('Impossible de créer une nouvelle base de donnée.');
    }
    
    
    
    function dropdb($db_name)
    {
        $this->db_name = $db_name;
        if(!empty($this->db_name) AND $this->connect !== FALSE)
        {
            $this->result = @mysql_query('DROP ' DATABASE '.$this->db_name);
            $this->nbr_requete++;
            return $this->result;
        }
        die('Impossible de supprimer la base de données.');
    }
    
    
    
    function create_database_query($db_name)
    {
        $this->db_name = $db_name;
        if(!empty($this->db_name) AND $this->connect !== FALSE)
        {
            $this->result = @mysql_query('CREATE DATABASE '.$this->db_name);
            $this->nbr_requete++;
            $this->error = ($this->result === FALSE) ? TRUE : FALSE;
            $this->result = ($this->error) ? $this->db_name."\n".mysql_errno($this->connect).' : '.mysql_error($this->connect) : $this->result;
            if ($this->error) die($this->result);
            return $this->result;
        }
        $this->error = TRUE;
        die('Impossible de créer une nouvelle base de donnée.');
    }
    
    
    
    function ping($connect)
    {
        $this->connect = $connect;
        $this->ping = @mysql_ping($this->connect);
        if ($this->ping !== FALSE)
        {
            return TRUE;
        }
        else
        {
        die('La reconnexion a échouée.');
        return FALSE;
        }
    }
    
    
    
    function encoding($connect)
    {
        $this->connect = $connect;
        $this->encoding = @mysql_client_encoding($this->connect);
        if ($this->encoding !== FALSE)
        {
            return TRUE;
        }
        else
        {
        die('Impossible de retourner le jeu de charactère.');
        return FALSE;
        }
    }
    

    
    function close()
    {
        if ($this->connect !== FALSE)
        {
            $this->connect = @mysql_close($this->connect);
            return $this->connect;
        }
        return FALSE;
    }

    
    
    function change_db($database)
    {
        if ($this->connect !== FALSE)
        {
            $this->database = @mysql_select_db($database,$this->connect);
            if ($this->database === FALSE)
            {
                @mysql_close($this->connect);
                $this->connect = FALSE;
                die('Impossible de changer de Base de donnée.');
            }
            return TRUE;
        }
        return FALSE;
    }
    
    
    
    function listable($db_name)
    {
        $this->db_name = $db_name;
        if($this->connect !== FALSE)
        {
            $this->listable = mysql_list_tables($db_name);
            if($this->listable !== FALSE)
            {
                return $this->listable;
            }
            else
            {
                die('Impossible de lister les tables de la base de donnée');
            }
        }
        die('Vous n\'êtes pas connecté');
    }

    
    
    function query($query)
    {
        $this->query = $query;
        if(!empty($this->query) AND $this->connect !== FALSE)
        {
            $this->result = @mysql_query($this->query,$this->connect);
            $this->nbr_requete++;
            
            $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;
        die('La requête SQL et vide et/ou vous n\'êtes pas connecté');
    }
    
    
    
    function numfields($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_num_fields($this->result);
        return $this->row;
        }
    }    
    
    
    
    function fieldtype($result, $field_offset)
    {
        $this->result = $result;
        $this->field_offset = $field_offset;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_field_type($this->result, $this->field_offset);
        return $this->row;
        }
    }


    
    function fieldname($result, $field_offset)
    {
        $this->result = $result;
        $this->field_offset = $field_offset;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_field_name($this->result, $this->field_offset);
        return $this->row;
        }
    }
    
    
    
    function fieldlen($result, $field_offset)
    {
        $this->result = $result;
        $this->field_offset = $field_offset;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_field_len($this->result, $this->field_offset);
        return $this->row;
        }
    }
    
    
    
    function fiedflags($result, $field_offset)
    {
        $this->result = $result;
        $this->field_offset = $field_offset;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_field_flags($this->result, $this->field_offset);
        return $this->row;
        }
    }
    
    
    
    function fetchrow($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_fetch_row($this->result);
        return $this->row;
        }
    }
    
    
    
    function fetchobject($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_fetch_object($this->result);
        return $this->row;
        }
    }    
    
    
    
    function result($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_free_result($this->result);
        return $this->row;
        }
    }
    
    
    
    function numrows($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_num_rows($this->result);
        return $this->row;
        }
    }    
    
    
    
    function assoc($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_fetch_assoc($this->result);
        return $this->row;
        }
    }
    
    
    
    function affected($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_affected_rows($this->result);
        return $this->row;
        }
    }
    
    
    
    function fetcharray($result)
    {
        $this->result = $result;
        if($this->connect !== FALSE)
        {
        $this->row = @mysql_fetch_array($this->result);
        return $this->row;
        }
    }
    
}
?>

Je ne sais pas si l'indentation va bien s'effectuer sinon je l'enverrais à ceux qui veulent l'utiliser.

Hors ligne

Pied de page des forums