Cours PHP - leçon 3 - Travail avec la base de données MySQL.
Vous pensez peut-être qu'il est trop tôt pour commencer le troisième cours directement avec le travail sur la base de données MySQL. Mais croyez-moi, ce n'est pas le cas. Étudier PHP en tant que langage pour la programmation web sans apprendre à travailler avec une base de données, c'est comme avoir un ordinateur sans internet. Oui, vous pouvez travailler sur cet ordinateur, mais vous n'aurez aucun accès à l'information. Donc, serrons les dents et commençons à écrire des requêtes SQL vers la base de données, même si nous ne connaissons rien du langage SQL.
SQL (Structured Query Language — « langage de requêtes structuré ») est un langage informatique universel utilisé pour créer, modifier et gérer des données dans des bases de données tabulaires. SQL repose sur le calcul des enregistrements dans les tables.
PHP peut travailler avec plusieurs bases de données : MySQL, PostgreSQL, Oracle, et bien d’autres. Nous allons étudier l'utilisation de PHP avec MySQL car cette combinaison est très populaire pour la création de sites. Apprendre MySQL vous permettra aussi de travailler avec d'autres bases de données, car SQL est un langage universel avec une syntaxe similaire dans la plupart des bases tabulaires.
MySQL est un système de gestion de bases de données (SGBD) libre. MySQL appartient à Oracle Corporation, qui l'a acquis avec Sun Microsystems, et assure le développement et le support du logiciel. Il est distribué sous licence GNU General Public License ou sous licence commerciale propriétaire.
Nous aurons de nombreux cours sur SQL. Pour l'instant, commençons simplement par la connexion à la base de données. Pour cela, créons une méthode dans notre classe simpleCMS :
public function connectDB() { }
Cela nous permettra d'appeler la connexion à la base de données depuis n'importe quel point du code où l'objet de notre classe existe. C’est très pratique.
Nous aurons aussi besoin des variables serveur MySQL, utilisateur de la base et nom de la base :
class simpleCMS { public $host = 'localhost'; public $username = 'root'; public $password = '';
Nous définissons ces variables par défaut au cas où nous oublierions de les définir. J'utilise Denwer, donc j'ai ces paramètres MySQL. Si vous utilisez un autre serveur ou un hébergement, utilisez les paramètres fournis par votre hébergeur.
Utilisons maintenant la fonction mysql_connect() pour créer la connexion MySQL :
public function connectDB() { $link = mysql_connect($this->host, $this->username, $this->password); if (!$link) { die('Erreur de connexion : ' . mysql_error()); } return $link; }
Explication de mysql_connect() : elle prend trois paramètres — le nom du serveur, le nom utilisateur, et le mot de passe. La fonction die() affiche un message d’erreur si la connexion échoue. $this->host, $this->username, $this->password sont les propriétés de la classe, déjà définies par défaut donc on n’a pas besoin de les passer dans la méthode.
mysql_connect() retourne une ressource $link, similaire à une ressource fichier ou dossier, il faudra fermer cette connexion après usage pour libérer la mémoire. L’affichage d’un message de succès peut être supprimé.
Appelez maintenant notre méthode au début du fichier index.php, juste après avoir inclus la classe :
$obj = new simpleCMS(); // création de l'objet gestionnaire $db_connection = $obj->connectDB();
Partout où nous devons nous connecter à la base, nous incluons le fichier de classe, créons l’objet, et appelons la méthode connectDB(). Ce n’est pas compliqué.
Enfin, comme nous avons ouvert la connexion, il faut la fermer quand on a fini. Utilisez mysql_close(). Je ne créerai pas une méthode dédiée pour ça pour l’instant, mais voici comment faire :
include_once('class/simpleCMS.php'); // inclusion de la classe $obj = new simpleCMS(); // création de l'objet $db_connection = $obj->connectDB(); // ouverture de la connexion // travail avec la base de données mysql_close($db_connection); // fermeture de la connexion
Je pense avoir expliqué clairement, et dans la prochaine leçon nous écrirons des requêtes SQL. Si quelque chose n’est pas clair, écrivez-moi en commentaire.