<?php
// ------------------------------------------------------------------------- //
// Se connecter, créer des requêtes et les parcourir facilement //
// ------------------------------------------------------------------------- //
// Deux classes objets qui vous permettront de vous connecter, créer des //
// requêtes et les parcourir en quelques lignes à la façon ASP. Elles vous //
// permettent de ne pas mettre la main à la patte et de se triturer l'esprit //
// avec les méthodes mySQL. C'est un temps fou que l'on peut gagner, à ne //
// pas manquer ! //
// ------------------------------------------------------------------------- //
// Auteur: macololo //
// Email: codeinfos@club-internet.fr //
// Web: //
// ------------------------------------------------------------------------- //
// Ces classes sont libres de droit. Je vous demande juste de me tenir au
// courant si vous apportez des modifications et de laisser mes coordonnées sur
// le fichier.
// Bon développement
//Vous mettez ici les informations concernant votre serveur de bases de données
//mySQL
$hote = "localhost";//la machine
$user = "nom_user";//l'utilisateur
$passworddb = "mot_de_passe";//le mot de passe
$base = "nom_de_la_base";//la base de données
//Vous pouvez le laisser dans ce fichier ou l'enlever
//Ceci est la classe connection qui permet de se connecter à la base de données
// et de faire une requête
/*on trouve 3 propriétés importantes :
- $liste_req qui est un tableau contenant les listes d'enregistrements
de vos différentes requêtes, la clef du
tableau est le nom que l'on donne à la requête
- $erreur_n qui est le numéro de l'erreur qui s'est passé
- $erreur qui l'explication de l'erreur elle même
et 3 méthodes
- le constructeur qui fait la connection
- execute qui prends paramètres : nom de la requête, type de requête, la
requête elle même
- close pour fermer la connection
*/
//---------- CLASS CONNECTION -------
class connection {
var $liste_req; //tableau des requêtes
var $LienBase; //lien vers la base de données
var $erreur_n = 1; //numéro d'erreur
var $erreur; //erreur généré par mySQL
var $hote; //nom du serveur logeant le serveur MySQL
var $login; //login de connection à MySQL
var $password; //mot de passe de connection à MySQL
//cette fonction permet de se connecter à la base de données
function connection($hote, $login, $password, $base) {
$this->hote = $hote;
$this->login = $login;
$this->password = $password;
$this->base = $base;
//connection à la base
$this->LienBase = mysql_connect($this->hote, $this->login, $this->password);
if (!$this->LienBase) {//si erreur
$this->erreur_n = 0;
$this->erreur = mysql_error();
}
//retoune 1 si ok ou 0 si pas bon. Vous pouvez testez s'il y a erreur et
//dans de cas
return $this->erreur_n;
affichez le message
}
/*la méthode 'execute' comprend un argument type qui est un entier :
- 1 pour une requête de type sélection
- 2 pour une requête de type mise à jour
Cette méthode 'execute' la requête $requête et vous lui assignez un nom $nom
Le tableau liste_req est un tableau indexé sur le nom $nom et contient des objets
'navigation' qui permettent de parcourir le résultat de la requête
*/
function execute ($nom, $type, $requete) {
//on execute la requête
$result = mysql_db_query ($this->base, $requete, $this->LienBase);
//on vérifie qu'elle a marché
if (!$result) {
$this->erreur_n = 0;
$this->erreur = mysql_error();
} else {
//on ajoute une case au tableau des requêtes
if ($type == 1) {
$this->liste_req = array_merge($this->liste_req,
array($nom => new navigation($result)));
}
}
return $this->erreur_n;
}
//pour fermer la connection
function close () {
mysql_close($this->LienBase);
unset($liste_req);
return $this->erreur_n;
}
//fermeture de la classe
}
/*Ceci est la classe navigation. Le tableau liste_req référence des objets de
cette classe 2 propriétés principales :
- EOF (end of file) qui est un booléen (entier 1 ou 0) qui indique si
vous êtes en fin du jeu d'enregistrements
- BOF (begin of file) qui est un booléen (entier 1 ou 0) qui indique si
vous êtes en début du jeu
d'enregistrements
5 méthodes utiles :
- MoveNext qui vous permet de passer à l'enregistrement suivant
- MoveBack qui vous permet de revenir à l'enregistrement précédent
- MoveLast qui vous permet de passer au dernier enregistrement
- MoveFirst qui vous permet de revenir au premier enregistrement
- field("nom_du_champ") qui renvoie le contenue du champ où pointe
l'enregistrement
*/
class navigation {
var $tbl_ligne;
var $rang = 0;
var $result;
var $EOF = 1;
var $BOF = 1;
function navigation ($lien_req) {
$this->result = $lien_req;
//on va placer un pointeur sur le premier enregistrement
if (@mysql_num_rows($this->result) != 0) {
$this->rang = 1;
$this->EOF = 0;
$this->BOF = 1;
} else {
$this->rang = 0;
$this->EOF = 1;
$this->BOF = 1;
}
}
function vide() {
if (0 == mysql_num_rows($this->result)) {
return 1;
} else {
return 0;
}
}
function MoveNext() {
if ($this->rang < mysql_num_rows($this->result)) {
$this->rang = $this->rang + 1;
} else {
$this->rang = mysql_num_rows($this->result);
$this->erreur_n = 0;
$this->erreur = "Fin de jeu d'enregistrements atteintes.";
$this->EOF = 1;
}
return $this->erreur_n;
}
function MoveBack() {
if ($this->rang > 1 ) {
$this->rang = $this->rang - 1;
} else {
$this->erreur_n = 0;
$this->erreur = "Début de jeu d'enregistrement atteintes.";
$this->BOF = 1;
$this->rang = 1;
}
return $this->erreur_n;
}
function MoveFirst() {
if (!$this->vide()) {
if (!mysql_data_seek($this->result, 0)) {
$this->erreur_n = 0;
} else {
$this->rang = 1;
$this->BOF = 1;
$this->EOF = 0;
}
}
}
function MoveLast() {
if (!$this->vide()) {
if (!mysql_data_seek($this->result, mysql_num_rows($this->result) - 1)) {
$this->erreur_n = 0;
} else {
$this->rang = mysql_num_rows($this->result);
$this->BOF = 0;
$this->EOF = 1;
}
}
}
function field ($champ) {
if (!mysql_data_seek($this->result, $this->rang - 1)) {
$this->erreur_n = 0;
}
$this->tbl_ligne = mysql_fetch_array($this->result);
if ($this->tbl_ligne[$champ]) {
return $this->tbl_ligne[$champ];
} else {
$this->erreur_n = 0;
$this->erreur = mysql_error();
}
}
//fermeture de la classe
}
//------------------------ EXEMPLE D'UTILISATION ----------------------------------------
//Je vous conseille de mettre ce fichier dans chaque répertoire de votre site
//et d'y faire appel avec la commande :
// -----> require("base.php");
//Tout d'abord on cret la connection (n'oubliez pas de renseigner les variables
//de début de fichier base.php)
$connection = new connection ($hote, $user, $passworddb, $base);
if ($connection->erreur_n == 0) {
echo "Une erreur est survenu à la connection : <br>";
echo $connection->erreur;
exit;
}
//on cret la requête :
$req = "SELECT * FROM personne"; //table personne avec deux champs : nom et prénom
//on éxécute la requête de séléction (notez l'argument du milieu qui est 1), si
//la requête est un
//UPDATE ou INSERT qui ne renvoit pas de jeu d'enregistrements, mettez 2
//le nom de la requête est selectman
if ($connection->execute("selectman",1,$req) == 0) {
echo "Erreur d'exécution : <br>";
echo $erreur;
exit;
}
//on affecte à $records le jeu d'enregistrement résultant de la requête
$records = $connection->liste_req["selectman"]
//on parcours le jeu d'enregistrements
while (!$records->EOF) {
echo $records->fields("nom");
echo $records->fields("prenom");
$records->MoveNext(); //vous pouvez faire MoveBack, MoveFirst, MoveLast
//et test sur BOF (begin of file)
}
?>