DOCUMENTATION SUR LE GESTIONNAIRE DE BASES DE DONNEES : ClasseBases.php

AUTEUR : FRANCK OBERLECHNER, Ingénieur Système et Réseaux

version 1.04 du 20/02/2007


 

SOMMAIRE

1. Préambule

2. Installation de la classe

3. Les ordres disponibles

3.1 Les ordres de base

3.2 Les ordres avançés

A. Les annexes

 

 


1) PREAMBULE

La classe ClasseBases.php permet de gérer les bases de données en faisant abstraction de leur type. Dans l'exemple ci-dessous on illustre les 3 façons différentes de gérer une base ODBC (Access) , mySQL <= 4.0 ou mySQL >=4.1

ODBC

$link = odbc_connect($nomDSN,$bdd_user,$bdd_pwd);
$resultat_requete = odbc_exec($link,$bdd_requete);
while ( odbc_fetch_row($resultat_requete) ) {

print odbc_result($resultat_requete, $nomchamp)

}
odbc_close($link)

mySQL <=4.0

$link = mysql_connect($bdd_host,$bdd_user,$bdd_pwd);
mysql_select_db($nombase);
$resultat_requete = mysql_query($bdd_requete);
while ($row = mysql_fetch_array ( $resultat_requete , MYSQL_ASSOC ) ) {

print $row[$nomchamp];

}
mysql_close($link);

mySQL >=4.1 ( MYSQLI )

$link = new mysqli($bdd_host,$bdd_user,$bdd_pwd,$nombase);
$resultat_requete = $link -> query($bdd_requete);
while ( $row = $resultat_requete -> fetch_array(MYSQLI_BOTH) ) {

print $row[$nomchamp];

}
mysqli_close($link)

LE MEME PROGRAMME AVEC classeBases :

$base = New Bdd;
$base->bdd_connecter_base($nombase);
$base->bdd_execsql($bdd_requete);
$ligne = $base->bdd_lire_ligne();
while ($ligne) {

print $base->bdd_lire_champ($nomchamp;
$ligne = $base->bdd_lire_ligne();

}
$base->bdd_fermer();

Ce n'est pas plus court mais c'est complètement indépendant de la base de données


2) INSTALLATION DE LA CLASSE

Définir un répertoire "include_path" en modifiant le fichier de configuration de PHP %SYSTEMROOT%\PHP.INI sous IIS

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"
;
; Windows: "\path1;\path2"
include_path = "d:/wwwroot/rubappli/communs"

Décompresser dans le répertoire "include_path" du serveur PHP le fichier classeForms.php et le répertoire classeForms (ce répertoire contient toutes les ressources nécessaires à la classe)
On obtient l'arborescence :

    .../Répertoire_Include

    classeBases.php
    classeBases<dir>

Editer le fichier _classePath.php et modifier la ligne DEFINE en terminant par un "/" obligatoirement, la constante INCLUDEPATH doit pointer sur le répertoire ou se situe le fichier classeForms.php et _classePath.php

    // PARAMETRAGE :
    DEFINE('INCLUDEPATH','/rubappli/communs/');

     

Dans le répertoire d'inclusion créer le fichier : _classeBases_description.php

Ce fichier décrit le ou les bases à ouvrir, leurs types (ODBC, MYSQL, MYSQLI) et leurs paramètres de connexion (HOST, USER, PWD)

exemple :

$tablebases["NOMBASE_MYSQLI"] = array("MYSQL","127.0.0.1","root","pwd",["nombase_mysql"] );
"nombase_mysql" est optionnel, a defaut c'est "NOMBASE_MYSQLI" qui est utilisé

$tablebases["NOMBASE_MYSQL"] = array("MYSQL","127.0.0.1","root","");
$tablebases["NOMBASE_ODBC"] = array("ODBC");

C'est tout ! la classe est maintenant exploitable directement

 


3) LA LISTE DES ORDRES

3.1 LES ORDRES DE BASE

3.1 LES ORDRES AVANCES

GESTION DE LA DATE ET L'HEURE



GESTION DE LA STRUCTURE DE LA BASE

EXTRACTION DE VALEURS

NOTA : l'interet de cette fonction est d'enchainer ensuite une requete de la forme :

 


FONCTIONS ASSOCIEES A LA GESTION DES FORMULAIRES

 

FONCTIONS ASSOCIEES A LA GESTION DES FORMULAIRES

La collection BDD_AUTO

les fonctions bdd_auto_init(), bdd_auto_security(), bdd_auto_sql(), bdd_auto_header() sont des fonctions spécialisées pour simplifier l'usage de classeForm.

La collection BDD_PARAM

les fonctions bdd_param_init(),bdd_param_security(), bdd_param_rec(), bdd_param_load() sont des fonctions spécialisées pour simplifier l'usage de la gestion d'un fichier de paramètres qui aurait la structure suivante :

nom_table_param
param_id INTEGER (PRIMARY KEY)
param_clef VARCHAR(50) (INDEXE)
param_valeur VARCHAR(255)
param_num_client INTEGER (optionnel)

pour une table de paramètres simples partagée par tous les utilisateurs le champ "param_num_client" est inutile. ( bdd_param_security() aussi )

 

 

Dans n'importe quelle page aillant besoin d'un paramètre de la table, il est facile de récupérer la valeur en 3 lignes :

$base->bdd_param_init("nom_table_param","param_clef","param_valeur");
$base->bdd_param_security('param_num_client',$_SESSION['NUM_CLIENT']);

$chemin_lu = $base->bdd_param_load("PARAM1","valeur_par_defaut");



A2

FONCTIONS DIVERSES


 

A) ANNEXES

A-1 UN SOURCE QUI GERE TOUTES LES FONCTIONS SUR LES ENREGISTREMENT COLLABORATEURS:

<?php

session_start();

include('classeBases.php');
include('./inc_base.php');

include('classeForms.php');

$base = New Bdd;
$base->bdd_connecter_base(BASE);
$delete = isset($_GET['DELETE']);

$base->bdd_auto_init('inv_compte_collaborateurs','COLLAB_ID','hd_collaborateurs_lister.php');
$base->bdd_auto_security('COLLAB_CPT_ID',$_SESSION['NUMERO_DU_CLIENT']);

// DEFINITION DU FORMULAIRE ##############################################################################
$f = New Forms;
$f->frm_Init($delete,'150px');
definition_des_champs();

// ILLUSTRATION DE LA RE-ENTRANCE FORMULAIRE #############################################################
$ret = $f->frm_Aiguiller('COLLAB_ID');
$valeurpardefaut = false;
switch ( $ret ) {

// AJOUT 1ER APPEL #############################################################
case "A0" :
$f->frm_InitConfirm("Ajouter ce nouveau collaborateur ?");
break;

// AJOUT RE-ENTRANT #############################################################
case "A1" :
$_POST['COLLAB_PWD'] = (String) mt_rand(10000, 99999);
$base->bdd_auto_sql( "A" );
$base->bdd_auto_header();

case "M0" :
// MODIFICATION 1ER APPEL #############################################################
$f->frm_InitConfirm("Enregistrer les modifications ?");
$f->frm_InitConfirmCancel("Rétablir les données avant la modification ?");
$base->bdd_auto_sql( "C" );
$f->frm_ChargerLesChamps($base->bdd_resultats_vers_tableau());
break;

case "M1" :
// MODIFICATION RE-ENTRANT #############################################################
$base->bdd_auto_sql( "M" );
$base->bdd_auto_header();

case "L0" :
// EFFACEMENT 1ER APPEL #############################################################
$f->frm_InitConfirm("Effacer ce collaborateur ?");
$f->frm_LibBoutons('Effacer','Quitter','Rétablir');
$base->bdd_auto_sql( "C" );
$f->frm_ChargerLesChamps($base->bdd_resultats_vers_tableau());
break;

// EFFACEMENT RE-ENTRANT #############################################################
case "L1" :
// ATTENTION ON ZAPE !
$base->bdd_auto_sql( "E" );
$base->bdd_auto_header();

default :
$base->bdd_auto_header();

}

?>

<html>
<head>
<title>www.oberlechner.net - EDITER UN UTILISATEUR</title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="/css/style.css" rel="stylesheet" type="text/css">
</head>

<body>
<p>
<?php
include('classeMenu.php');
$mn = New PopMenu($_SESSION['DEFAULT_SKIN']);
$mn->ShowPopMenu('_datamenu.js');
include('./inc_menu_dynamique.php');
$idclient = $_SESSION['NUMERO_DU_CLIENT'];
?>
</p>
<br>
<br>
<br>
<blockquote><img src="../../popmenu/icones16-16/beos_group.gif" width="16" height="16">
<?php
$initiale = substr($ret,0,1);
if ( $initiale=='A' ) {
$titrefenetre = "<b>SAISISSEZ UN NOUVEAU COLLABORATEUR</b>";
} elseif ( $initiale=='L' ) {
if ( $statutlu==ADMIN ) {
$titrefenetre = "<b>EFFACER UN ADMINISTRATEUR EST INTERDIT</b>";
} else {
$titrefenetre = "<b>EFFACER L'UTILISATEUR CI DESSOUS</b>";
}
} else {
$titrefenetre = "<b>MODIFIER LES DONNEES D'UN UTILISATEUR</b>";
}
print "<span class=titre1>".$titrefenetre."</span><p>";
$f->frm_Ouvrir();
print "</p>";

?>
</blockquote>
</body>
</html>

 

<?php
function definition_des_champs() {
global $f, $tabstatut ;

$f->frm_ObjetChampTexte("COLLAB_NOM", array( "attrib" => "R",
"label" => "Nom du collaborateur :",
"width" => "300px",
"help" => "Saisissez le nom du collaborateur"
)
);

$f->frm_ObjetChampTexte("COLLAB_EMAIL", array( "attrib" => "RM",
"label" => "Adresse de messagerie :",
"width" => "300px"
)
);

$f->frm_SautLignes(1);

$f->frm_ObjetCoche("COLLAB_ACTIF", array( "label" => "Activité",
"title" => "Le compte est actif",
"help" => "Décocher pour rendre le collaborateur inactif",
"default" => "1"
)
);

}
?>


A-2 UN SOURCE QUI GERE TOUTES LES FONCTIONS DE LA GESTION D'UNE TABLE DE PARAMETRES

<?php
session_start();
include('classeBases.php');
include('./inc_base.php');

include('classeForms.php');

$base = New Bdd;
$base->bdd_connecter_base(BASE);
$base->bdd_param_init("nom_table_param","param_clef","param_valeur");
$base->bdd_param_security('param_num_client',$_SESSION['NUM_CLIENT']);

// DEFINITION DU FORMULAIRE ##############################################################################
$f = New Forms;
$f->frm_Init($delete,'150px');

definition_des_champs();

// ILLUSTRATION DE LA RE-ENTRANCE FORMULAIRE #############################################################
$ret = $f->frm_Aiguiller('');
$valeurpardefaut = false;
switch ( $ret ) {

// MODIF 1ER APPEL #############################################################
case "A0" :
$f->frm_ChampInitialiserValeur("PARAM1", $base->bdd_param_load("PARAM1",10) );
$f->frm_ChampInitialiserValeur("PARAM2", $base->bdd_param_load("PARAM2","valeur par défaut n°=2") );
$f->frm_ChampInitialiserValeur("PARAM3", $base->bdd_param_load("PARAM3","5") );

break;

// MODIF RE-ENTRANT #############################################################
case "A1" :
$base->bdd_param_rec("PARAM1");
$base->bdd_param_rec("PARAM2");
$base->bdd_param_rec("PARAM3");

$f->frm_ChampsRecopier();

break;

default:
header('location: hd_logon_ok.php');
break;

}

?>
<html>
<head>
<title>Paramètrage du client </title>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<link href="/css/style.css" rel="stylesheet" type="text/css">
</head>

<body>
<p>
<?php
include('classeMenu.php');
$mn = New PopMenu($_SESSION['DEFAULT_SKIN']);
$mn->ShowPopMenu('_datamenu.js');
include('./inc_menu_dynamique.php');
$idclient = $_SESSION['NUM_CLIENT'];

?>
<br>
<br>
<blockquote><br><img src="../../popmenu/icones16-16/services.gif" width="16" height="16"> <span class="titre1">PARAMETRAGES DIVERS</span>
<br>
<?php
$f->frm_Ouvrir();
if ($ret=='A1') {
print "<b>Les paramètres sont enregistrés !</b>";
}

?>
</blockquote>
</body>
</html>
<?php
function definition_des_champs() {
global $f,$tablecomiques;

 

$f->frm_ObjetChampTexte("PARAM1", array( "attrib" => "RN",
"label" => "Parametre n°=1",
"maxlength" => "4",
"width" => "50px",
"mask" => "####",
)
);

$f->frm_ObjetChampTexte("PARAM2", array( "attrib" => "RU",
"label" => "Parametre n°=2",
"maxlength" => "200",
"width" => "200px" )
);
$f->frm_SautLignes(1);

$f->frm_ObjetSlider("PARAM3", array("label" => "Parametre n°=3",
"orientation" => "H",
"width" => "80px",
"mini"=> "0",
"maxi"=>"10",
);

 

}

?>