PHP 5 Memento
Introduction :
Cet article sert de memento, il n'est adapté à l'apprentissage de PHP qu'aux gens ayant quelques notions d'algorithmique et de programmation. Pour ceux qui n'ont jamais fait de programmation, des tutos plus adaptés vous guideront pas à pas (voir la partie I si dessous).
I - Ou apprendre le PHP gratuitement sur le net ?
Voici quelques liens intéressants pour apprendre le PHP de manière plus approfondie :
- Cours de PHP
5 de Guillaume Rossolini
(developpez.com)
- PHP : Le tutoriel pour grands débutants pressés de Sylvie Vauthier (developpez.com)
- Le manuel PHP en ligne
II - Les commentaires et variables
Commentaires sur une ligne :
// Commentaire sur une ligne
# autre commentaire sur une ligne
Commentaires sur une à plusieurs lignes :
/* Commentaire
sur plusieurs
lignes */
Les variables :
$variable = 10; // variable normale qui a pour valeur 10 par affectation
$array = array ("bonjour", "salut"); // tableau de deux case ayant pour valeur respective "bonjour" et "salut"
$tab[0] = 100; // première case du tableau $tab qui a pour valeur 100 par affectation
$_GET, $_POST, $_SESSION, $_COOKIE, $_REQUEST, etc // différentes variables superglobales
III - Les structures de contrôles
Les opérateurs de comparaison :
Opérateur |
Désignation |
== |
Égalité |
< |
Infériorité
(stricte) |
> |
Supériorité
(stricte) |
<= |
Infériorité
(non stricte) |
>= |
Supériorité
(non stricte) |
!= |
Différence |
=== |
Identique
(type et valeur) |
!== |
Différence
(type ou valeur) |
Les booléens :
Opérateur |
Désignation |
&& |
ET
logique |
|| |
OU
logique |
! |
NON
logique |
Condition if :
if ($variable <= 100) // Si $variable a une valeur inférieure ou égale à 100
{
// traitements dans le cas ou $variable est inférieur ou égale à 100
}
else if ($variable <= 200) // Sinon si $variable a une valeur inférieure ou égale à 200
{
// traitements dans le cas ou $variable est comprise entre 101 et 200
}
else
{
// traitements dans le cas ou $variable est strictement supérieur à 200
}
Condition switch :
switch ($variable) // selon la valeur de $variable
{
case "bonjour": // Cas "bonjour" => si la valeur de $variable est "bonjour"
// Traitements dans le cas où $variable à pour valeur "bonjour"
break;
case 10: // Cas "10" => si la valeur de $variable est de 10
// Traitements dans le cas où $variable à pour valeur 10
break;
default: // Cas "sinon" ou "defaut" => si $variable à pour valeur, une valeur différente de "bonjour" ou 10;
// traitements
break; // ici facultatif
}
III - Les structures itératives
Les opérateurs de comparaison et booléens :
ils sont les mêmes que pour les structures de contrôles.
La boucle while :
$i = 0;
$j = FALSE;
while ($i < 10 || $j != TRUE) // Tant que $i est in ferieur à 10 ET tant que $j est différent de FALSE, répeter
{
$i++; // $i = $i +1
if ($i == 5) // Si $i = 5
$j = TRUE;
}
La boucle for :
$i = 0;
$j = FALSE;
for ($i = 0 ; $i < 10 && $j == FALSE ; $i++)
// Pour $i de 0 jusqu'à 10 (pas de 1) et tant que $j à pour valeur FALSE, répeter
{
// traitements
}
La boucle foreach :
$tab = array (1,2,3,4);
foreach ($tab as $value)
/* Parcours le tableau case par case et associe $value à la case du tableau ou
se situe l'index en cours */
{
$value = $value * 2; // On multiplie la valeur par 2
}
Le tableau $tab contiendra, après l'exécution de la boucle, ces valeurs (dans l'ordre) : 2,4,6 et 8
IV - Les fonctions
Fonctions et procédures :
// fonction (retourne une valeur)
function nom_fonction ($parametre1, $parametre2)
{
return $parametre1 + $parametre2;
// on retourne une valeur (additionnant les deux paramètres ou arguments)
}
// procédure (ne retourne rien)
function nom_fonction ($parametre1, $parametre2)
{
echo $parametre1 + $parametre2;
// on affiche une valeur (additionnant les deux paramètres ou arguments)
}
Fonctions testant l'existance et le contenu d'une variable :
isset ($variable) // renvoie TRUE si $variable n'est pas égale à NULL sinon FALSE
empty ($variable) /* renvoie TRUE si $variable n'est pas vide (différent de NULL, de "", de FALSE, d'un tableau vide, d'une variable déclarée par le mot clef var mais sans valeur) sinon FALSE */
Fonctions d'affichage :
echo "hello world";
print "salut tout le monde";
printf ("Bonjour %s", "tux");
print_r ($tableau); // pour débugger
Fonctions d'inclusions :
include ("chemin/fichier.php"); // warning si le fichier n'existe pas
require ("chemin/fichier.php"); // erreur si le fichier n'existe pas
require_once ("chemin/fichier.php"); // erreur si le fichier n'existe pas et permet de le ré-inclure
Fonctions d'approximation numérique :
ceil (3.4); // retourne l'entier supérieur à 3.4 (4)
floor (3.4); // retourne l'entier inférieur à 3.4 (3)
round (3.4); // retourne l'entier le plus proche de 3.4 (3)
Fonctions de chaînes de carractères :
strlen ($chaine); // retourne la longueure de la chaîne
strpos ($chaine1, $chaine2); // retourne la position de $chaine1 dans $chaine2
$chaine = str_replace ("a", "b", $chaine); // remplace 'a' par 'b' dans $chaine
$chaine = preg_replace ("/a/", "b", $chaine); // pareil que precedement
$tableau = preg_split ("//", $chaine); // stocke chaque carractère d'une chaîne dans un tableau
$tableau = explode (";", $chaine); // éclate $chaine dans un tableau en fonction du carractère ";"
$chaine2 = substr (0, 9, $chaine); //stocke dans $chaine2 le contenu de $chaine entre la position 0 et 9
$chaine = nl2br ($chaine); // remplace tout les retour à la ligne (\n et \n\r) par des balises <br />
$chaine = htmlentities ($chaine); // conversion des carractères spéciaux en entités HTML
$chaine = html_entity_decode ($chaine) // conversion des entités HTML en carractères spéciaux
$chaine = addslashes ($chaine); // echape certains carractères comme " ou ' ou \ par un \
$chaine = stripslashes ($chaine); // retire les carractères d'echappement
preg_match ("/^[0-9]*$/", $chaine); /* vérifie que le contenu de $chaine correspond à l'expression régulière
placée en paramètre (ici qu'il s'agit d'une chaine uniquement composé de chiffres entre 0 et 9). Renvoie TRUE ou FALSE */
Fonction de taille de tableau :
sizeof ($tableau); // retourne le nombre d'éléments d'un tableau $tableau
Fonction de redirection :
Attention : les redirections sont a écrire avant tout affichage HTML
$url = "http://adresse_url_choisie"; // adresse de redirection
$tps = 3; // temps de redirection (en secondes)
header ("Refresh: $tps ; URL='$url'"); // redirige vers l'adresse $url en $tps secondes
Fonction pour envoyer un E-MAIL :
// expéditeur
$lexpediteur = "adresse_email@service.com";
// entête de l'Email
$headers = "From: ".$expediteur."\n"; // expediteur
$headers .= "Reply-To: ".$expediteur."\n"; // pour répondre
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n"; // encodage (pour interpréter le code HTML)
$headers .= "Content-Transfer-Encoding: 8bit";
// sujet de l'Email
$subject = "Sujet du message";
// message
$msg = " Salut !!!";
// destintaire
$dest = "adresse_email2@service.com";
// envoi de l'Email
mail ($dest, $subjetc, $msg, $headers);
V - La gestion de fichiers
Accès rapide :
$chaine = file_get_contents ("nom_fichier.txt"); // lecture (stocke le contenu du fichier dans une chaine)
file_put_contents ("nom_fichier.txt", $chaine); // écrit le contenu de $chaine dans le fichier
Accès approfondis :
$fichier = fopen ("nom_fichier.txt", "r+"); // ouvre le fichier
$tableau = file ($fichier); // stocke le contenu du fichier ligne par ligne dans un tableau
fwrite ("nom_fichier.txt", $chaine); // écrit le contenu de $chaine dans le fichier
VI - Les sessions
session_start (); // activer les sessions
$_SESSION['ma_session'] = "mon_pseudo"; // stocke la chaîne "mon_pseudo dans la session "ma_session
$_SESSION['ma_session'] = NULL; // vide la session "ma_session"
session_destroy (); // détruit les sessions en cours
VII - La gestion de base de données
Pour MySQL :
// connexion et selection d'une base MySQL
$connexion = mysql_connect ("serveur", "user", "mot_de_passe", "base") or die ("Connexion impossible à MySQL ...");
mysql_select_db ("base", $connexion) or die ("Selection de la base impossible ...");
// fermeture de la base
mysql_close ($connexion);
Remarque : il existe des fonctions similiares à mysql_connect () comme mysql_pconnect () qui a l'avantage de n'ouvrir qu'une seule connexion par identifiant de base en cours (mysql_close () est inutile dans ce cas donc). On parle ici de connexion persistante.
// Exécuter et exploter le résultat d'une requête de type SELECT :
$sql = "SELECT * FROM table;"; // requête contenue dans une chaîne
$req = mysql_query ($sql) or die ("Erreur".mysql_error()); // exécution de la requête
// mysql_error () affiche le message d'erreur de MySQL en cas d'erreur
if (mysql_num_rows ($req) >= 1) // Si la requête contient une ou plusieurs ligne
{
// On parcours les lignes du résultat et on stocke la ligne dans $res
while ($res = mysql_fetch_array ($req))
{
echo $res['champs_1']; // On affiche le contenu du champs "champs_1" de la table (ligne par ligne)
}
}
// Pour une requête de type INSERT il suffit de faire :
mysql_query ("INSERT INTO table VALUES ('valeur');");
Maintenant utilisons les fonctions mysqli (v4.1 et 5 de PHP) :
// connexion et selection d'une base MySQL
$link = mysqli_connect ("serveur", "user", "mot_de_passe", "base");
// Exécuter et exploter le résultat d'une requête de type SELECT :
$sql = "SELECT * FROM table;"; // requête contenue dans une chaîne
$req = mysqli_query ($link, $sql); // exécution de la requête
while ($ligne_res = mysqli_fetch_assoc ($req))
{
print_r ($ligne_res); // On affiche la ligne de la requête
}
Pour PostgreSQL :
// Connexion à une base
$str_connexion = "host=localhost port=5432 dbname=base user=util password=passwd";
$db_connexion = pg_connect ($str_connexion);
// connexion à une base de données nommée "base" sur l'hôte "localhost" avec un nom d'utilisateur "util" et un mot de passe "passwd"
// fermeture de la base
pg_close ($db_connexion);
Remarque : De même que pour mysql_pconnect (), il existe une fonction pg_pconnect ().
// Exécuter et exploter le résultat d'une requête de type SELECT :
$sql = "SELECT * FROM table;"; // requête contenue dans une chaîne
$req = pg_exec ($sql) or die ("Erreur".pg_errormessage()); // exécution de la requête
// pg_errormessage () affiche le message d'erreur de PgSQL en cas d'erreur
if (pg_num_rows ($req) >= 1) // Si la requête contient une ou plusieurs ligne
{
// On parcours les lignes du résultat et on stocke la ligne dans $res
while ($res = pg_fetch_array ($req))
{
echo $res['champs_1']; // On affiche le contenu du champs "champs_1" de la table (ligne par ligne)
}
}
// Pour une requête de type INSERT il suffit de faire :
pg_exec ("INSERT INTO table VALUES ('valeur');");
Avec PDO :
PDO est une classe qui a l'avantage de fonctionner avec différent SGBD dont les principaux qui sont Oracle, PostgreSQL et MySQL.
// Connexion à une base
$str_connexion = "mysql:dbname=base;host=serveur";
// connexion à une base de données MySQL nommée "base" sur l'hôte "serveur"
$pdo_connexion = new PDO ($str_connexion, "utilisateur", "mot_de_passe");
// Exécuter et exploter le résultat d'une requête de type SELECT :
$sql = "SELECT * FROM table;"; // requête contenue dans une chaîne
foreach ($pdo_connexion->query($sql) as $ligne)
print_r ($ligne)