Mario Prospero, Ingénieur en développement PHP Webmastering
Développeur d'applications WEB depuis Janvier 2008, avec une expérience variée dans la GED, l'éditique et la conduite de projets, mes expériences les plus récentes concernent le développement en PHP5 sur Zend Framework et Symfony 1.4.
Fort de mon passé dans le suivi de projets et l'assistance clientèle, je garde une écoute active aux souhaits des sociétés me confiant leur projet, mon principal objectif demeurant avant tout l'entière satisfaction du client.
Compétences:
- Licence en Informatique, 10 ans d'expérience
- PHP 4 et 5, Mysql, Oracle, Css, Javascript, Ajax, Jquery, Photoshop, Gimp, Flash, Joomla, Zend...
- Dispense de formation sur la création de site à partir du CMS Joomla
- Dernières réalisations: IHM de suivi postal sur Zend-Framework et Soffio di Fantasia sur le CMS Joomla
| Mail: |
This e-mail address is being protected from spambots. You need JavaScript enabled to view it
|
||
| Siret: | 512 559 089 000 28 |
||
Développement d'applications PHP 4 et 5
- Développement en PHP5 sur Zend Framework
-
Développement en PHP4/5 d'un IHM de demande de portabilité pour un opérateur téléphonique
-
Développement en PHP4/5 d'un IHM de suivi de projet pour Blue Holding Space de Paris
Conception de sites Web basés sur le CMS Joomla
-
Site Joomla, Thématique: Nail Art soffiodifantasia.biz
- Site Joomla, Thématique: Prestataire Informatique avec menu java-script, ajax kelandesign.com
Mail: This e-mail address is being protected from spambots. You need JavaScript enabled to view it
Tel: 06.58.93.98.54
Siret: 512 559 089 000 28
Adresse: 270 rue andré Philip 69003 LYON
Réalisation du site Soffio di Fantasia, ou 'Souffle de Fantasie' en français
Voir le site soffiodifantasia.biz
I Introduction
L'emploi d'Ajax (Asynchronous JavaScript and XML) est devenu un des outils incontournables dans les applications WEB. Le but de cet article sera d'apporter les rappels techniques de base et évolués, un petit 'Précis et Conci' des techniques Ajax sans reprendre son historique ni les techniques associées comme le protocole HTML et le javascript qui s'avèrent indispensables pour bien comprendre Ajax. Cet article sera largement inspiré du livre Ajax et PHP éditions eyrolles.
II HHTP et l'objet XMLHttpRequest
Codes des statuts HTTP
| Code Statut |
Signification | Exemple/Message |
| 200 à 299 | Succès de l'opération |
200/OK: Requete accomplie avec succès |
| 300 à 399 | Redirection | 301/Moved permanently |
| 400 à 499 | Erreur Client | 404/Not Found |
| 500 à 599 | Erreur Serveur | 503/Service unavailable |
Propriétés de l'objet XMLHttpRequest
| Propriétés |
Description |
| onreadystatechange |
Désigne une fonction de rappel qui sera appelé à chaque fois que l'état du traitement d'une requete asynchrone (readystate) changera d'état |
| readystate |
Etat du traitement d'une requete asynchrone (valeurs numériques de 0 à 4) |
| responsetext |
Contient le résultat du serveur sous forme de texte |
| responseXml |
Contient le résultat du serveur sous forme XML |
| status |
Code statut HTTP (ex:200, 404...) |
| statusText |
Message du statut HTTP (OK pour code 200, Not Found pour code 404...) |
Méthodes de l'objet XMLHttpRequest
| Méthodes | Description |
| abort() |
Annule la requete en cours |
| getAllResponseHeaders() |
Retourne dans une chaine de caractères tous les entetes HTTP contenus dans la réponse du serveur. Cette méthode n'est utilisable que lorsque l'état du traitement (readystate) est égal à 3 ou 4 (Interactive ou Completed) |
| getResponseHeader("NomEntete") |
Retourne la valeur de l'entete dont le nom est indiqué dans le paramètre (NomEntete). Cette méthode n'est utilisable que lorsque létat du traitement (readystate) est égal à 3 ou 4 (Interactive ou Completed) |
| open("méthode","URL","true,False.") |
Initialise l'objet en précisant la méthode GET ou POST, l'URL du script appelé coté serveur et et le troisième paramètre indique si le traitement est asynchrone ou non |
| send("contenu") |
Envoi de la requete. Le paramètre contenu pourra contenir la valeur null (méthode GET) ou une chaine de caratères (Méthode POST) |
| sendRequestHeader("nom","valeur") |
Attribue une valeur à l'entete de la requete dont le nom est spécifié dans le premier paramètre (nom). Méthode utilisable que lorsque l'état du traitement (readystate) est égal à 1 (Loading) |
Etats de traitements d'une requete asynchrone (Accessibles avec la propriété readystate)
| Valeur |
Etat |
Signification |
| 0 |
Unizialized |
L'objet n'a pas encore été initialisé et donc la méthode open() n'a pas encore été appelée |
| 1 |
Loading | L'objet a été initialisé mais la requete n'a pas encore été envoyée à l'aide de la méthode send. |
| 2 |
Loaded |
La requete a été envoyée à l'aide de la méthode send() |
| 3 |
Interactive |
La réponse est en cours de réception |
| 4 |
Completed |
La réponse du serveur est complétement réceptionné. Les données sont disponibles dans la propriété responseText ou responseXml. |
III Fonction générique de création d'un objet XMLHttpRequest
Cette fonction crée l'objet XMLHttpRequest selon le navigateur utilisé
function creationXHR() {
var resultat=null;
try {//test pour les navigateurs : Mozilla, Opéra, ...
resultat= new XMLHttpRequest();
}
catch (Error) {
try {//test pour les navigateurs Internet Explorer > 5.0
resultat= new ActiveXObject("Msxml2.XMLHTTP");
}
catch (Error) {
try {//test pour le navigateur Internet Explorer 5.0
resultat= new ActiveXObject("Microsoft.XMLHTTP");
}
catch (Error) {
resultat= null;
}
}
}
return resultat;
}
IV Exemple d'application
Enoncé: Vous travaillez pour la World Petroleum Company et vous devez développer une application qui affiche le prix du baril de pétrole en temps réel. Ce prix varie en fonction des fluctuations économiques et politiques se déroulant dans le monde entier (Je schématise pour notre application bien sur).
Voir l'application fonctionner
Le principe de fonctionnement est le suivant:
Au clic du bouton 'Prix du Baril' la fonction javascript getPrice() effectue:
- La création d'un objet XHR
- L'appel d'un script PHP qui renvoie la valeur du prix actuel
- La récupération du prix et la mise de cette valeur dans le div resultat
I Introduction
Ce tutorial ne retracera pas l'historique du SQL ni la partie administration mais se concentre tout au moins pour commencer sur les requetes, jointures, vues et procédures stockées.
II Jointure
La jointure permet d'accéder aux informations de plusieurs tables ayant entre elles un point commun, l'index principal dans l'une sera le clé étrangère dans l'autre.
A. Types de jointure
- Interne par défaut, Inner Join: Dans le résultat on ne retrouve que les lignes qui correspondent aux deux tables
- Externe, Left ou right ou Full outer Join: Dans le résultat on retrouve toutes les lignes de la 1° table dans le cas de Left ou toutes les lignes de la seconde table dans le cas de Right et enfin toutes les lignes des 2 tables pour Full
- Equi-Jointure: jointures avec une condition d'égalité qui ne traitent pas nécessairement sur les valeurs des clés primaires et étrangères
- Non Equi-jointure: jointure employant n'importe quel opérateur hormis la stricte égalité
- Naturelle, Natural Join: La jointure s'effectue sur les colonnes portant le meme nom et le meme type
- Croisée, Cross Join: C'est le produit cartésien de deux tables
- Auto-Jointure: Joindre une table à elle-meme
Ex: SELECT*ou liste de colonnesFROMTable1 T1INNERJOINTable T2ONT1.key=T2.PseudoForeignKey
I Programmation Orientée Objet
A. Rappels
- class: La classe est une entité indépendante qui peut contenir des attributs et des méthodes
- Un objet est le résultat de l'instanciation d'une classe
- Ex: $ferrari = new Voiture()
- Accès aux méthodes et attributs
- Pour accéder depuis l'intérieur de la classe saisir : $this->cylindree
- Pour accéder depuis l'extérieur de la classe saisir $ferrari->cylindree
- Visibilité
- Public: Accès autorisé pour tous
- Protected: Accès autorisé uniquement depuis la classe courante ou la classe fille
- Private: Accès autorisé uniquement depuis la classe elle-meme.
- Initialisation: A la création d'un objet la méthode __construct() est appelée. On peut s'en servir pour implémenter des valeurs standards d'initialisation
- Héritage
- classe Voiture va hériter de classe Vehicule: class Voiture extends Vehicule...
- static: Les variables et méthodes statiques sont liées à la classe elle-meme et non à l'objet
- Pour accéder depuis l'intérieur de la classe saisir self::nomVariable => self::$nbrVente
- Pour accéder depuis l'extérieur de la classe saisir le nom de la classe::nomVariable => Voiture::$nbrVente
- const: Constante de classe
- Ex. const VERSION='1.4.2.0'
- Pour accéder depuis l'intérieur de la classe saisir self::NOMCONST => self::VERSION
- Pour accéder depuis l'extérieur de la classe saisir le nom de la classe::CONSTANTE => Magento_Version::VERSION
B. Classes et méthodes abstraites, Interfaces
- Une classe abstraite est une classe qui ne peut pas etre instantié. Elle n'autorise que la céation de classes fille. Elle définit un patron en définissant une partie de code dont les classes qui en hériteront pourront disposer.
- Ex abstract class Vehicule { ...
- Méthode abstract: c'est une méthode sans instructions juste pour indiquer aux classes filles qu'elles devront la définir et l'implémenter
- Ex: abstract public function calculerPuissance()
- L'interface est très semblable à la classe abstraite dans la mesure où elle définit un contrat. L'interface n'est pas une classe. On ne peut l'instancier ni en hériter.
- interface Vehicule { ...
- class Voiture implements Vehicule { ...
