PHP INTRODUCTION STEFAN DU CHÂTEAU 08/08/2015
GENERALITEES LANGUAGE INTERPRETE LANGUAGE INTERPRETE DU COTE DU SERVEUR LANGUAGE TRES UTILISE DANS LES TECHNOLOGIES DU WEB UTILISATION AVEC HTML, JAVASCRIPT, CSS LES DOCUMENTS PHP POSSEDENT UNE EXTENSTION PHP document.php
HTML ET PHP Un documents PHP le plus simple contient et revoie du HTML. (renommer index.html en index.php) <?php indique à l interpréteur php le début de la zone qui devra contenir les instructions écrites en PHP?> indique à l interpréteur php la fin de la zone qui contient les instructions écrites en PHP. Un programme très simple écrit en PHP: <?php echo "ceci est un programme PHP";?>
SYNTAXE PHP Commentaire //ceci est un commentaire d'une ligne /*ceci est le début d'un commentaire pour une ou plusieurs lignes. Ce commentaire se termine par : */
SYNTAXE PHP ; (le point virgule) est utilisé pour terminer une ligne d'instruction $X = 1; Variables Le nom des variables commence avec le symbole $ Variable chaine de caractères $NomUtilisateur="Dupond"; echo $NomUtilisateur; La chaine de caractère doit être entre guillemet
SYNTAXE PHP Variable numériques $Compteur=1; echo $Compteur; $Compteur=$Compteur+1; echo $Compteur; $Compteur=$Compteur+12,5;
SYNTAXE PHP Tables Permettent de stocker plusieurs données. La déclaration d'une table : array(); $matable=array('paul','pierre','anne','marie'); Déclaration d'une table contenant quatre chaines de caractères. Le premier élément d'une table possède l'indice zéro echo $matable[2]; //affiche Anne
SYNTAXE PHP Tables à plusieurs dimensions $users=array(array('paul','paul@tlse2.fr','toulouse'), array('pierre','pierre@montp3.fr','montpellier'), array('anne','anne@tlse2.fr','toulouse')); $users[1][2]; //affiche Montpellier
SYNTAXE PHP Les operateurs operateur description exemple + addition $i + 1 - soustraction $i - 2 * multiplication $i * 3 / division $i / 4 % modulo $i % 5 ++ incrémentation ++$i -- décrémentation --$i
SYNTAXE PHP Les operateurs operateur exemple équivalence = $i = 1 $i = 1 += $i += 1 $i = $i + 1 -= $i -= 1 $i = $i - 1 *= $i *= 3 $i = $i * 3 /= $i /= 5 $i = $i / 5.= $i.= $j $i = $i. $j %= $i %= 4 $i = $i % 4
SYNTAXE PHP Les operateurs operateur description exemple == égalité $i == 1!= diffèrent de $i!= 2 > supérieur à $i > 3 < inferieur à $i < 4 >= supérieur ou égale $i >= 5 <= inférieur ou égale $i <= 5
SYNTAXE PHP Les operateurs operateur description exemple && et $i == 1 && $j==3 and et (priorité inférieur) $i == 1 and $j==3 ii ou $i == 1 ii $j==3 or ou (priorité inférieur) $i == 1 or $j==3! négation! ($i == $j) xor Alternative exclusive $i xor $j xor retourne la valeur TRUE si l'un des composant est TRUE FALSE si les deux composants sont TRUE ou les deux sont FALSE
SYNTAXE PHP Initialisation des variables $mavar += 4; $mavar -= 4; ++$i; --$i; if (++$i == 10) echo $i; //d'abord augmentation de la variable $i, ensuite vérification si elle est égale à 10
SYNTAXE PHP Concaténation $partiemessage="langage PHP"; $monmessage = "Introduction"; echo $monmessage. " au ". $partiemessage; Différences entre " et ' $mavar="utilisation de simple ou double guillemet"; echo "utilisation de guillemet $mavar"; echo 'utilisation de simple guillemet $mavar';
SYNTAXE PHP Les caractères d'échappements $mavar='utilisation de caractère ' dans une chaine'; Le caractère ' est interprété par PHP comme la fin de la chaine. $mavar='utilisation de caractère \' dans une chaine'; Même chose pour le caractère " Tester l'utilisation des \t \n \r dans une chaine délimité par double et simple guillemet.
SYNTAXE PHP Types des données PHP un langage faiblement typé La détection automatique de type de donnée è il n'est pas indispensable de déclarer de type de variables. <?php $mavar=123*321; //le contenu numérique echo substr($mavar,3,1); //la fonction substr transforme automatiquement en chaine de caractère?>
SYNTAXE PHP Les constantes Comme les variables les constantes sont utilisées pour entreposer des valeurs pour une utilisation ultérieure. A la différences des variables, le contenue des constantes ne changera pas pendant le déroulement du programme. define("root_location","/usr/local/www/"); $repertoire = ROOT_LOCATION;
SYNTAXE PHP Les fonctions Les fonctions sert à délimiter/créer des parties du code pour réaliser des taches particulières. Les fonctions peuvent contenir des paramètres dont dépond le déroulement de la fonction. Les fonction peuvent retourner des valeurs.
SYNTAXE PHP Les fonctions <?php... $retfonction=ma_fonction($var1,$var2 ); function ma_fonction($param1,$param2 ){ les instructions de la fonctions; return valeur; }?>
SYNTAXE PHP La visibilité des variables Variables locales sont déclarées et visibles uniquement à l'intérieur d'une fonction. <?php $retfonction=ma_fonction($var1,$var2); function ma_fonction($param1,$param2){ les instructions de la fonctions; return valeur; } //les variables $param1,$param2 sont visibles uniquement à l'intérieur de la fonction ma_fonction?>
SYNTAXE PHP La visibilité des variables Variables globales sont visibles dans la totalité du code. La déclaration d'une variable globale se fait à l'aide de mots clé global. global $ma_variable; Les variables static est visible à l'intérieur d'une fonction mais à la différence des variables locales, la valeur de la variable static n'est pas initialisée avec chaque appel de la fonction. <?php $retfonction=ma_fonction($var1,$var2); function conteur(){ static $count=0; echo $count; $count++; }?>
SYNTAXE PHP Variables globales prédéfinis Nom de la variable $GLOBALS $_SERVER $_GET $_POST $_FILES $_COOKIE $_SESSION $_REQUEST $_ENV contenu Toutes les variables globales Entêtes, chemins, emplacement des scripts Variables transmises avec méthodes HTTP GET Variables transmises avec méthodes HTTP POST Les fichiers transmis avec la méthode HTTP POST Variables transmises a l'aide des cookies Variables de session Le contenus transmis à travers les navigateurs ($_GET, $_POST, $_COOKIE) Variables d'environnement
SYNTAXE PHP Variables globales prédéfinis $came_from=$_server['http_referer']; L'adresse de la page (si elle existe) qui a conduit le client à la page courante. 'SERVER_NAME' Le nom du serveur hôte qui exécute le script suivant
EXPRESSIONS Expression logiques (TRUE, FALSE) echo "a:[". (20 > 9)."]<br>"; echo "b:[". (5 == 9)."]<br>";
Priorités des operateurs () Parenthèse ++ -- Incrémentation/ décrémentation! Logique * / % Arithmétique + -. Arithmétique avec chaine de caractères << >> Bits < <= > >= ==!= Comparaison & Bits && Logiques = += -= *= /=.= %= Associations
Expression conditionnelles Expression conditionnelles permettent de contrôler/ modifier le déroulement de programme. Instruction if Instruction else Instruction elseif Instruction switch
Expression conditionnelles <?php if ($id_user=="admin") { Exécution d'instructions }?>
Expression conditionnelles <?php if ($id_user=="admin") { Exécution d'instructions } else { Exécution d'instructions }?>
<?php if ($id_user=="admin") { Exécution d'instructions } elseif ($id_user== "super") { Exécution d'instructions } else { Exécution d'instructions }?> Expression conditionnelles
Expression conditionnelles <?php switch ($user) { case "root": Exécution d'instructions break; case "admin": Exécution d'instructions break; case "autres": Exécution d'instructions break; default: Exécution d'instructions break; }?>
OPERATEUR? <?php echo $carburant<= 5? "Ajoutez le carburant" : "Vous avez suffisamment de carburant";?> Si la variable $carburant contient la valeur inferieur ou égale à 5 alors l'instruction echo affiche Ajoutez le carburant si non Vous avez suffisamment de carburant est affiché <?php $plain = $carburant <= 50? FALSE : TRUE;?>
Boucles Boucle while <?php $cont=1; while ($cont <= 10) { echo $cont. "<br>"; $cont++; }?>
Boucles Boucle do while <?php $cont=1; do { echo $cont. "<br>"; $cont++; }while ($cont <= 10);?>
Boucles Boucle for <?php $cont=1; for ($cont =1; $cont<=10; $cont++) { echo $cont. "<br>"; }?> L'instruction break permet d'interrompre l'exécution d'une boucle L'instruction continue permet d'interrompre une itération et de passer à la suivante
Include Fichiers
importations de fichiers / code externe Les fonctions include() et require() Même utilisation sauf en cas d erreur: include() renverra une erreur de type WARNING require() affichera une erreur de type FATAL un seul paramètre de type chaîne de caractères, le chemin qui mène au fichier à importer <?php // Importations avec require() require('../dossier/fichier.php'); // Importations avec include() include('../dossier/fichier.php');?> require_once() include_once()
Gestion des fichiers Vérification de l existance d un fichier file_exists("file.txt" ) Si existe => TRUE Si n existe pas => FALSE Création/ouverture d un fichier $f=fopen("testfile.txt", "w"); Ecriture dans un fichiers fwrite($f,$texte) Fermeture d'un fichier fclose($f) Lecture fichier string fgets ( resource $handle [, int $length ] ) string fread ( resource $handle [, int $length ] ) Autres : copy("testfile.txt","testfile2.txt"); rename("fic1.txt","fic2.txt"); unlink("fic1.txt"); int fseek ( resource $handle, int $offset [, int $whence = SEEK_SET ] ) SEEK_SET : la position finale vaut offset octets. SEEK_CUR : la position finale sera la position courante, ajoutée à offset octets. SEEK_END : la position finale vaut la position courante par rapport à la fin du fichier, ajoutée de offset octets.
Gestion Fichiers <? $f=fopen("testfile.txt", "w") or die("ouverture impossible"); //Here Document, aussi appelé heredoc déclarer une chaîne de caractères dans les script comme php $texte=<<<_end Ligne 1 Ligne 2 Ligne3 _END; fwrite($f,$texte) or die("écriture impossible"); fclose($f)?>
Mode fichiers mode Description 'r' Ouvre en lecture seule, et place le pointeur de fichier au début du fichier. 'r+' 'w' Ouvre en lecture et écriture, et place le pointeur de fichier au début du fichier. Ouvre en écriture seule ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer. 'w+' Ouvre en lecture et écriture ; place le pointeur de fichier au début du fichier et réduit la taille du fichier à 0. Si le fichier n'existe pas, on tente de le créer. 'a' Ouvre en écriture seule ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer. Dans ce mode, la fonction fseek() n'affecte que la position de lecture, les écritures surviennent toujours. 'a+' Ouvre en lecture et écriture ; place le pointeur de fichier à la fin du fichier. Si le fichier n'existe pas, on tente de le créer. Dans ce mode, la fonction fseek() n'affecte que la position de lecture, les écritures surviennent toujours.
Lecture fichier string fgets ( resource $handle [, int $length ] ) string fread ( resource $handle [, int $length ] ) <?php $handle = fopen("/tmp/inputfile.txt", "r"); if ($handle) { while (($buffer = fgets($handle, 4096))!= false) { echo $buffer; } if (!feof($handle)) { echo "Erreur: fgets() a échoué\n"; } fclose($handle); } $contents = fread($handle, filesize($filename));?>
MySQL et PHP Le processus de communication PHP/MySQL 1. Connexion MySQL et choix de la base 2. Création d'une interrogation 3. Exécution de l'interrogation 4. Récupération des résultats 5. Répéter les étapes 2 à 4 jusqu'a obtention des résultats souhaités 6. Déconnexion de la base MySQL
Le processus de communication PHP/MySQL <?php //Connexion MySQL et choix de la base $conn = new mysqli("localhost", "user", "password", "database"); if ($conn->connect_error) die ($conn->connect_error) //création d'un nouveau objet $conn à travers l'appel de la méthode mysqli //gestion erreur la propriété connect_error // -> permet d'accéder aux propriétés ou fonction d'un objet //construction d'interrogation $chaine_interrogation = "SELECT * FROM nom_table"; //Exécution de l'interrogation //la méthode query de l'objet $conn retourne le résultat dans l'objet $res $res = $conn->query($ chaine_interrogation); //si $res est FALSE alors un problème if (!$res) die ($conn->connect_error) // si différent de FALSE on accédera aux données contenus dans objet $res?>
Le processus de communication PHP/MySQL <?php // si différent de FALSE on accédera aux données contenus dans objet $res //Récupération des résultats $rows=$res->num_rows; // num_rows nombre des résultats retournés for ($j = 0; $j < $rows; ++$j){ $res->data_seek($j); // data_seek méthode permet de se positionner sur une ligne des résultats //fetch_array méthode retourne la ligne entière des données sous d'un tableau //fetch_array peut retourner 3 types différents de tableau //MYSQLI_NUM tableau numérique, on accède à l'aide de index numérique //MYSQLI_ASSOC on accède à l'aide de nom des colonnes (auteur, titre, etc ) //MYSQLI_ASSOC les deux, accès numérique et nom de colonnes (auteur, titre, etc ) $row=$res-> fetch_array(mysqli_assoc) echo 'Auteur: '. $row['auteur'].'<br>'; echo Titre: '. $ row ['titre'].'<br>'; } $res->close(); $conn->close();?>
Fichier login login.php <?php?> $hn = "localhost"; $db = "publication"; $un = "user_name"; $pw = "mot_passe";