PHP


 Travaillez sur MySQL, PHP, SQL avec EasyPHP
EasyPHP
Dernière Version
Pour travailler facilement sur MySQL, avec PHP et SQL, téléchargez la dernière version de easyphp et installez la.

Maintenant il faut lancer le gestionnaire et les serveurs.
Un e apparait en bas à droite de votre écran.
Faites un clic droit et cliquez sur Administration.

Dans le dossier d'installation de easy PHP se trouve un dossier www. Faire un raccourci de ce dossier sur le bureau. Nous pouvons créer des scripts PHP dans ce dossier et y accéder avec le navigateur par l'adresse http://127.0.0.1
si le serveur easyphp est lancé!
(http://127.0.0.1 peut être remplacé par localhost)

Cliquez sur phpMyAdmin, Gestion BDD pour commencer à travailler sur la base de données MySQL à l'aide de SQL.
Visiter le site
 www.easyphp.org Qualité de l'information sur ce lienQualité de l'information sur ce lienQualité de l'information sur ce lien

 phpinfo()
phpinfo() La fonction phpinfo() renvoie au navigateur un tableau d'informations dans lequel figurent les spécificités de l'installation de PHP particulière à votre serveur.

 Code source pour débutant en PHP
Code source <?php echo Date ("j/m/Y"); ?>
Nous sommes le 30/07/2010

<?php
echo
"Je dialogue avec " . $_SERVER['SERVER_NAME'];
?>

Je dialogue avec www.visionduweb.com

<?php
echo
"Vous êtes sur la page " . $_SERVER['PHP_SELF'];
?>

Vous êtes sur la page /cours/programmation/php/introduction.php4

<?php
print("
<b><i>Bonjour PHP !</i></b>");
?>

Bonjour PHP !

Faire un lien à l'aide d'une variable PHP
<a href"<? code php ?>">Le lien</a>

Afficher un fichier dans un site
<? include('fichier.htm'); ?>

Calculer avec PHP
5 + 2 =
<?PHP
print(5+2);
?>

5 + 2 = 7

Vérifier une égalité
<?
$a=2;
$b=2;
if ($a==$b)
echo "L'égalité est vérifiée";
?>


Afficher le premier élément d'un tableau PHP
pomme

Afficher le dernier élément d'un tableau PHP
<?php
$tableau=array("pomme", "poire", "cerise", "framboise");
echo end($tableau); // Retournera "framboise"
?>

framboise

Obtenir l'intersection de deux tableaux
<?php
$array1 = array ("pomme", "poire", "cerise");
$array2 = array ("fraise", "pomme");
$result = array_intersect ($array1, $array2);
while (list($key, $val)=each($result)) {
echo $val;
}
?>

pomme

Obtenir la soustraction du tableau array1 - array2
<?php
$array1 = array ("pomme", "poire", "cerise");
$array2 = array ("pomme", "fraise");
$result = array_diff ($array1, $array2);
while (list($key, $val)=each($result)) {
echo $val";
}
?>

poirecerise

En créant un tableau de tableaux on crée un hash.
C'est un tableau à plusieurs dimensions!

On peut échapper les guillemets " avec un antislash \
C'est utile pour garder les guillemets de HTML par exemple.
<?php
print("<font color=\"#FF0000\">PHP en rouge !</font>");
?>

Aller à la ligne avec \n

Ecrire un commentaire avec // devant une ligne
Ecrire un commentaire /* ....... */ pour un paragraphe

 Les variables
Les variables Choisir des noms de variables ayant un sens évident réduit les possibilités d'erreurs et facilite la relecture de vos scripts.
$NomDeFamille est plus significatif que $NDF

Il existe différents types de variables, pour faire simple,
les nombres, les chaînes de caractères et les tableaux.

Les nombres sont entiers (1, 0, -2) ou flottants (1.2 1,5)

Les chaînes de caractères par des exemples :
"Bonjour tous le monde !"
"Bonjour $Prenom"
'1 1/4'
"02.04.82"
"1982"

<?php
$foo=123;
echo 'La variable vaut : $foo'; // on voit $foo
echo "La variable vaut : $foo"; // on voit 123
?>

Assignation de valeurs aux variables

(=) est un opérateur d'affectation
En effet on l'utilise pour affecter une valeur à une variable.
$nombre = 1;
$nombre_flottant = 1.2;
$chaine = "Paragraphe numéro un";

Employer la methode Get en dehors d'un formulaire
Création d'un fichier hello.php4 pour exemple
<?php
print ("<center>Hello, $nom</center>");
?>


Si $toto n'a pas de valeurs, il n'y a que Hello qui s'affiche.

Vous avez votre serveur de lancé. On appel avec le navigateur le fichier hello.php4 qui est dans le dossier www
127.0.0.1/hello.php4?nom=Bernard& pour d'autres variables
ou par un lien
<a href="hello.php4?nom=Bernard">Appel Hello.php4</a>

 PHP et les formulaires HTML
PHP
et
formulaire HTML
Création d'un formulaire HTML : formulaire.htm
<html>
<head></head>
<body>
<form action="traitement.php4" method="post">
Nom : <input type="text" name="nom" size="10">
<br>
Prénom : <input type="text" name="prenom" size="20">
<br>
Mail : <input type="text" name="Email" size="20">
<br>
Notes : <textarea name="notes" rows="5" cols="20">
<br>
<input type="submit" value="Envoyer !">
<input type="reset" name="reset" value="Recommencer">
<input type="hidden" name="azerty" value="abracadabra">
</form>
</body>
</html>


L'attribut action indique l'adresse de la page ou du script qui doit recevoir les informations recueillies par le formulaire.

La méthode Get affiche aux yeux les éléments transmis. C'est donc une faille de sécurité sérieuse. Une page crée avec la méthode Get peut être mise dans les signets. Une page crée avec la méthode Post ne peut pas être enregistrée dans les signets.

input type="hidden" sert à passer des constantes sans que l'utilisateur n'en sache rien.

Traitement du formulaire par PHP : traitement.php4
<html>
<head></head>
<body>
<?php
/* Cette page reçoit et traite les infos de formulaire.htm */
print ("Votre nom est $nom et votre prénom $prenom");
print ("Votre email est $Email");
print ("Vos notes : $notes");
print ("La variable cachée : $azerty");
print ("<input type=\"hidden\" name=\"azerty\" value=\"abracadabra\"");
?>
</body>
</html>


Ecrit de cette façon,
print ("<input type=\"hidden\" name=\"azerty\" value=\"abracadabra\"");
La vie de la variable est prolongée.

 Les nombres : addition, soustraction, multiplication, division, décimales
Calculer une somme Création d'un fichier PHP : nombres.php4
<html>
<head></head>
<body>
<?php>
$PrixUnitaire = 15.00;
$Taxe = 0.20;
$CoutTotal = $PrixUnitaire * $Quantité;
$Taxe = $Taxe + 1; // $Taxe vaut maintenant 1.20
$CoutTotal = $CoutTotal - $Remise;
$CoutTotal = $CoutTotal * $Taxe;
$Mensualite = $CoutTotal / 12;
// Affichage des résultats
print ("J'achète $Quantite objet(s) à $PrixUnitaire euros.");
print ("Si vous avez une remise de $Remise pourcent le coût total s'élève à");
printf ("%01.2f, $CoutTotal");
print (" euros.");
print ("12 Mensualité de");
printf ("%01.2f", $Mensualite);
print ("euros.");
?>
</body>
</html>


N'oubliez pas de transmettre une valeur de variable pour $Quantite ainsi que $remise à l'aide d'une url par exemple.

Afficher des nombres décimaux avec la fonction printf(). Notre exemple réduit à deux chiffres après la virgule.

Incrémentation et décrémentation d'un nombre
Lorsque l'on a besoin d'incrémenter un nombre d'une seule unité on doit utiliser les opérateurs ++ et --
$Taxe = $Taxe + 1; devient donc $Taxe++; ou $Score--

Pour simplifier le code, les instructions suivantes
$CoutTotal = $PrixUnitaire * $Quantité;
$Taxe = $Taxe + 1; // $Taxe vaut maintenant 1.20
$CoutTotal = $CoutTotal - $Remise;
$CoutTotal = $CoutTotal * $Taxe;

peuvent être remplacées par
$Taxe++;
$CoutTotal=(($PrixUnitaire * Quantite) - $Remise) * $Taxe;


Quelques fonctions mathématiques prédéfinies
La fonction round()
$nombre = round(23.309); // Le résultat vaus 23
$nombre = round(23.51); // Le résultat vaus 24
$nombre = round(23.51, 1); // Le résultat vaus 23,5

Deux fonctions voisines :
Les fonctions ceil() et floor()
ceil() convertit un nombre sous forme de l'entier supérieur.
floor() convertit un nombre sous forme de l'entier inférieur.

La fonction abs()
$Nombre = abs(-23); // Le résultat vaut 23.
$Nombre = abs(23); // Le résultat reste 23.

Des nombres aléatoires avec srand() et rand()
Toujours appeler srand() avant d'appeler rand()
srand() ((double) microtime() * 1000000);
$NombreAleatoire = rand();
$NombreAleatoireBis = rand(0,10);

 Les chaînes de caractères
  Modifier une occurence dans une chaîne de caractères :
<?php
$chaine ="Tout est rouge";
$chaine = str_replace("rouge","bleu",$chaine);
echo $chaine;
?>

Tout est bleu

Ajuster une chaîne de caractère sert par exemple à gérer des mots de passe afin de supprimer les espaces blanc.

$Chaine = " Espace en trop devant et derrière "
$Chaine = trim($Chaine);
// $Chaine affiche "Espace en trop devant et derrière"

Traitement du formulaire par PHP : traitement.php4
<html>
<head></head>
<body>
<?php
/* Cette page reçoit et traite les infos de formulaire.htm */

$prenom = trim($prenom);
$nom = trim($nom);
$Email = trim($Email);
$notes = trim($notes);
print ("Votre nom est $nom et votre prénom $prenom");
print ("Votre email est $Email");
print ("Vos notes : $notes");
?>
</body>
</html>

Concaténation de chaînes de caractères

C'est la mise bout à bout de plusieurs chaînes de caractères. Avec PHP cette opération s'effectue avec l'opérateur point (.)
<?php
$chaine1 = "bon";
$chaine2 = "jour";
echo $chaine1.$chaine2;
?>

Autre exemple de concaténation :
$identite = &prenom . " " . $nom;
print ("Votre nom est $identite.");

Encodage et décodage d'une chaîne de caractères

urlencode() change la forme d'une chaîne de caractères pour qu'elle puisse être transmise sans problèmes à la suite de l'url. Les espaces sont remlacés par des + et les caractères spéciaux sous forme numérique.
$Chaîne = urlencode($Chaîne);

Traitement du formulaire par PHP : traitement.php4
<html>
<head></head>
<body>
<?php
/* Cette page reçoit et traite les infos de formulaire.htm */
$prenom = trim($prenom);
$nom = trim($nom);
$identite = $prenom . " " . $nom;
print ("Votre nom est $nom et votre prénom $prenom");
$identite = urlencode($identite);
print ("<a href=\"hello.php4?nom=$identite\"Clic ici</a>");
?>
</body>
</html>

Clic ici

La page personalisée d'un visiteur : hello.php4
<html>
<head></head>
<body>
<?php
print("<b><center>Hello, $nom !</center></b>");
?>
</body>
</html>

Cryptage et décryptage de chaînes de caractères

La fonction crypt()
Elle est utilisée pour crypter des données mais il n'y a pas de fonction similaire de décryptage. Un mot de passe peut ainsi être crypter puis enregistré, mais on ne retrouve plus sa valeur originelle.

$cryptage = crypt($cryptage);
("<a href=\"hello.php4?nom=$cryptage\">Crypt()</a>");
Crypt()

La fonction encrypt() peut être décriptée avec decrypt()

Ne pas confondre encodage encode() et cryptage crypt().
L'encodage remplace certain caractères dans une chaîne de caractères destinée à être ajoutée à la suite d'une url.
Le cryptage est un moyen de changer l'apparence dans une chaîne de caractères.

Extraction de sous-chaînes
La fonction strtok()

PHP extrait un par un les caractères qui se trouvent dans la chaîne de caractères et s'arrête au premier espace.
$identite = $prenom $nom;
$prenom = strtok($identite, "");


La fonction substr()
La sous-chaîne crée aura pour valeur "une phrase!"
$DuTexte = "Il y a une phrase! Et du bla bla";
$SousChaine = substr($DuTexte, 7,11);

La fonction strlen()

Cette fonction permet de connaître la longueur d'une chaîne de caractères, c'est à dire le nombre de caractères dont elle se compose.
$NombreDeCaracteres = strlen($chaine);

Création d'un générateur de mots de passe en PHP

Plus un mot de passe est aléatoire, plus il est sûr.
<?php
$Chaine = "Cette chaine sert de base de cryptage";
$Longueur = 8; // Longueur du mot de passe
$Chaine = md5($Chaine);
$LongueurChaine = strlen($Chaine);
srand ((double) microtime() * 1000000);
// Choisissons un point de départ arbitraire
$Debut = rand(0,($LongueurChaine - $Longueur -1));
$MotDePasse = substr($Chaine, $Debut, $Longueur);
print ("Mot de passe conseillé : $MotDePasse");
?>


Mot de passe conseillé : 7dff5ca8

La longueur du mot de passe est $Longueur. La limite de la fonction md5() est de 32 caractères alors que la limite de crypt() est de 12 caractères.
$LongueurChaine = strlen($Chaine); donne la longueur de la chaîne cryptée. Bizarre puisque md5() renvoye toujours une chaîne de 32 caractères! Mais ce modus operandi est plus conforme aux usages d'une bonne programmation.
srand() initialise le générateur de nombres aléatoires.
La position du début du mot de passe est comprise entre 0 et la longueur de $Chaine - $Longueur -1 cela pour être sûr qu'il restera suffisamment de caractères derrière le caractère qui va devenir le point de départ.

Création du mot de passe avec la chaîne de caractères dont il va être extrait, sa position de début, et sa longueur.
$MotDePasse = substr($Chaine, $Debut, $Longueur);

 Les structures de contrôle
Code L'instruction if
if (condition) {instruction}

Si la condition est TRUE les instructions sont exécutées. Dans le cas de FALSE elles sont ignorées.

<?php>
$PrixUnitaire = 15.00;
$Taxe = 0.20;
if ($Quantite)
{

$Quantite = abs($Quantite);
$Taxe++;
$CoutTotal=(($PrixUnitaire * Quantite) - $Remise) * $Taxe;
// Affichage des résultats
print ("J'achète $Quantite objet(s) à $PrixUnitaire euros.");
print (" euros.");
}
?>


Si $Quantite est différent de 0, la condition est true et les instructions sont alors exécutées.

Pour savoir si une variable a reçu une valeur, on utilise la fonction isset() qui renvoie TRUE si la variable a une valeur.
$Quantite = 0;
if ($Quantite)
{print("Premier If");}
if (isset($Quantite))
{print("Second If");}

L'opérateur de comparaison qui teste l'égalité est ==
L'opérateur de comparaison opposé est !=
L'opérateur de comparaison inférieur <
L'opérateur de comparaison supérieur >
L'opérateur de comparaison inférieur ou égal <=
L'opérateur de comparaison supérieur ou égal >=

Utilisons les opérateurs de comparaison pour appliquer une remise si le montant des achats est supérieur à 150 euros.

<?php>
$PrixUnitaire = 15.00;
$Taxe = 0.20;
if ($Quantite)
{
$Quantite = abs($Quantite);
$Remise = abs($Remise);
$Taxe++;
$CoutTotal = ($PrixUnitaire * Quantite);
$Explication = ""; // Initialisation avec une chaîne vide
if ($CoutTotal >= 150)
{ $CoutTotal = $CoutTotal - $Remise;
$Explication = ", moins votre remise de $Remise euros,";
}
$CoutTotal = $CoutTotal * $Taxe;
print("Le coût total TTC" . $Explication . " s'élève à $CoutTotal euros.");
}
?>


Si vous voulez testez ce script sur votre serveur, passez lui dans l'url les valeurs suivante : ?Quantite=2&Remise=125 ou celle ci ?Quantite=25&Remise=125

Les opérateurs logiques servent à créer des associations de plusieurs conditions ayant chacune une valeur vrai ou faux.
Le 'et' est représenté par AND ou &&
Le 'ou' est représenté par OR ou ||
Le 'non' est représenté par NOT
Le 'ou' exclusif est représenté par XOR

Les deux expressions suivantes ont la valeur TRUE
if ((5<=3) OR (5>=3)) {...};
if ((5>3) AND (5<10)) {...};


La clause else
if (test) {instructions;}
else {instructions;}

Le bloc d'instruction qui suit le else représente les instructions qui seront exécutées par défault alors que le premier bloc d'instruction représente l'exception.

L'instruction if elseif
Cette instruction permet d'enchaîner des tests en cascade.
if (test) {instructions ...;}
elseif (test1) {instructions ...;}
elseif (test2) {instructions ...;}
elseif (test3) {instructions ...;}








 Le processus de normalisation
Code Testez le langage SQL avec EasyPHP 1.8
Visiter le site
 www.easyphp.org Qualité de l'information sur ce lienQualité de l'information sur ce lienQualité de l'information sur ce lien