ISP (Institut Supérieur Professionnel) TD 1 de PHP programmation PHP
TD1 de PHP - variables, fonctions, tableaux.
Exercice 1 - premiers programmes
A réaliser sur machine.
1. Créez un répertoire pratiquePHP dans votre partition sur htdocs.
2. Créez dans ce répertoire un ficher test.php qui contient le script suivant :
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
<meta http-equiv="Content-Type" content="text/html ; charset=iso-8859-1"> <title>Page
de test</title>
< /head >
< body >
<h1>Page de test < /h 1>
< ?php echo "Hello World! \n<br /> Bonjour à tous!"
; ?>
< /body >
< /html >
Veillez à bien indenter vos programmes de sorte qu’ils soient lisibles! Quand vous ferez des projets
plus conséquents cela sera essentiel...
3. Visualisez le résultat de votre script : tapez son url, du type http://venus/~nom_utilisateur/test.php.
4. Affichez le code source de la page dans votre navigateur. Que constatez-vous? A quelle différence
faites vous entre la balise <br /> et la séquence \n?
5. Faites maintenant un autre script, info.php :
< ?php
phpinfo();
?> puis visualisez son résultat pour voir l’utilité de la fonction
phpinfo().
Exercice 2 - chaînes de caractères
1. Affectez à une variable $age une valeur entière correspondant à votre âge. Affichez la chaîne de
caractère J’ai X ans où X est remplacé par la valeur de $age. Vous procéderez de deux façons :
– En utilisant la concaténation des chaînes de caractères. – A l’aide de la seule fonction echo.
2. Assignez une chaîne de caractères à une variable $chaine1 et donnez la même valeur à une autre
variable $chaine2. Faites un script qui écrit à l’écran si les deux chaînes sont identiques ou non :
– En comparant les deux chaînes à l’aide de l’opérateur == ,
– En comparant les deux chaînes à l’aide de la fonction strcmp. Il vous faudra auparavant voir
comment fonctionne cette fonction, par exemple dans la documentation officielle http
://fr.php.net/manual/fr/.
– Quand est-ce qu’une chaîne est considérée comme ”plus petite” qu’une autre par strcmp? Vérifiez
le. Vérifiez également si ”bonjour” et ”Bonjour” sont considérées comme identiques.
–
ISP (Institut Supérieur Professionnel) TD 1 de PHP programmation PHP
Exercice 3 - Structures de contrôle.
1. Après avoir trouvé l’erreur classique qui s’y est glissé, réecrivez le programme suivant, mais en
utilisant une instruction switch :
$jour=4; if (
$jour =1){
echo "Nous sommes lundi";
} elseif ( $jour ==2){ echo
"Nous sommes mardi";
} elseif ( $jour ==3){ echo
"Nous sommes mercredi";
} elseif ( $jour ==4){ echo
"Nous sommes jeudi";
}
}
2. Ce script ne marche pas! Où est l’erreur? Que fait-il?
< html >
< body >
< ?php for ( $i=1;$i++;$i
<=10){ $res = $i*13;
echo "13 * $i = $res\n";
}
?>
< /body >
< /html >
3. Ecrivez un script qui affiche à l’écran tous les nombres de Fibonacci plus petits que 6765. Les deux
premiers nombres de Fibonacci sont 0 et 1, et les chaque numéro de la suite de Fibonacci s’obtient en
faisant la somme des deux numéros antérieurs (le troisième nombre de Fibonacci est donc 0+1 soit 1;
le quatrième, 1+1, etc...).
4. Refaites le même exercice, mais en utilisant une structure do {...} while ( ...) au lieu d’une structure
while(...){ ...}. Quelle est la différence entre ces deux structures?
1 Exercice 4 - fonctions
1. Soit la fonction mystere :
function mystere($n){
$val=1;
for ( $i=1;$i<=$n;$i ++)
$val*=$i; return
$val;
}
Simulez le fonctionnement de cette fonction lorsqu’on lui passe la valeur 4 en argument. Quel sera le
résultat affiché? Que fait cette fonction? Pouvez-vous en écrire une version récursive?
2. Que fait la fonction Mariage? Que fait le script :
function Mariage(&$NomActuel,$NomMarital){
$NomActuel=$NomMarital;
}
$NomActuel="Durand"; $NomMarital="Dupuis";
Mariage($NomActuel,$NomMarital);
echo $NomActuel."<br>";
Comment modifier ce script pour éviter tout passage par référence?
ISP (Institut Supérieur Professionnel) TD 1 de PHP programmation PHP
2 Exercice 5 - tableaux
1. Jean a 20 ans, Jacques en a 30, Pierre 25. Faites un tableau $age, dont les indices sont les prénoms,
qui permette de mémoriser ces informations. Affichez l’âge de Pierre à l’aide du tableau.
2. On veut maintenant créer un tableau $identite dont chaque ligne contienne l’identité d’une personne
: son âge, son prénom, et son nom. Les indices du tableau seront ”Personne 1”, ”Personne 2”,
”Personne 3”. On opte pour la méthode suivante :
$identite=array(
"personne 1"=> array("nom" => "dutronc", "prenom"=>"michel", "age"=>"30"),
"personne 2"=> array("nom" => "duroc", "prenom"=>"émilie", "age"=>"23"),
"personne 3"=> array("nom" => "dupersil", "prenom"=>"évelyne", "age"=>"36"));
(a) Rajoutez dans ce tableau une 4ème personne, Etienne Duvillage, 48 ans.
(b) Faites ensuite afficher à l’écran tous les noms, et seulement les noms, des personnes présentes
dans le tableau.
3. (a) Jean a fait ses courses et décide de mémoriser ses achats informatiquement. Il décide de stocker
tous les produits qu’il a acheté dans un tableau, en PHP. Créez le tableau chariot qui contient les
produits suivants : chocolat, poulet, citrons, oignons (ainsi, $chariot[0] vaut ”chocolat”). (b) Rajouter
du curry dans le tableau chariot.
(c) Jean relève le contenu d’un chariot chaque mois. Il décide donc d’utiliser un tableau
bidimensionnel, de sorte, par exemple, que $chariot["janvier"] contienne un tableau avec les
achats relevés en janvier. Créer un tel tableau dans lequel sont recensés, en janvier, des poivrons,
du jambon et du sel, en février du curry, du poulet, et des yahourts, et en mars du chocolat, des
citrons et des oignons.
(d) Faites une fonction qui prend en entrée un mois et qui permette à Jean de lister ce qu’il avait
acheté ce mois.
(e) Faites une fonction qui permette de lister tous les produits achetés depuis le début de l’année.
3 Exercice 6 - dates
1. Il vous faudra là encore consulter la documentation officielle pour voir comment fonctionne la fonction
date. Le but est d’afficher dans une page web la date d’aujourd’hui, sous le format suivant :
Nous sommes le 5 /09/2008;
il est 14:12:18+
2. Faites une fonction prenant en argument une année $annee et retournant true si l’année est bissextile,
false sinon.
Pour continuer à la maison...
Si vous souhaitez continuer vos scripts PHP chez vous, il est fortement conseillé d’installer sur votre
ordinateur personnel un serveur local simulant votre serveur distant. Cette démarche vous évitera d’avoir à
transférer, pour chacun de vos tests, tous vos fichiers sur le serveur distant de votre hébergeur.
Il existe sur le web des packages complets pour Windows ou Mac, qui permettent d’ins- taller en une
seule opération tous les éléments constituant un serveur local (serveur web Apache, interpréteur de code
PHP, base de données MySQL 5, phpMyAdmin...).
1. Sur windows, télécharger et installer le package WAMP5 1.6.4a disponible sur http :
//www.wampserver.com dans le dossier C :/wamp5 par exemple. Tous les scripts devront alors être
enregistrés dans le sous-dossier www, dans lequel vous pourrez créer plusieurs sous-dossiers
correspondant à vos différents sites. Lors du redémarrage du serveur, ils apparaîtront dans la rubrique
Vos projets de la page d’accueil de Wampserveur.
ISP (Institut Supérieur Professionnel) TD 1 de PHP programmation PHP
2. Sous Mac OS X, le logiciel Apache 1.3 est déjà installé par défaut. Pour démarrer le serveur, il suffit
d’activer le service Partage Web personnel dans la rubrique Partage des Préférences Système. Le
module PHP correspondant au serveur web Apache inclus dans Mac OS X est téléchargeable sur http
: //www.entropy.ch/software/macosx/php Il vous suffit alors de suivre les instructions d’installation
du package PHP 5.1.4 pour Apache 1.3.