comprendre les bases d'un framework en PHP
VII. Mode d'emploi
VII. Mode d'emploi
 |
Mais au fait, comment s'utilise ce framework?
|
En voila une belle question!
Pour commencer, il faut créer une page d'accueil nommée "defaut.html"
(nous avons programmés cette page comme page par défaut en IV-B)
et située dans le sous répertoire "templates"
| ./templates/defaut.html | <html>
<head>
<title>Accueil</title>
</head>
<body>
Bienvenue sur cette version de demonstration du framework!
<br/>
<br/>
cliquez <a href="index.php?page=template">ici</a> pour accéder a la
page de demonstration!
</body>
</html> |
 |
Dans un souci de vulgarisation, le code HTML fournit en exemple
n'est pas aux normes, cependant, il répond a nos besoins :
d'aspect moins complexe, il est cependant affiché par tous les navigateurs
|
Si vous essayez de tester cette page, vous aurez droit a un beau
message d'erreur, en effet, le contrôleur cherche a charger son
homonyme coté PHP, créez donc un fichier vide dans le répertoire
"vues" : nommé defaut.php, puis testez le tout.
créons maintenant la page que nous avons mis en lien. Attention,
en notant page=templatedans les paramètres du lien,
nous venons de conditionner le nom des deux pages a créer :
| ./templates/template.html | <html>
<head>
<title>demonstration des templates</title>
</head>
<body>
<ul>
<li>[ test1; block=li]
[test1; nom]
<br/>
[test1;prenom]
</li>
</ul>
<table border = "1" style="background-color : #F5F5F5;">
<tr>
<th>
Nom
</th>
<th>
Prénom
</th>
</tr>
<tr>
[test2;block=tr]
<td>
[test2;nom]
</td>
<td>
[test2;prenom]
</td>
</tr>
</table>
<br/>
<br/>
<form action="index.php" method="post" style="display:none;">
Prénom :
<input type="text" name="prenom" value="Mickey" />
<br />
Nom :
<input type="text" name="nom" value="Mouse" />
<br />
<input type="submit" value="OK" />
</form>
<br/>
<br/>
<a href="?page=defaut">retours</a>
</body>
</html> |
cette page, un peu plus complexe, implémente deux champs réplicables :
"test1" et "test2". Afin de les exploiter, nous allons
écrire le code PHP associé :
| ./vues/template.php | dbgStore("Nous sommes dans './vues/template.php' et allons tenter d'utiliser le bloc 'test1'");
$result = query("SELECT nom, prenom FROM personne ");
mergeDyn("test1", $result); |
 |
Attention, pensez toujours a rajouter les tags <?php
et ?> aux scripts PHP.
|
Bon, vous pensez que ça ma marcher?
Essayez pour voir!
En bas de page, grâce aux fonction de debug, vous devriez
obtenir des information quand a l'erreur qui ne manquera pas
de survenir :
N'oublions pas que nous sommes
en train de créer une version de démonstration, nous partons
donc de zéro. Ainsi, aucune base de donnée n'existe encore, la requête
ne peut donc qu'échouer. Créons donc une base de test :
| création de la base | CREATE DATABASE tuto;
USE tuto;
CREATE TABLE `personne` (
`nom` varchar(100) NOT NULL default '',
`prenom` varchar(100) NOT NULL default ''
);
INSERT INTO `personne` (`nom`,`prenom`) VALUES
('pierre','dupont'),
('alain','dupontel'),
('ichigo','kazuma'),
('molko','brian'); |
Voila, nous pouvons dorénavant visualiser la page. Vous constaterez
que seules les balises "test1" ont été utilisées.
Modifions le code PHP :
| nouvelle version | dbgStore("Nous sommes dans './vues/template.php' et allons tenter d'utiliser le bloc 'test2'");
$result = query("SELECT nom, prenom FROM personne ");
mergeDyn("test2", $result); |
Cette fois ci, seules les balises "test2" sont utilisées
par le moteur.
Maintenant, nous allons lancer une requête SQL :
supprimez l'attribut "style="display:none;"" de la balise
form. très bien, maintenant, lorsque ce formulaire est remplit,
il ne se passe rien, c'est tout a fait normal, il faut le gérer coté PHP :
| ajout d'un enregistrement | dbgStore("Nous sommes dans './vues/template.php' et allons utiliser un formulaire");
if ( isset($_REQUEST['nom']) && isset($_REQUEST['prenom']) ) {
dbgStore("Une requête d'insertion va etrre réalisée");
$table = "personne";
$champ = "nom, prenom";
$value = $_REQUEST['nom'] . "," . $_REQUEST['prenom'];
dbInsert ($table, $champ, $value);
}
$result = query("SELECT nom, prenom FROM personne ");
mergeDyn("test2", $result); |
Comme toujours, nous allons tester si aucun bug ne fait son apparition...
Et là, c'est le drame! la requête ne fonctionne pas. En effet, en
analysant les message de la fonction de debug, nous constatons :
| message |
|
On va lancer la requête : INSERT INTO personne (nom, prenom) VALUES (Mouse,Mickey) -- Niveau : 5
La requête a échoué, message de la BDD : 'Champ 'Mouse' inconnu dans field list', erreur numero : 1054 -- Niveau : 5
|
le bilan en est que
nous essayons d'insérer des chaînes de caractères sans les entourer
de guillemets. Corrigeons ce problème :
| Code corrigé | dbgStore("Nous sommes dans './vues/template.php' et allons utiliser un formulaire");
if ( isset($_REQUEST['nom']) && isset($_REQUEST['prenom']) ) {
dbgStore("Une requête d'insertion va etrre réalisée");
$table = "personne";
$champ = "nom, prenom";
$value = "'{$_REQUEST['nom']}', '{$_REQUEST['prenom']}'";
dbInsert ($table, $champ, $value);
}
$result = query("SELECT nom, prenom FROM personne ");
mergeDyn("test2", $result); |
Voila, le code fonctionne, vous pouvez constater que votre
saisie dans le formulaire a bien été insérée dans la base. Une
autre façon de faire aurait été d'utiliser une fonction dédiée :
reprenons le code, afin d'en créer une. Pour le fichier HTML,
éditez la ligne suivante :
| ligne a réécrire | <form action="index.php" method="post" > |
Et remplacez la par :
| nouvelle ligne - choix 1 | <form action="index.php" method="post" >
<input type="hidden" name="traitement" value="ajoutPersonne" />
<input type="hidden" name="typeTraitement" value="BDD" /> |
vous pouvez, de même, déplacer la partie suivante du code PHP :
| Partie du code a déplacer | if ( isset($_REQUEST['nom']) && isset($_REQUEST['prenom']) ) {
dbgStore("Une requête d'insertion va etrre réalisée");
$table = "personne";
$champ = "nom, prenom";
$value = "'{$_REQUEST['nom']}', '{$_REQUEST['prenom']}'";
dbInsert ($table, $champ, $value);
} |
Le fichier dans lequel coller ce code est déterminé par les
paramètres que nous avons transmis via le formulaire :
- traitement="ajoutPersonne"
- typeTraitement="BDD"
Il faut donc créer un fichier nommé ajoutPersonne.php
ce fichier doit être situé dans l'aboressence suivante :
./traitements/BDD (en effet, tous les traitement sont
dans le répertoire traitements, le sous répertoire, quand
a lui, est conditionné par la valeur de "typeTraitement")
Pensez, bien entendu a ajouter un message de debug, le fichier
final devrait ressembler a :
| ./traitements/BDD/ajoutPersonne.php | dbgStore("Nous somme dans ajoutPersonne.php");
if ( isset($_REQUEST['nom']) && isset($_REQUEST['prenom']) ) {
dbgStore("Une requête d'insertion va etrre réalisée");
$table = "personne";
$champ = "nom, prenom";
$value = "'{$_REQUEST['nom']}', '{$_REQUEST['prenom']}'";
dbInsert ($table, $champ, $value);
} |
Voila, vous devriez être en mesure d'utiliser cet outil que nous venons de programmer :)
Les sources présentés sur cette pages sont libre de droits,
et vous pouvez les utiliser à votre convenance. Par contre cette page de présentation de ces sources constitue une oeuvre intellectuelle protégée par les droits d'auteurs. Copyright ©2006 .
Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu :
textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérets.
.
|