COURS 6 Adopter un style de programmation clair



Documents pareils
CREATION WEB DYNAMIQUE

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

BTS S.I.O PHP OBJET. Module SLAM4. Nom du fichier : PHPRévisionObjetV2.odt Auteur : Pierre Barais

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

PHP 4 PARTIE : BASE DE DONNEES

Pratique et administration des systèmes

Plan Général Prévisionnel (1/2) (non contractuel) Internet et Outils L1/IO S2-IO2 Bases de données: Jointures, Transactions

Mysql avec EasyPhp. 1 er mars 2006

TUTORIEL D INSTALLATION D ORACLE ET DE SQL DEVELOPPER TUTORIEL D INSTALLATION D ORACLE...1 ET DE SQL DEVELOPPER...1

Stockage du fichier dans une table mysql:

PHP et les Bases de données - Généralités

STID 2ème année : TP Web/PHP

La programmation orientée objet Gestion de Connexions HTTP Manipulation de fichiers Transmission des données PHP/MySQL. Le langage PHP (2)

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Comment développer et intégrer un module à PhpMyLab?

25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP

Transfert d un site local vers un serveur. NPDS REvolution 13. Rédaction : Axel Relecture : Dev & Jpb

Initiation à html et à la création d'un site web

L envoi d un formulaire par courriel. Configuration requise Mail Texte Mail HTML Check-list

WordPress :: Migrer son site du local vers le serveur en ligne

PHP 5. La base de données MySql. A. Belaïd 1

Déclarer un serveur MySQL dans l annuaire LDAP. Associer un utilisateur DiaClientSQL à son compte Windows (SSO)

Sommaire. I.1 : Alimentation à partir d un fichier Access (.mdb)...2

PHP. PHP et bases de données

Gestion du parc informatique matériel et logiciel de l Ensicaen. Rapport de projet. Spécialité Informatique 2 e année. SAKHI Taoufik SIFAOUI Mohammed

Note : Ce tutoriel a été réalisé sur GNU/Linux (Ubuntu) avec un serveur LAMP installé en local.

I. MySQL : Serveur et SGBD

Installation / Sauvegarde Restauration / Mise à jour

Installation locale de JOOMLA SEPIA

HMTL. Exemple de fichier HTML. Structure d un document HTML. Exemple de fichier HTML. Balises HTML. IFT1147 Programmation Serveur Web avec PHP

Dans l'article précédent, vous avez appris

LI345 Bases de données et sites Web. Licence de Sciences et Technologies Mention Informatique

Service WEB, BDD MySQL, PHP et réplication Heartbeat. Conditions requises : Dans ce TP, il est nécessaire d'avoir une machine Debian sous ProxMox

TP Service HTTP Serveur Apache Linux Debian

PDO : PHP Data Object 1/13

Transfert de fichiers (ftp) avec dreamweaver cs5 hébergement et nom de domaine. MC Benveniste

Introduction à JDBC. Accès aux bases de données en Java

L installation a quelque peu changée depuis les derniers tutos, voici une actualisation.

ISPConfig Documentation

BTS SIO SISR3 TP 1-I Le service Web [1] Le service Web [1]

1 Introduction et installation

Thème : Création, Hébergement et référencement d un site Web

MANUEL WORDPRESS. Objectif: Refonte d un site web sous Wordpress I PRE-REQUIS: 1 / Créer un backup (sauvegarde) du site:

Magento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s

Formulaire pour envoyer un mail

Soon_AdvancedCache. Module Magento SOON. Rédacteur. Relecture & validation technique. Historique des révisions

TP réseaux 4 : Installation et configuration d'un serveur Web Apache

Tous les autres noms de produits ou appellations sont des marques déposées ou des noms commerciaux appartenant à leurs propriétaires respectifs.

RÉALISATION D UN SITE DE RENCONTRE

Sécurité des applications web. Daniel Boteanu

Tutoriel Drupal version 7 :

PHP 5.4 Développez un site web dynamique et interactif

SQL Server et Active Directory

Comment Connecter une Base de Données MySQL via un Driver JDBC Avec OpenOffice.org

Utilisation de l . Sommaire

arcopole Studio Annexe 4 Intégration LDAP et processus d authentification Site du programme arcopole :

Projet Viticulture - TP 3 : bases de données distantes BTS Services informatiques aux organisations

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

SAS BI DASHBOARD 4.3 : POUR LE MEILLEUR ET POUR LE FILTRE

Rapport de stage. Création d un site web. Stage du 20/01/2013 au 21/02/2013

CMS Made Simple Version 1.4 Jamaica. Tutoriel utilisateur Récapitulatif Administration

Installation d'un serveur FTP géré par une base de données MySQL

Solutions informatiques

Gestion d'un parc informatique avec OCS INVENTORY et GLPI

Intranet d'établissement avec Eva-web Installation configuration sur serveur 2000 ou 2003 Document pour les administrateurs

Gestion des utilisateurs : Active Directory

Un serveur web, difficile?

Guide d installation de Gael

Remote Cookies Stealing SIWAR JENHANI (RT4) SOUHIR FARES (RT4)

Le meilleur de l'open source dans votre cyber cafe

Microsoft OSQL OSQL ou l'outil de base pour gérer SQL Server

AIDE A LA CREATION D UN COMPTE NOM DE DOMAINE, SOUS-DOMAINE, FTP, BASE DE DONNEES

Mysql. Les requêtes préparées Prepared statements

IIS 6 - PHP5 - MySQL phpmyadmin 2.6

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

HowTo Installer egroupware 1.2 sur SME Serveur 7.0

laposte.net) Ministère de l'éducation nationale Atelier sécurité Rabat RALL 2007

Utiliser un CMS: Wordpress

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Utilisation d Hyperplanning 2011

Maintenir Debian GNU/Linux à jour

OUAPI Guide d installation Outil d administration de parc informatique. Documentation d installation et de paramétrage

Mise en place Active Directory, DNS Mise en place Active directory, DNS sous Windows Serveur 2008 R2

POVERELLO KASONGO Lucien SIO 2, SISR SITUATION PROFESSIONNELLE OCS INVENTORY NG ET GLPI

INSTALLATION DE L APPLICATION DU CONTEXTE ITASTE

MODE OPERATOIRE OPENOFFICE BASE

Utilisation du module Scribe IMPORTATION DES COMPTES

Documentation de conception

TP JAVASCRIPT OMI4 TP5 SRC

Sauvegarde des bases SQL Express

Introduction. Passage de sites statiques à des sites dynamiques

Déployer une application Web avec WebMatrix et Ma Plateforme Web

Comment créer vos propres pages web?

LA PLATE-FORME D'ALTERN C

Transcription:

COURS 6 Adopter un style de programmation clair Lorsque votre site prend de l'importance, le code devient vite illisible et incompréhensible si vous ne pensez pas à l'organiser. Mais comment organiser son code de manière à être le plus clair possible? Il existe de nombreuses solutions, chacune ayant ses avantages et ses inconvénients. L'une des solutions fréquemment retenue est de dissocier la vue c'est à dire le code xhtml visible, du traitement des données c'est à dire de l'accès aux bases de données et le contrôle des résultats. On parle alors de modèles MVC : Modèle Vue Contrôleurs. Présentation succincte du modèle MVC : Modèle Vue Contrôleur Au lieu de tout mettre dans un seul fichier et ainsi de rendre votre code peu clair, le modèle MVC divisera le tout en trois fichiers. 1 Le modèle Ce fichier ne contiendra que des fonctions. Le modèle a pour but de gérer l'organisation des données. Vous ne pourrez effectuer des requêtes SQL que dans ces fonctions! Le contrôleur et la vue ne devront contenir aucun appel à la base de données. 2 La vue La vue contient le code xhtml. C'est la seule partie qui doit en contenir. Les requêtes SQL étant effectuées dans le modèle et le contrôle des données dans le contrôleur, le code PHP devra se contenter d'afficher les résultats. 3 Le contrôleur C'est le fichier qui contient toute la logique du code. Vous commencerez généralement par y inclure votre modèle. Vous procéderez à des vérifications d'ordre général (comme les autorisations), puis vous pourrez appeler des fonctions avant d'envoyer les résultats à la vue. Le modèle MVC sera abordé par la suite, notamment le rôle des modèles et des contrôleurs, mais nous pouvons déjà organiser notre code pour éviter à la vue d'avoir à gérer toutes les requêtes SQL, et ainsi commencer à construire nos contrôleurs. Exemple d'organisation de votre code A partir de la table salariés :

On souhaite obtenir la vue suivante : Cette vue peut être obtenue d'une manière classique avec le code suivant : $connect = mysql_connect('localhost','toto','toto') or die ("erreur de connexion"); mysql_select_db('salaries') or die ("erreur de connexion base"); $req1 = "SELECT * FROM salaries ;"; $result1 = mysql_query($req1) or die (mysql_error()); <table border=2> <th>id</th><th>nom</th><th>prenom</th><th>date-naissance</th> <th>date-embauche</th><th>salaire</th><th>service</th> echo "<tr>"; while ( $ligne=mysql_fetch_array($result1)){ echo "<tr>"; echo "<td>".$ligne['idsalaries']."</td>"; echo "<td>".$ligne['nom']."</td>"; echo "<td>".$ligne['prenom']."</td>"; echo "<td>".$ligne['date_naissance']."</td>"; echo "<td>".$ligne['date_embauche']."</td>"; echo "<td>".$ligne['salaire']."</td>"; echo "<td>".$ligne['service']."</td>"; echo "</tr>"; </table> $req2 = "SELECT count(*) FROM salaries ;"; $result2 = mysql_query($req2) or die (mysql_error()); $ligne=mysql_fetch_array($result2); echo "<p>nombre de salariés : ".$ligne[0]."</p>"; $req3 = "SELECT avg(salaire) FROM salaries ;"; $result3 = mysql_query($req3) or die (mysql_error()); $ligne=mysql_fetch_array($result3); echo "<p>salaire moyen : ".round($ligne[0])."</p>"; Ce code fonctionne mais il est difficile à maintenir et il peut vite devenir incompréhensible, si on souhaite par exemple afficher en plus du nombre de salariés, le salaire minimum, maximum etc.. Il faut donc essayer de le réorganiser.

Réorganisation du code : Dans un premier temps, la vue n'a pas à gérer l'accès à la base de données. Si votre site comporte plusieurs vues, vous allez devoir intervenir dans chaque vue en cas de modification des paramètres de connexion. Il est préférable de créer un fichier contenant les paramètres de connexion que l'on va inclure dans chaque vue avec un include ou un require_once : require_once('connexion.php'); connexion.php $server = 'localhost'; $user = 'toto'; $mdp = 'toto'; $base = 'salaries'; mysql_connect($server,$user,$mdp) or die ("erreur de connexion"); mysql_select_db($base) or die ("erreur de connexion base"); La vue contient le code xhtml. C'est la seule partie qui doit en contenir. Les requêtes SQL doivent être effectuées ailleurs, la vue doit se contenter d'afficher les résultats. Il faut don créer un nouveau fichier qui va contenir toutes les fonctions qui se chargeront des requêtes SQL. Par exemple, si on souhaite afficher le nombre de salariés, on va définir une fonction que le nommera getnbsalaries qui retournera le résultat de la requête suivante : SELECT count(*) FROM salaries fonctions.php require_once('connexion.php'); function getnbsalaries(){ $req = "SELECT count(*) FROM salaries ;"; $result = mysql_query($req) or die (mysql_error()); $ligne=mysql_fetch_array($result); return $ligne[0]; Et dans notre vue, on va placer avant tout code HTML, les données que l'on souhaite afficher : require_once('fonctions.php'); $nbsalaries = getnbsalaries(); <p>nombre de salariés : <?= $nbsalaries ; </p> Il est préférable d'utiliser la syntaxe suivante pour afficher les données : <p>nombre de salariés : <?= $nbsalaries ; </p> voir : http://codeigniter.fr/user_guide/general/alternative_php.html Elle permet d'éviter les problèmes de concaténation et logiquement c'est au code HTML d'inclure du PHP et non l'inverse : echo "<p>nombre de salariés : ".$nbsalaries."</p>" ; Lorsque la requête SQL retourne plusieurs lignes, la fonction devra retourner un tableau contenant toutes les lignes. Par exemple si l'on souhaite afficher la liste et les attributs de tous les salariés

function getallsalaries(){ $listesalaries = array(); $requete = 'SELECT * FROM salaries'; $result = mysql_query( $requete ) or die( mysql_error() ); while($ligne = mysql_fetch_assoc($result)) { $listesalaries[]=$ligne; return $listesalaries; On initialise un tableau : $listesalaries = array() ; On parcourt chaque ligne du résultat de la requête : while($ligne = mysql_fetch_assoc($result)) On ajoute au tableau chaque ligne : $listesalaries[]=$ligne ; La variable $listesalaries est donc un tableau à deux dimensions, que l'on parcourt ainsi : ( voir cours sur les tableaux associatifs) foreach($listesalaries as $cle => $valeur){ echo "salariés n :". $cle. "<br />"; foreach ($valeur as $val){ echo "$val <br />"; Dans notre vue : require_once('fonctions.php'); $nbsalaries = getnbsalaries() ; $listesalaries = getallsalaries() ; <table border=2> <th>id</th> <th>nom</th> <th>prenom</th> <th>date-naissance</th> <th>date-embauche</th> <th>salaire</th> <th>service</th> foreach ($listesalaries as $cle=>$valeur): <tr> foreach ($valeur as $val): <td><?= $val </td> endforeach; </tr> endforeach; </table> Notez que pour le foreach, il n'y a pas d'accolades. L'accolade de fin est remplacée par un endforeach. Toutes les structures de contrôles listées ci dessus ont des syntaxes de fermetures similaires : endif, endfor, endforeach et endwhile Notez aussi qu'à la place d'employer un point virgule après chaque structure (sauf la dernière), on utilise les deux points.

Travail à faire : 1 Télécharger le script salaries.sql. Se connecter sur le serveur Mysql avec phpmyadmin ( login : root, mdp : sio), créer une base salaries et exécuter dans la base créée le script salaries.sql. 2 Télécharger le script listesalaries.php, placer ce script dans votre répertoire public_html. Modifier les paramètres de connexion et tester l'exécution du script. 3 Réorganiser votre code pour séparer la vue du traitement des données. 4 Écrire les fonctions qui vont vous permettre d'obtenir la vue suivante : 5 Ajouter des liens pour supprimer et modifier un enregistrement :