1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202
| <?php
/*********************************************************************************************************************************************************
Nom du fichier : SQLManager.php
Auteur : Flauder Vincent
Version : 1.0
Description :Fichier de la classe SQLManager permettant de crée un objet pour être en relation avec une base de données MySQL. Possède diverses fonctions facilitant la programmation SQL et la gestion de requêtes.
*********************************************************************************************************************************************************/
// Classe SQLManager
class SQLManager
{
private $user; //Variable stockant le nom d'utilisateur pour l'acces a la base de données.
private $password; //Variable stockant le mot de passe pour l'acces a la base de données.
private $server; //Variable stockant le nom du serveur auquel se connecter.
private $db; //Identifiant de la BDD
private $dbname; //Nom de la BDD à laquelle se connecter.
/*********************************************************************************************************************************************************
METHODES PUBLIQUES
*********************************************************************************************************************************************************/
//Constructeur de la classe avec 4 parametre ( nom du serveur, nom d'utilisateur, mot de passe, base de données)
public function __construct( $serverarg, $userarg, $passwordarg, $dbnamearg )
{
$this->user = $userarg;
$this->password = $passwordarg;
$this->server = $serverarg;
$this->dbname = $dbnamearg;
$this->connect( $this->dbname );
}
//Destructeur qui lors de son appel fermera la conection à la BDD.
public function __destruct()
{
@mysql_close( $this->db );
}
//Méthode permettant d'interpreter une requete et de renvoyer un tableau associatif avec les résultats.
public function query( $query )
{
$result = mysql_query( $query, $this->db );
if ( !isset( $result ) )
{
die('Probleme Interne, contactez le webmaster');
}
$i=0;
while ( $row = mysql_fetch_array( $result ) )
{
$tabend[$i++] = $row;
}
return $tabend;
}
/* Méthode pour effectuer une requête SELECT , prenant 7 arguments :
(1)column : champs à extraire.
(2)table : table sélectionnée.
(3)condition : 0 ou 1 pour inclure une clause WHERE dans la requête.
(4) champ à comparer.
(5) opérateur de comparaison.
(6) donnée à comparer.
(7) options pour ajouter une instruction en fin de requête.
Exemple : selectQuery( 'Login', 'user', 1, 'Password', '=', $_POST['password'], '' ).
Exemple : selectQuery('Name', 'user', 0, '', '', '', 'ORDER BY ASC') Selectionne tous les noms et les range dans l'ordre croissant.*/
public function selectQuery( $colum, $table, $condition, $colomnToCompare, $operator, $comparator, $option)
{
$querymaker = 'SELECT '.$colum.' FROM '.$table.' ';
if ( $condition != 0 )
{
$querymaker .= 'WHERE '.$columnToCompare.' '.$operator.' \''.$comparator.'\' ';
}
//Rajout de l'option
$querymaker .= $option;
return ( $this->query( $querymaker, $this->db ) );
}
/* Méthode pour insérer une nouvelle ligne dans la base de données, prend 3 arguments :
(1)table : table ou l'on insére la ligne.
(2)tabcol : tableau dans lequel les noms des champs sont rangés.
(3)tabval : tableau dans lequel les données des champs sont rangés.
Tabcol et Tabval doivent posséder le même index de rangement pour les données associées aux champs.
Exemple :
$fields[0] = 'Login';
$values[0] = 'loginTest';
$fields[1] = 'Password';
$values[1] = $_POST['password'];
$sql->insertQuery( 'user', $fields, $values );
Insérera un nouvel utilisateur dans la base de données.*/
public function insertQuery( $table, $tabcol, $tabval )
{
if ( count($tabcol) != count($tabval) )
{
die('Probleme d\'insertion, contactez le webmaster.');
}
$queryinsert = 'INSERT INTO `'.$table.'` ( ';
$queryinsert .= $this->chainmaker( $tabcol );
$queryinsert .= ' ) VALUES ( ';
$queryinsert .= $this->chainmaker( $tabval );
$queryinsert .= ' )';
echo $queryinsert;
if ( !( mysql_query( $queryinsert, $this->db ) ) )
{
die('Probleme interne insert, veuillez contactez le webmaster.');
}
}
/* Méthode permettant de mettre à jour une ligne dans une table, prend 6 arguments :
(1)table : table sélectionnée.
(2)fields : tableau contenant les nom des champs.
(3)values : tableau respectif à (2)fields pour les données des champs.
(4)colomnToCompare : champs ou l'on cherche à modifier la ligne.
(5)operator : opérateur de comparaison.
(6)comparator : donnée à comparer pour la recherche.
Exemple :
$fields[0] = 'Password';
$values[0] = $_POST['password'];
$sql->updateQuery( 'user', $fields, $values, 'Login', '=', 'loginTest');
Ceci change le mot de passe de l'utilisateur qui à le Login "loginTest" */
public function updateQuery( $table, $fields, $values, $colomnToCompare, $operator, $comparator )
{
if ( count($fields) != count($values) )
{
die('Probleme d\'insertion, contactez le webmaster.');
}
$queryupdate = 'UPDATE `'.$table.'` SET ';
for ( $i=0; $i<count($fields); $i++ )
{
if ( $i==(count($fields)-1) )
{
$queryupdate .= '`'.$fields[$i].'`=\''.$values[$i].'\''; //Fin de chaîne...
}
else
{
$queryupdate .= '`'.$fields[$i].'`=\''.$values[$i].'\',';//...sinon on rajoute une virgule.
}
}
$queryupdate .= ' WHERE `'.$colomnToCompare.'`'.$operator.'\''.$comparator.'\'';
if ( !( mysql_query( $queryupdate, $this->db ) ) )
{
die('Problème interne, veuillez contactez le webmaster.');
}
}
/* Méthode pour changer la base de données sur laquelle on doit travailler. */
public function changeDB( $newdb )
{
$this->dbname = $newdb;
$this->connect( $this->dbname );
}
/*******************************************************************************************************************************************************************
METHODES PRIVEE
******************************************************************************************************************************************************************/
//Méthode pour se connecter au serveur ainsi qu'a la BDD dont le nom est passé en paramètre.
private function connect( $dbnamearg )
{
// Connection
if ( !( $this->db = mysql_connect( $this->server, $this->user, $this->password ) ) )
{
die('Impossible de se connecter au serveur.');
}
else
{
// Selection de la BDD.
if ( !mysql_select_db( $this->dbname, $this->db ) )
{
die('Impossible de se connecter à la base de données.');
}
}
}
// Méthode servant à crée une chaîne de caractere à partir d'un tableau de valeurs, renvoi la chaîne ainsi crée
private function chainmaker( $tabval )
{
$chain = ''; //Initialisation
for ( $i=0; $i < count($tabval); $i++ )
{
$chain .= '\''.$tabval[$i].'\''; //On rajoute les guillemets nécessaires dans une requête SQL.
if ( $i < ( count($tabval) - 1 ) ) //Si c'est la dernière valeur à ajoutée, on ne met pas de virgule.
{
$chain .= ', ';
}
}
return $chain;
}
} //Fin de la classe SQLManager
?> |
Partager