Home Forums Wiki Doc Install Extras Screenshots Source Code Projects Blog Users Groups Register
Glx-Dock / Cairo-Dock Wiki ElementSpeak lib_database
The latest stable release is the *3.4.0* : How to install it here.
Note: We just switched from BZR to Git on Github! (only to host the code and your future pull requests)
History View code

Glx-Dock / Cairo-Dock

Home

History

Language

fr Français

Support Us

Flattr this

Cairo-Dockon

ElementSpeak/lib_database

Introduction
lib_database est une bibliothèque de fonction PHP permettant de se connecter et d'échanger avec une base de donnée MySQL. Elle à été codé spécialement pour ElementSpeak bien qu'elle soit indépendante de ce dernier et qu'elle puisse être utilisé par d'autre projet.

Structure générale
lib_database est principalement un objet PHP nommé database. Toutes les fonctions de la bibliothèque sont des méthodes de cette objet. Cette structure à l'avantage de permettre l'utilisation de plusieurs base de donnée simultanément. Si une requête SQL est passée à travers l'objet $db1, elle sera envoyée vers la base de donnée 1. De même, si on créé un nouvel objet database nommé $db2, toute requête SQL passée depuis cette objet sera envoyée vers la deuxième base de donnée.
L'autre avantage engendré par les objets et que toutes les informations peuvent être mémorisées. Par exemple, pour faciliter le débogage, il est possible de récupérer toutes les requêtes SQL envoyées.

Initialisation
Il ne faut que deux ligne pour initialiser la base de donnée. La première sert à charger la classe d'objet database et la deuxième à créer cet objet.


include('lib_database.php'); //Chargement de lib_database
$db = new database//Création de l'objet



Note : Dans ElementSpeak, lib_database se trouve dans le répertoire includes. L'adresse du fichier à inclure est donc 'includes/lib_database.php'.

Connexion à la base de donnée
La première chose à faire avant toute utilisation sérieuse est de se connecter à la base de donnée. La méthode utilisé s'appelle connect et nécessite 4 paramètres : l'adresse de la base de donnée, le nom d'utilisateur, le mot de passe et le base de donnée concernée.


$db
->connect('localhost','root','password','base1');



Pour plus de propreté, n'oubliez par de vous déconnecter à la fin de votre programme PHP


$db
->disconnect();



Note : Dans ElementSpeak, chaque fonction est respectivement situé dans header.php et dans footer.php affin que chaque page soient connectée à la base de donnée automatiquement. De plus, les 4 paramètres sont situé dans le fichier configurations/database.php. Ainsi, pour modifier les paramètres de la base de donnée, il ne faut modifier qu'une seul fichier.

Utilisation
L'utilisation de lib_database passe principalement par trois méthodes.

query
La méthode query permet de passer une requête SQL à la base de donnée. Elle suffis de passer la requête SQL en paramètre pour que cela fonctionne.


$db
->query('UPDATE table SET col = "val" WHERE condition = true');



Si la requête contient des erreurs, query retournera false, sinon elle retournera le résultat fourni par le base de donnée.


if( $db->query($sql) ) echo('La requête SQL à fonctionnée');
else echo (
'La requête SQL à échouée');



Sachez qu'il est possible de d'appeler une fonction en cas d'erreur. Pour cela, reportez-vous à la partie Configuration.

fetchrow
La méthode fetchrow permet la lecture du résultat fournit par la base de donnée sous forme d'un tableau. Elle ne demande que le résultat de la méthode query pour retourner un tableau contenant les valeurs de chaque colonne sous la forme array('colonne1' => 'valeur1', 'colonne2' => 'valeur2' ...).
Attention, cette méthode ne retourne les valeurs que d'une seul ligne de votre table. Il est nécessaire de ré-appeler la méthode pour accéder à la seconde ligne. Si aucune ligne n'est retournée, fetchrow retournera FALSE.

Pour accéder à une ligne, il faut donc faire :

$r 
$db->query($sql); //Envoi de la requête SQL
$tableau $db->fetchrow($r); //Lecture de la première ligne retournée
print_r($tableau); //Affichage du résultat



Il est conseillé de mettre fetchrow en condition pour prévoir le cas où aucune ligne n'est trouvée dans la table :

$r 
$db->query($sql); //Envoi de la requête SQL
if( $tableau $db->fetchrow($r) ) //Lecture de la première ligne retournée
{
    
print_r($tableau); //Affichage du résultat
}
else echo(
'Aucune ligne n\'a été trouvée');


Pour afficher l'ensemble des ligne retourné, il faut utiliser une boucle while :

$r 
$db->query($sql); //Envoi de la requête SQL
while( $tableau $db->fetchrow($r) ) //Lecture de chaque ligne retournée
{
    
print_r($tableau); //Affichage du résultat de la ligne courante
}



Pour finir, si vous voulez lister l'ensemble des lignes retourné tout en voulant afficher une message quand il n'y en a pas, préférez cette solution :

$r 
$db->query($sql); //Envoi de la requête SQL
if( $tableau $db->fetchrow($r) ) //Lecture de la première ligne retournée
{
    do
    {
        
print_r($tableau); //Affichage du résultat de la ligne courante
    
}
    while( 
$tableau $db->fetchrow($r) ); //Lecture de chaque ligne restante. Ne pas oublier le ";" à la fin.
}
else echo(
'Aucune ligne n\'a été trouvée');



select
La méthode select permet de retourner directement un tableau a partir d'une requête SQL. C'est un équivalent de l'association query + fetchrow qui permet de rendre le code plus lisible et de s'affranchir d'une ligne. Elle ne fonctionne que dans le cas ou une seul ligne est attendue.

if($tableau $db->select($sql))
{
    
print_r($tableau); //Affichage du résultat
}
else echo(
'Aucune ligne n\'a été trouvée');


Configuration
La configuration de l'objet database passe par la méthode config. Elle accepte deux arguments : le clé et sa value.

$db->config('error',false);


error
La clé error permet de définir une fonction à appeler lorsqu'une requête SQL échoue. La fonction reçois en argument la requête SQL en question. Par defaut, cette clé vaut false.

function sql_error($sql)
{
    echo(
'Erreur SQL : '.$sql);
}

$db->config('error','sql_error');


debug
La clé debug est une clé boolean qui permet de garder en mémoire toute les requètes SQL envoyées dans une page. Elles se trouvent dans le tableau sqls. Pour les récupérer, il faut faire défiler toutes ses valeurs. L'exemple suivant utilise une boucle foreach qui est toute indiqué, puisque qu'elle sert justement à lire les valeurs d'un tableau.

foreach($db->sqls as $sql)
{
    echo(
$sql.'<br/>'); //Affiche la requête SQL et un retour à la ligne HTML.
}


Glx-Dock / Cairo-Dock Wiki ElementSpeak lib_database Top

Online users :

Powered by ElementSpeak © 2007 Adrien Pilleboue, 2009-2013 Matthieu Baerts.
Dock based on CSS Dock Menu (Ndesign) with jQuery. Icons by zgegball
Cairo-Dock is a free software under GNU-GPL3 licence. First stable version created by Fabounet.
Many thanks to TuxFamily for the web Hosting and Mav for the domain name.