Le web de Dominique Guebey – Bazar informatique

Page : http://www.dg77.net/tekno/php/index.htm


  D o m i n i q u e   G u e b e y    J u n g l e     Bazar informatique

Tutorial express PHP


But et prérequis

Une connaissance préalable de HTML est requise.

PHP permet de faire varier le contenu de ce qui s'affiche : on peut par exemple modifier la présentation en fonction de l'utilisateur, ou afficher des informations variant fréquemment (cours de la bourse, dernières nouvelles) ou en fonction du choix de l'utilisateur (formulaire à renseigner).

Moteur PHP

PHP fonctionne sur le SERVEUR http auquel s'adressent les CLIENTS http (en principe des navigateurs ou "browsers", mais il n'y a pas qu'eux qui utilisent le protocole http) pour se faire servir des pages web. Les instructions php sont mêlées au contenu de la page ; elles sont insérées entre des balises spéciales : <? et ?>. Si le logiciel serveur est convenablement configuré, il saura, en lisant ces balises, qu'il doit passer la main à PHP qui va interpréter leur contenu et restituer une page html au serveur.


Installation sous Windows 10

Pour utilisation de FastCGI, utiliser la version non-Thread Safe (NTS).

Installer le logiciel dans un répertoire ad-hoc, qu’on nommera (pourquoi pas ?) « php ».

Ajouter ce répertoire dans le PATH.

La configuration de base se trouve dans le fichier php.ini.

Serveur

PHP s'exécute donc sur le serveur, ce qui a l'avantage d'ôter toute exigence aux clients web qui n'auront qu'à interpréter des pages web en HTML standard. Inconvénient : c'est une charge pour le serveur, et si on fait héberger son site par des tiers, l'utilisation de PHP n'est pas garantie, du moins au tarif d'entrée de gamme. Si on gère soi-même son serveur, la question ne se pose pas ; mais il faudra implémenter PHP en plus de savoir administrer le serveur. Pour prendre le plus répandu, Apache, voici les lignes à ajouter au fichier de configuration (httpd.conf) pour que PHP fonctionne :

ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php
Action application/x-httpd-php "/php/php.exe"

Affichage de la version et des paramètres PHP en cours

Script minimum permettant de vérifier que PHP fonctionne. Informations utiles aux développements, mais à ne pas rendre accessibles à tous.

<html><head><title>Afficher version PHP</php></title></head>

<body bgcolor=#FFFFDD>
<? phpinfo(); ?>
</body></html>

cook.php : mise-à-jour d'un cookie

Formulaire d'entrée du nom la première fois, enregistre la date et l'heure de la dernière visite, affiche un message a chaque connexion.

<?php
if(isset($nom)):
	setcookie("nom",$nom, time() + 365 * 86400);
	if(isset($date)):
		$oldate = $date;
	else:
		$oldate = date("l F j, Y");
	endif;
$date = date("l F j, Y");
setcookie("date", $date, time() + 365 * 86400);
endif;
?>
<html><head><title>Cookie date</title></head>
<body>
<?php
if(isset($nom)):
?>
	<h3>Bonjour <?php print $nom ?> !<br>

	La visite precedente etait le : 
	<?php print $oldate ?>.</h3>
<?php
else:
?>
<form action="cook.php" method="POST">
Donnez votre identification : 
<input type="text" name="nom">
<input type="submit" name="envoi" value="Envoi">
</form>

<?
endif;
?>
</body></html>

Affichage du contenu de table base de données MySQL

Sort l'entête, puis se connecte à la base. Boucle de lecture dans un certain ordre ("SELECT… ORDER BY…") de la table "fournitures" et affichage de chaque ligne trouvée

<html>
<head><title>Stock fournitures</title></head>
<body bgcolor=#FFFFDD>
<div align=center><h2>Inventaire fournitures</h2>

<table bgcolor=#FFFFFF border cellpadding="3">
<tr>
<td><b>TYPE</b></td>
<td><b>MARQUE</b></td>
<td><b>MODELE</b></td>

<td><b>Commentaire</b></td>
<td><b>STOCK</b></td>
<td><b>Cond.</b></td>

<td><b>DATE</b></td>
</tr>
<?php
if(!$bd = mysql_connect("localhost", "")):
	print("<h1>Pas de connexion à la base de données</h1>\n");
else:
mysql_select_db("fournitures", $bd);
$sql = "select * from fournitures order by ('genr' 'fabr' 'modl')";
$resultat = mysql_query($sql);
while		($ligne = mysql_fetch_array($resultat))
		{print("<tr><td>");
		printf($ligne["genr"]);
                printf("</td><td>");
		printf($ligne["fabr"]);
                printf("</td><td>");
		printf($ligne["modl"]);
                printf("</td><td>");
		printf($ligne["comm"]);
                printf("</td><td>");
		printf($ligne["stoc"]);
                printf("</td><td>");
		printf($ligne["cond"]);
                printf("</td><td>");
		printf($ligne["mdate"]);
		printf("</td></tr>");
		}
endif;
?>

</table>
</div></body></html>

invcre.php : ajout ("insertion") d'un nouvel article dans la table Fournitures.

Noter l'emboîtement de "if"-"endif" (si… fin de si) avec "else" (sinon). Si on a actionné le bouton "envoi" on met à jour la base (INSERT… VALUES), sinon affichage du formulaire pour entrer les valeurs (FORM ACTION…, puis ACTION INVCRE : invcre.php est le nom du fichier, il s'appelle lui-même en sortie. Les données entrées sont passées en même temps pour mise-à-jour.

<html>
<head><title>Ajout stock fournitures</title></head>
<body bgcolor=#FFFFDD>
<div align=center><h2>Ajout ligne dans stock</h2>

<?php
if(isset($envoi)):
if(!$bd = mysql_connect("localhost", "")):
  print("<h1>Pas de connexion à la base</h1>\n");
else:
  mysql_select_db("fournitures", $bd);
  $sql = "INSERT INTO fournitures VALUES('$genr','$fabr',
'$modl','$comm','$stoc','$cond','$mdat')";
  mysql_query($sql);
  print("<b>Les données ont été saisies.\n");
  print(" Ajoutez une ligne :</b><hr>\n");
endif;
endif;
?>
</div>
<form action="invcre.php" method="post">
  Type article<br>  <input type="text" size="12" 
  maxlen="12" name="genr">

  <br>Marque fabricant<br><input type="text" size="12" maxlen="12" name="fabr">
  <br>Modèle<br>    <input type="text" size="16" maxlen="16" name="modl">
  <br>Pour…<br>     <input type="text" size="40" maxlen="40" name="comm">

  <br>Quantité<br>    <input type="int" name="stoc">
  <br>Conditionnement<br>    <input type="int" name="cond">
  <br>Mise-à-jour du<br>  <input type="date" name="mdat">

  <br><input type="submit" name="envoi" value="Envoi">
</form>
</body></html>

invsup.php : suppression d'un article dans la table Fournitures.

Le modèle d'article entré est supprimé de la table.

<html>
<head><title>Suppression lignes dans table fournitures</title></head>
<body bgcolor=#FFFFDD>
<div align=center><h2>Suppression dans table des fournitures</h2>

<?php
if(isset($envoi)):
if(!$bd = mysql_connect("localhost", "")):
  print("<h1>Pas de connexion à la base de données</h1>\n");
else:
  mysql_select_db("fournitures", $bd);
  $sql = "DELETE FROM fournitures WHERE modl='$modl'";
  mysql_query($sql);
  print("<b>Les données ont été traitées.\n");
  print(" Autre suppression :</b><hr>\n");
endif;
endif;
?>
</div>
<form action="invsup.php" method="post">
  <br>Modèle<br>
    <input type="text" size="16" maxlen="16" name="modl">
  <br><input type="submit" name="envoi" value="Envoi">
</form>
</body></html>

invmaj.php : saisie de l'inventaire.

Pour chaque article, entrée de la quantité en magasin ; puis la valeur est écrite (UPDATE…) dans la base, puis affichage des informations de l'article et formulaire de saisie réaffiché.

<html>
<head><title>Saisie inventaire fournitures</title></head>
<body bgcolor=#FFFFDD>
<div align=center><h2>Saisie inventaire des fournitures</h2>

<?php
if(isset($envoi)):
if(!$bd = mysql_connect("localhost", "")):
  print("<h1>Pas de connexion à la base de données</h1>\n");
else:
  mysql_select_db("fournitures", $bd);
  $sql = "UPDATE fournitures SET stoc = '$stoc' WHERE modl='$modl'";
  mysql_query($sql);
  print("<b>Les données ont été saisies.\n");
print("<br><table bgcolor=#FFFFFF border cellpadding=\"3\"><tr>\n");
print("<td><b>TYPE</b></td><td><b>MARQUE</b></td>
<td><b>MODELE</b></td><td><b>Commentaire</b>
</td><td><b>STOCK</b></td><td><b>Cond.</b>
</td><td><b>DATE</b></td></tr>");
$sql = "select * from fournitures where modl = '$modl'";
$resultat = mysql_query($sql);
while    ($ligne = mysql_fetch_array($resultat))
    {print("<tr><td>");
    printf($ligne["genr"]);
                printf("</td><td>");
    printf($ligne["fabr"]);
                printf("</td><td>");
    printf($ligne["modl"]);
                printf("</td><td>");
    printf($ligne["comm"]);
                printf("</td><td>");
    printf($ligne["stoc"]);
                printf("</td><td>");
    printf($ligne["cond"]);
                printf("</td><td>");
    printf($ligne["mdate"]);
    printf("</td></tr>");
    }
  print("</table>");
  print(" Autre mise-à-jour :</b><hr>\n");
endif;
endif;
?>

</div>
<form action="invmaj.php" method="post">
  <br>Modèle<br>
    <input type="text" size="16" maxlen="16" name="modl">
  <br>Quantité<br>
    <input type="int" name="stoc">
  <br>Mise-à-jour du<br>
  <input type="date" name="mdat">
  <br><input type="submit" name="envoi" value="Envoi">
</form>
</body></html>