La communauté ALL HTML c'est 58666 membres à ce jour dont 0 inscrits aujourd'hui et 38 depuis une semaine.

Communauté ALL HTML : FabHacker

Stocker et manipuler des variables en les enregistrant dans la base de donnée

Cet article est actuellement publié sur le site.

Photo de FabHacker Article publié le lundi 04 septembre 2006 par FabHacker.
Cet article est classé dans les catégories « PHP, SQL »

Il peut être utile de travailler avec des variables de tout type en les enregistrant dans la base de donnée, et cela pour plusieurs raisons.

Introduction


Je vous fourni dans cet article des ressources qui vous permettront de gérer des variables en les enregistrant dans la base de donnée, et ce, quelque soit leur type. Cela peut-être utile pour plusieurs raison:
  • Si vous ne désirez pas employer un config.php situé sur votre serveur. En général ce genre de fichier contient une multitude de variable fixe utilisées par la plupart des pages du site. Ce fichier est situé sur le FTP du site, est inclus dans les pages et peut être la cible d'éventuels hackers. En conservant vos variables sensibles (et autres) dans la base de donnée, vous limitez les risques de perte d'informations confidentielles.
  • Si vous programmez, par exemple, un panel administration pour un utilisteur qui n'a aucune connaissance en développement web. Vous ne désirez donc que l'utilisateur puisse gérer son site web sans avoir à manipuler un fichier config.php évoqué précédemment. Une erreur de syntaxe de la part de l'utilisateur, et le site serait inutilisable. De plus, l'utilisateur novice ne sait peut-être pas comment accéder à un FTP...!
  • Et bien entendu d'autres utilisations diverses et variées.



La table SQL


Pas question d'enregistrer des données dans une BDD sans tables!
Voici la table SQL que je vous propose pour stocker vos données.

table.sql
CREATE TABLE `variables` ( `varid` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `nom` VARCHAR(64) NOT NULL, `type` VARCHAR(8) NOT NULL, `tinyint` TINYINT NOT NULL, `smallint` SMALLINT NOT NULL, `mediumint` MEDIUMINT NOT NULL, `int` INT NOT NULL, `bigint` BIGINT NOT NULL, `float` FLOAT NOT NULL, `double` DOUBLE NOT NULL, `date` DATE NOT NULL, `varchar` VARCHAR(255) NOT NULL, `tinytxt` TINYTEXT NOT NULL, `text` TEXT NOT NULL, `mediumtext` MEDIUMTEXT NOT NULL, `longtext` LONGTEXT NOT NULL, UNIQUE (`nom`) );

Note 1: Je n'ai pas mis tous les types de variable, mais les plus couramment utilisé. Vous pouvez bien entendu étendre la table pour supporter tous les types de variables.
Note 2: J'ai nommé cette table variables. Vous verrez par la suite que j'utilise ce nom dans les fonctions qui servent à gérer les variables. Pensez à changer ce nom dans les fonctions si vous utilisez un autre nom pour la table!
Note 3: Le champs varid à été ajouté par 'convention' mais ne servira pas par la suite.
Note 4: Le champs nom contient le nom de la variable. Il m'a semblé suffisant de laisser 64 caractères, mais vous pouvez étendre à 255 si vous le désirez.
Note 5: Le champs type contient le type de la variable. Vous devrez spécifier 'int' si vous désirez que votre variable soit un nombre, ou alors 'varchar' pour une chaine par exemple. Cela sera détaillé par la suite.

Les trois premiers champs de la table servent à l'identification de la variable, et les suivant au stockage des valeurs. Une variable peut ainsi contenir plusieurs valeur pour un même nom, mais les valeurs sont différenciées par leur type.
Voyons maintenant les fonctions qui servent à gérer les variables.



Les fonctions


Il y en a trois seulement: la première sert à vérifier l'existence d'une variable, la seconde à acquérir une variable, la dernière à modifier la valeur. Plus de détails dans les commentaires ci-dessous.

fct_variables.php
<?php // Fonction booléenne indiquant si la variable $var_nom existe. function existe_var($var_nom) { // Recherche dans la base de donnée $sql = "SELECT varid FROM variables WHERE `nom` = '$var_nom'"; $resultat = mysql_query($sql); if(!mysql_num_rows($resultat)) return false; else return true; } // Retourne la valeur de la variable $var_nom de type $var_type. // Si elle n'existe pas, cette fonction retourne false. function aquerir_var($var_nom,$var_type) { // Recherche dans la base de donnée $sql = "SELECT `$var_type` FROM variables WHERE nom = '$var_nom'"; $resultat = mysql_query($sql); if(!mysql_num_rows($resultat)) return false; // Retour de la valeur $variable = mysql_fetch_array($resultat); return $variable[$var_type]; } // Attribue une valeur pour une variable. // Si la variable existe déjà, la valeur sera mise à jour. // La fonction retourne $var_valeur function definir_var($var_nom,$var_type,$var_valeur) { // Si la variable n'existe pas, on ajoute une ligne vide if( !existe_var($var_nom) ) { $sql = "INSERT INTO `variables` VALUES ('','$var_nom','$var_type','','','','','','','','','','','','','')"; $resultat = mysql_query($sql); } // Mise à jour de la valeur $sql = "UPDATE `variables` SET `$var_type` = '$var_valeur' WHERE `nom` = '$var_nom'"; $resultat = mysql_query($sql); // Renvoi de la valeur return $var_valeur; } ?>

Rappel: Toutes les requêtes SQL utilise le nom de table variables. Changez le si nécessaire!

Maintenant un bon exemple pour voir comment cela fonctionne.



Exemple d'utilisation


Maintenant, c'est très simple!
Voici un exemple simple mais complet pour bien manipuler le système de gestion de variable.

exemple.php
<?php include('bdd.php'); include('fct_variables.php'); // Définition d'un nombre entier definir_var('nombre','int', 3105 ); // Aquisition et affichage du nombre $nombre = aquerir_var('nombre','int'); print('<br />Nous avont ajouté <b>nombre</b> avec la valeur <b>' . $nombre . '</b>'); // Nouvelle valeur pour 'nombre' $nombre = definir_var('nombre','int', 6756 ); print('<br />Désormais <b>nombre</b> vaut <b>' . $nombre . '</b>'); // On vérifie maintenant si une variable est dans la base. // Si elle existe, on l'affiche, sinon on l'ajoute. // Ce test est à titre EDUCATIF, il est inutile car definir_var() ajoute les variables automatiquement si elle ne sont pas attribuées. // On donne un nom de variable dynamique $test = 'entier_' . rand(1,5); print('<br /><br />Notre variable dynamique est <b>' . $test . '</b>'); if( existe_var($test,'int') ) { // La variable existe, l'afficher $temp = aquerir_var($test,'int'); print('<br />La variable <b>' . $test . '</b> a pour valeur <b>' . $temp . '</b>'); } else { // Sinon, on l'ajoute avec une valeur aléatoire $valeur = rand(1,999); $temp = definir_var($test,'int', $valeur ); print('<br />La variable <b>' . $test . '</b> à été ajoutée avec la valeur <b>' . $temp . '</b>'); } ?>

Je pense que vous avez maintenant tout compris !
J'espère que ces ressources vous faciliteront le dévellopement de vos sites webs.

ACCÉS COMMUNAUTÉ

Rejoignez ALL HTML

Publiez vos articles, actualités, communiqués ... Donnez votre avis, partagez votre réseau, rencontrez d'autres membres et participez à la vie de la communauté.