Design patterns et MySQL+PHP
This commit is contained in:
parent
ef665bdb16
commit
419ec9ba9a
10
design_patterns/README.md
Normal file
10
design_patterns/README.md
Normal file
|
@ -0,0 +1,10 @@
|
|||
# Design patterns
|
||||
|
||||
On traduit ça par *patrons de conception*. Ce sont des façons de programmer éprouvées et réputées pour apporter des propriétés comme la cohérence, la robustesse, la réutilisabilité, etc. Ils ont vocation à être indépendants du langage de programmation cible.
|
||||
|
||||
Un patron de conception est issu de l'expérience des concepteurs de logiciels2. Il décrit sous forme de diagrammes un arrangement récurrent de rôles et d'actions joués par des modules d'un logiciel, et le nom du patron sert de vocabulaire commun entre le concepteur et le programmeur3. D'une manière analogue à un motif de conception en architecture, le patron de conception décrit les grandes lignes d'une solution, qui peuvent ensuite être modifiées et adaptées en fonction des besoins4.
|
||||
|
||||
Les patrons de conception décrivent des procédés de conception généraux et permettent en conséquence de capitaliser l'expérience appliquée à la conception de logiciel. Ils ont une influence sur l'architecture logicielle d'un système informatique.
|
||||
|
||||
[Wikipedia](https://fr.wikipedia.org/wiki/Patron_de_conception)
|
||||
|
42
un_peu_plus_loins/comment_jouer_avec_mysql.md
Normal file
42
un_peu_plus_loins/comment_jouer_avec_mysql.md
Normal file
|
@ -0,0 +1,42 @@
|
|||
# Comment jouer avec MySQL ?
|
||||
|
||||
Au même titre qu'un serveur web, un serveur de mail, ou un serveur SVN, MySQL est un service qui écoute sur un port.
|
||||
|
||||
Typiquement, quand vous lancer MySQL, un socket est créé afin que vous puissiez communiquer avec.
|
||||
|
||||
Pour accéder un serveur MySQL, vous devez ouvrir une connexion TCP vers l'adresse IP du serveur MySQL en indiquant le port d'écoute. Par défaut le port est 3306.
|
||||
|
||||
Une fois connecté à MySQL, vous devez communiquer avec le langage SQL.
|
||||
|
||||
Voici un exemple en ligne de commande :
|
||||
|
||||
```bash
|
||||
$ mysql -uroot -proot -hlocalhost
|
||||
Welcome to the MySQL monitor. Commands end with ; or \g.
|
||||
Your MySQL connection id is 1457
|
||||
Server version: 5.5.39-1-log (Debian)
|
||||
|
||||
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
Oracle is a registered trademark of Oracle Corporation and/or its
|
||||
affiliates. Other names may be trademarks of their respective
|
||||
owners.
|
||||
|
||||
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
|
||||
|
||||
mysql> show databases;
|
||||
+--------------------+
|
||||
| Database |
|
||||
+--------------------+
|
||||
| information_schema |
|
||||
| SRC2_2011_12_07 |
|
||||
| SRCe2c |
|
||||
| bookstore_schemas |
|
||||
| brightgamepanel |
|
||||
| cmg_sf_preprod |
|
||||
| cmg_sf_preprod2 |
|
||||
| cmg_sf_preprod3 |
|
||||
| cmsintaller |
|
||||
+--------------------+
|
||||
9 rows in set (0.02 sec)
|
||||
```
|
1
un_peu_plus_loins/du_sql.md
Normal file
1
un_peu_plus_loins/du_sql.md
Normal file
|
@ -0,0 +1 @@
|
|||
# Du SQL ?!
|
|
@ -33,9 +33,9 @@ Mettez un système qui enregistre l'IP de l'internaute dans un fichier Vous devr
|
|||
|
||||
Une liste de fonctions qui pourraient vous intéresser :
|
||||
|
||||
- ```isset```
|
||||
- ```file_get_contents```
|
||||
- ```file_put_contents```
|
||||
- ```fopen``` et ```fwrite```
|
||||
|
||||
## Un peu d'ergonomie…
|
||||
|
||||
|
|
17
un_peu_plus_loins/introduction.md
Normal file
17
un_peu_plus_loins/introduction.md
Normal file
|
@ -0,0 +1,17 @@
|
|||
# Introduction
|
||||
|
||||
Une base de données est un système logiciel qui permet d'enregistrer et de lire des informations.
|
||||
|
||||
Ces informations sont structurées :
|
||||
* dans des base de données
|
||||
* puis dans des tables
|
||||
* puis dans attributs
|
||||
* et sont typées
|
||||
|
||||
![](https://user.oc-static.com/files/59001_60000/59541.png)
|
||||
Source : [Openclassrooms](https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/presentation-des-bases-de-donnees-2)
|
||||
|
||||
Elles peuvent avoir des relations entre elles :
|
||||
* un article de blog est lié à une ou plusieurs catégories
|
||||
* des catégories peuvent appartenir à des sections
|
||||
* des commentaires sont déposés pour des articles
|
27
un_peu_plus_loins/larchitecture_generale.md
Normal file
27
un_peu_plus_loins/larchitecture_generale.md
Normal file
|
@ -0,0 +1,27 @@
|
|||
# L'architecture générale
|
||||
|
||||
Une installation de MySQL permet d'identifier un premier niveau de données : les bases. Par exemple, si on doit créer 5 sites internet, on pourra imaginer avoir une base de données par site.
|
||||
|
||||
Dans une base de données sont définies des tables. Dans le cas d'un blog, on pourrait avoir ces tables :
|
||||
|
||||
* utilisateurs
|
||||
* articles
|
||||
* catégories
|
||||
* tags
|
||||
* commentaires
|
||||
|
||||
Une tables est caractérisée par des champs (nommés colonnes ou attributs). Ces champs ont bien sûr un nom, mais aussi plein de caractéristiques :
|
||||
* le type (entier, chaine, date, etc.)
|
||||
* la valeur par défaut
|
||||
* si c'est un index ou pas
|
||||
* ...
|
||||
|
||||
On a enfin une gestion des permissions fines qui permet d'accorder à un utilisateur :
|
||||
* quelle(s) bases de données il peut accéder
|
||||
* quelle(s) tables il peut accéder
|
||||
* quel(s) champ(s) il peut accéder
|
||||
|
||||
L'accès se détermine par :
|
||||
* le droit de lire
|
||||
* le droit d'écrire
|
||||
|
18
un_peu_plus_loins/les_base_de_donnees.md
Normal file
18
un_peu_plus_loins/les_base_de_donnees.md
Normal file
|
@ -0,0 +1,18 @@
|
|||
# Les base de données
|
||||
|
||||
Une base de données est un système logiciel qui permet d'enregistrer et de lire des informations.
|
||||
|
||||
Ces informations sont structurées :
|
||||
* dans des base de données
|
||||
* puis dans des tables
|
||||
* puis dans attributs
|
||||
* et sont typées
|
||||
|
||||
![](https://user.oc-static.com/files/59001_60000/59541.png)
|
||||
Source : [Openclassrooms](https://openclassrooms.com/courses/concevez-votre-site-web-avec-php-et-mysql/presentation-des-bases-de-donnees-2)
|
||||
|
||||
Elles peuvent avoir des relations entre elles :
|
||||
* un article de blog est lié à une ou plusieurs catégories
|
||||
* des catégories peuvent appartenir à des sections
|
||||
* des commentaires sont déposés pour des articles
|
||||
|
|
@ -36,4 +36,7 @@ array(62) {
|
|||
```
|
||||
|
||||
- Les cookies sont accessibles via ```$_COOKIE``` et les données stockées en session (coté serveur et coté client) avec ```$_SESSION```
|
||||
- ```$_FILES``` permet de gérer l'upload de fichiers
|
||||
|
||||
http://php.net/manual/fr/reserved.variables.php
|
||||
|
||||
|
|
15
un_peu_plus_loins/mysql.md
Normal file
15
un_peu_plus_loins/mysql.md
Normal file
|
@ -0,0 +1,15 @@
|
|||
# MySQL
|
||||
|
||||
Il existe plusieurs types de base de données. La plus courrante est la base de données "relationnelle". C'est ce dont la page précédent fait référence.
|
||||
|
||||
MySQL est l'une d'entre elles. Il existe aussi MariaDB (un fork de MySQL), PostgreSQL, Orable, Sqlite, etc.
|
||||
|
||||
Les avantages de MySQL à d'autres SGBD (système de gestion de base de données) sont nombreux :
|
||||
|
||||
* simple à déployer
|
||||
* simple à adminitrer (je paye une bière à celui qui installe la version gratuite d'Oracle sur une Debian en moins d'une journée)
|
||||
* simple à comprendre
|
||||
|
||||
Par ailleurs, MySQL est dispose de bibliothèques dans quasiment tous les langages (du fait de sa popularité).
|
||||
|
||||
Il faut tout de même être conscient que ce n'est pas le SGBD parfait et que malgré ses avantages, des gros problèmes existent (mais ils ne vous intéressent pas encore) .
|
73
un_peu_plus_loins/php.md
Normal file
73
un_peu_plus_loins/php.md
Normal file
|
@ -0,0 +1,73 @@
|
|||
# PHP
|
||||
|
||||
Plusieurs bibliothèques PHP existent pour travailler avec MySQL.
|
||||
|
||||
Celle qu'il faut utiliser est PDO. Comme SQL est un langage utilisé à la fois chez MySQL, PostgreSQL, Oracle, etc., des gens ont travaillé sur un outil qui permet de jouer avec ces sgbd sans modifier le code des applications. PDO est donc une couche d'abstraction.
|
||||
|
||||
Voici comment se connecter à MySQL avec PDO :
|
||||
|
||||
```php
|
||||
<?php
|
||||
$dsn = 'mysql:dbname=cours_wp;host=localhost';
|
||||
$user = 'root';
|
||||
$password = 'root';
|
||||
|
||||
$pdo = new PDO($dsn, $user, $password);
|
||||
```
|
||||
|
||||
Une fois connecté, on peut balancer de la requête SQL :
|
||||
|
||||
```php
|
||||
$query = $pdo->prepare('insert into wp_posts(post_title, post_date) values(:title, now()');
|
||||
|
||||
$query->execute(array(
|
||||
':title' => "Comment faire pousser des pommes ?",
|
||||
));
|
||||
|
||||
$query = $pdo->query('select post_title, post_date from wp_posts');
|
||||
$results = $query->fetchAll();
|
||||
|
||||
var_dump($results);
|
||||
```
|
||||
|
||||
Le résultat est :
|
||||
|
||||
```
|
||||
array(3) {
|
||||
[0]=>
|
||||
array(4) {
|
||||
["post_title"]=>
|
||||
string(28) "Bonjour tout le monde !"
|
||||
[0]=>
|
||||
string(28) "Bonjour tout le monde !"
|
||||
["post_date"]=>
|
||||
string(19) "2014-10-13 18:59:55"
|
||||
[1]=>
|
||||
string(19) "2014-10-13 18:59:55"
|
||||
}
|
||||
[1]=>
|
||||
array(4) {
|
||||
["post_title"]=>
|
||||
string(20) "Page d’exemple"
|
||||
[0]=>
|
||||
string(20) "Page d’exemple"
|
||||
["post_date"]=>
|
||||
string(19) "2014-10-13 18:59:55"
|
||||
[1]=>
|
||||
string(19) "2014-10-13 18:59:55"
|
||||
}
|
||||
[2]=>
|
||||
array(4) {
|
||||
["post_title"]=>
|
||||
string(34) "Je vais devenir le maître du monde"
|
||||
[0]=>
|
||||
string(34) "Je vais devenir le maître du monde"
|
||||
["post_date"]=>
|
||||
string(19) "2014-10-15 22:32:47"
|
||||
[1]=>
|
||||
string(19) "2014-10-15 22:32:47"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vous remarquerez que les données sont dans un format similaire au dernier TP.
|
Loading…
Reference in a new issue