comprendre les bases d'un framework en PHP




VII. Mode d'emploi


VII. Mode d'emploi

idea 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>
warning 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);
warning 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 :)


CVweb de l'auteurprecedent    sommaire      

 

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. .

Cet article devait etre a la base publié sur www.developpez.com