II. PHP
Fondamental : I Introduction
A son origine, le web était« statique » : le code HTML était simplement envoyé par le serveur web au client.
Les personnes qui consultaient le site accédaient toutes à la même page.
Les choses ont ensuite évolué : les serveurs sont aujourd'hui capables de générer eux-mêmes du code HTML.
Les résultats qui s'afficheront à l'écran dépendront donc des demandes effectuées par l'utilisateur du site : le web est devenu dynamique.
Différents langages de programmation peuvent être utilisés « côté serveur » afin de permettre au serveur de générer lui-même le code HTML à envoyer.
Le plus utilisé encore aujourd'hui se nomme PHP.
PHP: Hypertext Preprocessor, plus connu sous son sigle PHP, est un langage de programmation libre, utilisé pour produire des pages Web dynamiques interprétés côté serveur.
PHP est un langage impératif orienté objet qui s'intègre dans vos pages HTML.
Il est considéré comme une des bases de la création de sites web dits dynamiques mais également des applications web.


Complément : ASSURER UNE COMMUNICATION EN RESEAU
Principe simplifié de l'affichage d'une page WEB hébergée sur un Serveur :
Lors de l'affichage d'une page WEB, votre navigateur envoie l'adresse demandée au Serveur WEB.
Apache est le logiciel qui traite les requêtes HTTP. Il cherche le fichier dans l'arborescence du Serveur.
Si le fichier ne contient pas de code PHP, | Si le fichier porte l'extension reconnue comme une page PHP (.PHP, .PHP3, .PHP4 par exemple) |
---|---|
la page est renvoyée à votre navigateur directement. Votre navigateur interprète alors les différents langages interprétés côtés client se trouvant dans ce fichier (HTML, JavaScript, CSS, etc ...) et affiche la page. | Le Serveur Web transmet ce fichier au logiciel PHP qui va: - l'analyser - exécuter le code entre balises <?php ... ?> - envoyer les requêtes vers la base de donnée MySQL - traiter les informations de retour de MySQL La page est ensuite transmise au navigateur WEB sans code PHP |
Exemple :
Date et l'heure du Serveur
Code HTML (extension PHP)
<html>
<body>
<font size="2" face="Arial">Le texte en HTML</font>
include("AffichageHeureDate.php");
// on appelle le fichier
$heure = date("H\hi");
print("<center><font size=\"2\" face=\"Arial\"> Il est $heure.</font></center>");
</body>
</html>
Code PHP (AffichageHeureDate.php)
<?php
$date = date("d-m-Y"); // affichage de la date du Serveur
$heure = date("H:i"); // affichage de l'heure du Serveur
Print("Nous sommes le $date et il est $heure");
?>
Complément : II Données de formulaire
HTML du formulaire Accueil.html
<form method="GET" action="Traitement.php">
Nom : <input type="text" name="nom" size="12"><br>
Prenom : <input type="text" name="prenom" size="12">
<input type="submit" value="OK">
</form>
Traitement.php traite les données côté Serveur
<?php
$prenom = $_GET['prenom'];
$nom = $_GET['nom'];
print("<center>Bonjour $prenom $nom</center>");
?>
Complément : II Données de formulaire
III Sauvegarde de données
1) Dans un fichier
$fp = fopen("data.txt","r+");
//Ouverture en lecture et écriture (“r”: lecture uniquement)
$donnees = fgets($fp,255); //Récupère 255 caractères
fseek($fp,4);
//place le curseur à la 5ème position du fichier
//la première position étant notée 0
fputs($fp,'5'); //On écrit 5 à la position où est le curseur
fclose($fp); //On ferme le fichier
print('Le fichier contient : '.$donnees);
Exercice :
Réaliser une petite page Accueil.php et réaliser un code php qui permette de compter et stocker le nombre de visiteurs ayant consulté cette page dans un fichier compteur.txt.
2) Dans un cookie
Un cookie est un fichier texte de taille limitée (65ko) permettant de stocker certaines informations. Le but premier de ce type de fichier et de pouvoir garder en mémoire les informations d'un visiteur afin de pouvoir les réutiliser à chacune de ses visites. Par exemple on y stocke son NOM, son PRENOM etc... Bien sûr cela n'est possible qu'à partir du moment où le visiteur a entré lui-même ses informations dans un formulaire sur le site.
setcookie()permet la création d'un cookie sur le client.
Cette création doit être la première fonction PHP que vous utilisez dans votre script, donc tout en haut du script.
<?php
$expire = 365*24*3600; // on définit la durée du cookie, 1 an
setcookie('nompropre','eric',time()+$expire); // on l envoi
?>
Lors de la requête d'un ordinateur client, PHP va regarder si un fichier contenant des éventuels cookies existe déjà sur la machine du visiteur. Vous obtenez la valeur stockée dans le cookie à l'aide du tableau $_COOKIE :
<?php
// On affiche la valeur du nom
echo "Bonjour".$_COOKIE['nompropre'];
?>
Si le visiteur n'a pas encore de cookie venant de votre site, rien ne sera affiché et aucun message d'erreur n'apparaitra.
Les Cookies pour Firefox sont stockés dans C:\Users\eric\AppData\Roaming\Mozilla\Firefox\Profiles\bs46uzws.default-release dans le fichier cookies.sqlite
Pour lire le contenu du fichier, rendez vous à l'adresse :https://inloop.github.io/sqlite-viewer
3) Dans une base de données
a) Introduction
Une base de données est une entité dans laquelle il est possible de stocker des données de façon structurée et avec le moins de redondance possible. Ces données doivent pouvoir être utilisées par des programmes, par des utilisateurs différents.
L'avantage majeur de l'utilisation de bases de données est la possibilité de pouvoir être accédées par plusieurs utilisateurs simultanément. La gestion de la base de données se fait grâce à un système appelé SGBD (système de gestion de bases de données). Nous emploierons MySQL.
Cela permettra :
-l'accès aux données de façon simple
-d'autoriser un accès aux informations à de multiples utilisateurs
-de manipuler les données présentes dans la base de données (insertion, suppression, modification)
Une base de données contient différentes tables. Les tables sont formées par un ensemble de « cellules » contenant des « champs » fixés à l'avance.

b) Création de la base
Sélectionner « Administration », puis lancer alors le module
« Administration MySQL ».
Créer alors une nouvelle base de données en lui donnant un nom, par exemple « MaBase ».
Puis on crée une table appelée « Annuaire » avec 5 champs (5 colonnes)
Id (Numéro de champ automatique), Nom,Prénom, Email,Date_Ajout
Une base de données (type MySQL) avec une table « réservation » qui est constituée d'un index, d'un numéro de salle, d'un jour, d'un horaire et d'un nom.
date_default_timezone_set('Europe/Paris');
$Nom_Serveur="localhost";
$Nom_Utilisateur="root";
$Mot_Passe="root";
$Nom_Base="MaBase";
$connection=mysqli_connect($Nom_Serveur,$Nom_Utilisateur,$Mot_Passe);
if(!$connection){
die('Connexion impossible : '.mysql_error());
}
$sql='CREATE DATABASE '.$Nom_Base;
if($connection->query($sql)==TRUE){
echo"Base de données créée correctement";
echo"<br>";
}else{
echo'Erreur lors de la création de la base de données : '.$connection->error;
echo"<br>";
}
// Creation du lien avec la base de donnée
$connection=mysqli_connect($Nom_Serveur,$Nom_Utilisateur,$Mot_Passe,$Nom_Base);
// Check connection
if($connection->connect_error){
die("Impossible d'établir le lien avec la base de donnée: ".$connection->connect_error);
echo"<br>";
}
// Requete SQL de création de la table
$sql="CREATE TABLE Annuaire (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
prenom VARCHAR(30) NOT NULL,
nom VARCHAR(30) NOT NULL,
email VARCHAR(50),
date_ajout DATE
)";
if($connection->query($sql)==TRUE){
echo"Table Annuaire a été créée avec succès: ";
echo"<br>";
}else{
echo"Erreur lors de la creation de la table Annnuaire : ".$connection->error;
echo"<br>";
}
// Ajout d'un enregistrement dans la table
$sql='INSERT INTO Annuaire(prenom, nom, email,date_ajout) VALUES(\'eric\', \'langer\', \'eric.langer@ac-strasbourg.fr\',\''.date("Y-m-d H:i:s").'\')';
if($connection->query($sql)==TRUE){
echo'La personne a bien été ajouté !';
echo"<br>";
}else{
echo"Erreur lors de L'ajout de l'enregistrement : ".$connection->error;
echo"<br>";
}
$sql='SELECT * FROM Annuaire';
$reponse = $connection->query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.$mysqli->error);
// on recupere le resultat sous forme d'un tableau
while ($ligne = $reponse->fetch_assoc()) {
// on affiche les résultats
echo 'Nom : '.$ligne['nom'].'<br>';
echo 'Prenom : '.$ligne['prenom'].'<br>';
echo 'Mail : '.$ligne['email'].'<br>';
}