Création de Pages Web Dynamiques Pro : Mehdi Rjiba A.S: 2007/2008
Sommaire Introduction Comparatif PHP / JavaScript Installation d’ EasyPHP Syntaxe de base du langage PHP Les structures de données Les structures de contrôle Les fichiers et les répertoires Communication entre page Web et un script PHP PHP et MySQL Quelques fonctions PHP (voir Annexes)
I- Introduction 1- Qu'est-ce qu’une page web dynamique ? : Une page web dynamique est une page web qui est générer et modifier en fonction de la demande d’un utilisateur. Exemple : les sites des news, de commerce électronique,… 2- Qu'est-ce que PHP ? : PHP est un langage de scripts et non un langage de programmation, car il est conçu pour faire un traitement à la suite d’un événement ou lorsqu'un utilisateur soumet un formulaire à un serveur Web. Les scripts PHP sont insérer dans le code HTML.
II- Différence entre HTML et PHP : La différence entre le HTML et le PHP réside dans la relation client- serveur . Client : Tous les visiteurs d'un site web sont des clients. Serveur : Le serveur, est un gros ordinateur tout le temps connecté à Internet. Il contient votre site web sur son disque dur, et dès qu'un client demande à voir une page web, il la lui envoie. Avec HTML : Il y a 2 étapes : Le client (c'est vous, le visiteur) demande à voir une page web. Il va donc faire une demande au serveur : "S'il te plaît, envoie-moi la page vacances.html". Le serveur lui répond en lui envoyant la page vacances.html : "Tiens, voici la page que tu m'as demandée".
Avec HTML : Le client demande à voir une page PHP. Pour lui il n'y a aucune différence. Il demande la page au serveur, toujours aussi poliment : "S'il te plaît, envoie-moi la page vacances.php". Mais là, il y a une étape très importante, qui fait toute la différence en PHP. Le serveur n'envoie pas de suite la page au client. Il la génère. En effet, le client n'est pas capable de lire une page PHP (seul le serveur sait faire ça). Le client ne peut lire que des pages HTML. Ce que fait le serveur est simple : il va transformer la page PHP en page HTML, pour que le client puisse la lire. Enfin, une fois que la page est générée, elle ne contient plus que du code HTML. Le serveur peut l'envoyer au client : "Tiens, voici la page que tu as demandée".
Seul le serveur peut lire le PHP Seul le serveur peut lire le PHP. Le client (c'est-à-dire vous), ne peut pas lire le PHP. Comment on pourra vérifier si notre travail en PHP fonctionne ? Il va donc falloir trouver un moyen pour "apprendre" le PHP à votre ordinateur. Vous pourrez alors travailler dessus pour réaliser votre site en PHP. D’où on a besoin d’un utilitaire (easyphp) contenant une gamme de programmes permettant de créer des pages web dynamiques et de les tester que ce soit du côté client ou serveur.Ces programmes sont : Apache : c'est le programme qu'utilisent les serveurs. Il permet au serveur de distribuer des pages web... mais il ne connaît que le HTML ! PHP : PHP est comme un "plugin" de Apache. Il a besoin d'Apache pour fonctionner, et grâce à lui Apache saura travailler sur des pages PHP. En clair, Apache + PHP = un serveur PHP MySQL : permet d'utiliser des bases de données. phpMyAdmin : cela vous permettra de gérer vos bases de données
III- Installation de EasyPHP Lancer l'exécution de easyphp1-8_setup.exe. Un dossier EasyPHP sera créé dans Program Files.
test.php Au démarrage d'EasyPHP, une icône apparaît à côté de l'heure. Pour automatiser le lancement au démarrage de Windows, double-cliquez sur l'icône de la barre des taches (ou lancez d'abord EasyPHP) et activez l'option "Démarrer EasyPHP en même temps que Windows" puis appliquez avant de fermer la boîte : Configurer le navigateur afin de « ne pas utiliser le Proxy pour les adresses locales » test.php
Pour vérifier le fonctionnement, relancez Windows. A l'aide d'un éditeur de texte (ConTEXT) tapez la ligne : <? php phpinfo(); ?> Enregistrez dans le dossier EasyPHP\www sous le nom test.php ; Lancez un navigateur ; Tapez l'adresse : http://localhost/test.php Ainsi, vous pourrez naviguer dans ce répertoire à partir d’un navigateur en tapant http://localhost/ ou http://127.0.0.1/ ou même http://nomposte/
IV-syntaxe de base du langage PHP Activité 2 page 122. Pour que le script PHP soit interpréter par le serveur on a : L’extension du fichier contenant le code PHP est « .php » Un script php doit être délimiter par <? ?> Le fichier php pour être exécuter doit être sauvegarder dans le dossier «c:/program files/easyphp/www » L’affichage d’un message en php se fait par la fonction echo (‘message’) ou print (‘message’) On peut afficher un message en utilisant des balises html Pour insérer un commentaire : Sur une seule ligne // commentaire Sur plusieurs lignes /* */ Pour afficher un guillemet on le précède par un back slash \ <?php echo "Celle-ci a été écrite \"uniquement\" en PHP."; ?>
V- Les structures de données en PHP 1- les constantes : Une constante est définit par la fonction define avec la syntaxe: define (‘nom cste’ , ‘valeur cste’); L’opérateur de concaténation des contenus des objets est le « . » activité 3 page 123. 2 – les variables : La déclaration d’une variable se fait avec la syntaxe : $nom_variable = valeur_variable; Une variable peut être de type texte, nombre, booléen. Pour afficher la valeur d’une variable echo ($nom_variable) Fonction de conversion de type Settype($nom_variable, type); : affecte un type à une variable; elle renvoie TRUE si la conversion est réussite sinon FALSE. En précédent une variable à convertir par les clauses (type) Exemple : $var = 15.6; $var =(int) $var;
Fonctions de manipulation de variables Gettype($nom_variable); : renvoie le type d’une variable Isset ($nomvariable); : retourne TRUE si la variable posséde une valeur sinon FALSE. On peut connaitre le type d’une variable avec l’utilisation des fonctions booléennes Is_long(),is_double(),is_string(),is_array(),is_object(); 3 – les opérateurs: voir tableau page 125, 126 4 – les entrées/sorties: Pour récupérer les informations saisies à travers des objets de formulaires $_get[‘nomobjet’] ou $_post[‘nomobjet’]
VI- LES STRUCTURES DE CONTRÔLE EN PHP 1- les structures de contrôle conditionnelles : If(condition) {expression vrai} else {expression faux} Switch(expression) { case res1 : traitement1; break; ……………………………. Case res n : traitement n ; break; Default : } 1- les structures de contrôle itératives : While(cdt) { …………..;} Do {……………..;} while(cdt); For(expr1;expr2;expr3) {………. ;}
Les conditions La structure if => if ($temps=="ensoléillé") { echo 'il fait beau'; } else { echo 'il ne fait pas beau'; } La structure if => Il est possible d'enchaîner plusieurs structures If sans avoir à les imbriquer, à l'aide de elseif if ($nombre > 1) { echo "\$nombre est supérieur à 1"; } elseif ($nombre < 1) { echo "\$nombre est inférieur à 1"; } else { echo "\$nombre est égal à 1"; }
L'opérateur ternaire => echo ($nombre == 1) ? "\$nombre est égal à 1" : "\$nombre n'est pas égal à 1"; La condition doit obligatoirement se trouver entre parenthèses. Si la condition est vérifiée, la valeur de gauche est retournée, sinon, c'est celle de droite.
L'instruction switch => switch ($nombre) { case 1: echo "\$nombre est égal à 1"; break; case 2: echo "\$nombre est égal à 2"; case 3: echo "\$nombre est égal à 3"; default: echo "\$nombre est inférieur à 1 ou supérieur à 3"; break; }
Les boucles La structure for => La structure while=> Syntaxe : Exemple : for (compteur; condition; compteur) { liste d'instructions } for ( $i = 1; $i <= 10 ; $i++ ) { echo "$i "; } La structure while=> Syntaxe : Exemple : while (condition) { liste d'instructions } $i = 1; while ( $i <= 10 ) { echo "$i "; $i++; }
La structure do…while => Syntaxe : do { liste d'instructions } while ( condition); Exemple : PGCD pgcd.php <?php function pgcd($a, $b) { if ($a < $b) list ($a, $b) = array ($b, $a); //Permutation do { $r = $a % $b; if ($r == 0) return $b ; $a = $b; $b = $r; } while ($r > 0); } $n1 = 98; $n2 = 70; $pgcd = pgcd($n1, $n2); echo "Le PGCD de $n1 et $n2 est $pgcd<hr>"; ?>
V- Les Types de Données Structurés : 1- les Tableaux : Il existe deux types de tableaux : Tableaux a indices de type entier (indice du premier élément est 0) Tableaux associatifs à indices de type chaîne Remarque : En PHP il ya une possibilité de stocker dans un tableau des éléments de types différents Initialisation d’un tableau : En affectant une valeur à une variable (case du tableau) [ exemple : $tab[0] = ‘b’;] En utilisant la fonction array array(clé => valeur, clé => valeur,…) clé est soit un entier ou une chaîne. : [ exemple : $tab = array (‘p’,2) ; ] Parcours d’un tableau : Tableau possède un pointeur interne qui conserve l’indice et la valeur de l’élément actif. On peut déterminer la valeur de l’élément actif à l’aide de la fonction current($nom_tableau); On peut déterminer l’indice de l’élément actif à l’aide de la fonction key($nom_tableau);
$ar=array(5=>12,14=>3); <?php $ar=array(5=>12,14=>3); $ar[]=-6; //revient à assigner –6 à l'élément 15 $ar["e"]=23; //revient à assigner 23 à l'élément "e" unset($ar[5]); //efface l'élément 5 unset($ar); //efface tout le tableau ?> On peut connaître la taille d'un tableau à l'aide de la fonction count() ou sizeof() $x=array(3=>"r",6=>5); Count($x); //vaudra 2
Déplacement du pointeur Action Déplacement du pointeur reset() Recale le pointeur au début du tableau et renvoie le 1er élément du tableau end() Recale le pointeur à la fin du tableau et renvoie le dernier élément du tableau current() ou pos() Renvoie l'élément courant du tableau next() Fait avancer le pointeur courant de façon qu'il pointe l'élément suivant dont elle renvoie la valeur prev() Fait reculer le pointeur courant de façon qu'il pointe l'élément précédent dont elle renvoie la valeur key() Renvoie l'indic de l'élément courant du tableau each() Extrait l'élément courant et fait avancer le pointeur d'une unité list($indice,$valeur) Associée à each(), elle affecte indice et valeur de l'élément courant à 2 variables qcq foreach() Permet de traiter tout un tableau sans avoir recours au structures itératives. Elle renvoie l'indice et la valeur de l'éléments courant et avance d'un cran Tri d’un tableau : On peut trier un tableau en utilisant les fonctions sort() et rsort() pour tri croissant et décroissant. Comme on peut le trier par indice en utilisant de la même manière les fonctions ksort() et krsort()
balayer_tab02.php Exemple : parcourir un tableau <?php $vente_hebdo = array("lundi"=>1742,"mardi"=>1562,"mercredi"=>1920,"jeudi"=>1239,"vendredi"=>2012,"samedi"=>720) ; $vente_totale = 0; reset($vente_hebdo); while (list($key, $value) =each($vente_hebdo)) { echo "<BR> Vente de $key : $value unités\n"; $vente_totale += $value; } echo "<BR>Vente sur la semaine : $vente_totale unités\n"; ?>
ip_inverse.php Exemple : Afficher une adresse IP dans un ordre inverse <?php // recuperation de l'adresse ip $ip =getenv("REMOTE_ADDR"); echo $ip; // inversion $array = explode(".",$ip); //explose une chaîne selon le séparateur indiqué end($array); // on se place à la fin while (key($array)!=0) // tant qu'on est pas arrivé au début { $iip = $iip.pos($array)."."; // mise à jour de la variable prev($array); // on revient en arrière d'un élément } $iip = $iip.pos($array); echo"<hr>$iip"; // premier élément ?>
array ("informatique" => Tableau à 2 dimensions : Exemple : déclaration deuxdim.php <?php $livres = array ("informatique" => array("PHP", "Java", "Internet", "Architecture"), "dictionnaires" => array("Médical", "Automobiles"), "cuisine" => array("tunisienne", "française", "asiatique") ); ../..
../.. Manipulation echo "<b>Contenu du tableau \$livres :</b><br>"; while (list($k, $v) = each($livres)) { echo "<br>$k => "; while (list($kk, $vv) = each($v)) { echo "$vv "; } } echo "<br>"; reset($livres); for ($i=0; $i<count($livres); $i++) { list($k,$v) = each($livres); echo "<br>$k => "; for ($j=0; $j<count($v); $j++) { echo $livres[$k][$j]." "; } } ../..
for ($i=0; $i<count($livres); $i++) { list($k,$v) = each($livres); ../.. echo "<p>"; reset($livres); for ($i=0; $i<count($livres); $i++) { list($k,$v) = each($livres); echo "Le tableau \"$k\" a ".count($v)." éléments<br>"; } ?> Contenu du tableau $livres : informatique => PHP Java Internet Architecture dictionnaires => Médical Automobiles cuisine => tunisienne française asiatique informatique => PHP Java Internet Architecture dictionnaires => Médical Automobiles cuisine => tunisienne française asiatique Le tableau "informatique" a 4 éléments Le tableau "dictionnaires" a 2 éléments Le tableau "cuisine" a 3 éléments
2- les chaines de caractères : Les fonctions sur les chaines de caractères : string substr (string source, int debut, int[taille]) : renvoie une portion d’une chaine, a partir du début et d’une largeur(taille) ; si taille < 0 : en renvoie une chaine qui se termine à cette distance de la fin de la chaine source. String trim (string chaine) : fonction qui supprime les espace blancs de début et de fin de chaine Int strlen ( string chaine) : retourne la longueur d’une chaine String implode (string seperateur, array tableau): retourne une chaine constitué par tous les éléments d’un tableau , dans l’ordre, concaténer et séparés par un séparateur spécifier. Array explode(string seperateur, string chaine) : retourne un tableau contenant les éléments de la chaine séparés par un séparateur indiqué. String str_replace ( modèle , remplacement, chaine) : remplace toutes les occurrence de modèle par remplacement dans une chaine donnée