|
Bonjour à tous
Voilà, histoire de ne pas vous donner un script tout fait qu'il suffirait de recopier bêtement, le script qui suit se veut simple, voire simpliste, aborde différents thèmes, et est largement commenté. Il dispose de tous les liens nécessaires vers les documentations concernées (HTML, CSS, PHP), sans tomber dans les spécifications directement qui semblent rebuter pas mal de monde (ce qui est un tord). Il est bien évident qu'on aurait pu résumer voire condenser un tel script, mais je vous laisse transformer le tout en fonction, voire vous amuser à la POO avec, pourquoi pas. Le résultat escompté étant un sapin vert (même le tronc, mais à vous de le rendre marron si vous le souhaitez), muni de guirlandes, de boules (changeant de couleur au survol de la souris), le tout sans aucune erreur HTML, CSS ni PHP. bref, un exemple de rendu valide et méritant de pouvoir afficher les logos du W3c.
//MonBoSaPHPin.php
//Définition du doctype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="fr" xml:lang="fr" id="noel">
<!-- Ouverture et définition de la tête du document
<head>
<!-- Définition du titre apparaissant dans le bord haut ou l'onglet de votre navigateur-->
<title>Bon beau saPHPin</title>
<!-- Indication du charset utilisé dans cette page>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- Définition des styles>
<style type="text/css" media="screen">
<!--
body{
background-color:white;
letter-spacing:1pt;
word-spacing:1pt;
color:green;
}
p{
background-color:inherit;
text-align:center;
color:black;
}
a{
text-decoration:none;
color:blue;
background-color:inherit;
}
a:hover {
color:red;
background-color:inherit;
}
-->
</style>
<!-- Fermeture de la tête du document -->
</head>
<!-- Ouverture du corps du document -->
<body>
<!-- On met le contenu dans une balise de bloc, ici p -->
<p>
<!-- Ouverture de la balise html, remarquez le changement des caractères indiquant un commentaire en HTML <!-- --> et en PHP // ou /* */-->
<?php
// On veut que toutes les erreurs PHP soient indiquées
ini_set('error_reporting', E_ALL);
// On veut que toutes les erreurs PHP s'affichent sur le script
ini_set('display_errors', TRUE);
// On définit le bord gauche du sapin soit /
$gauche=chr(47);
// La signification des nombres contenus dans la fonction chr() est à chercher sur cette page.
// On définit le bord droit du sapin soit \
$droite=chr(92);
// On définit l'intérieur du sapin avec
//le vide
$space=chr(96);
//les boules sous forme de lien histoire de ne pas rester dans la monotonie
$boule="<a href=\"#\" title=\"boule\">o</a>";
//Les guirlandes
$guirlande="*";
//la hauteur du sapin, dans ce cas, le nombre d'étages
$etage=3;
//on initialise la variable sapin en définissant le sommet de celui-ci
$sapin=$gauche.$droite."<br/>\n";
/* Une jolie boucle qui part de 1 (car le sommet du sapin est déjà défini)
et va jusqu'au nombre maximal d'étages possibles.
Remarquez l'indentation au passage qui permet de rendre
l'ensemble plus lisible dans de telles structures. */
for ($i=1;$i<=$etage;$i++){
/* On définit une variable temporaire $sapintmp qui nous servira à la fin
de la construction du sapin; Ici elle commence par le bord gauche du sapin. */
$sapintmp=$gauche;
for($j=0;$j<$i;$j++){
//je vous laisse découvrir la signification de % qui est un opérateur arithmétique
if($j%2==0){
// remarquez l'utilisation de .= qui est un opérateur d'assignation au même titre que =
$sapintmp.=$guirlande;
//On définit une autre variable utilisée juste pour effectuer une autre comparaison
$h=$j+1;
if($h<$i){$sapintmp.=$boule;}
}
//On définit le cas par défaut si la condition précédente n'est pas vérifiée
else{$sapintmp.=$space;}
}
// Notre variable temporaire se termine par le bord droit du sapin
$sapintmp.=$droite;
// On assigne à notre variable $sapin le contenu de notre variable temporaire.
$sapin.=$sapintmp."<br/>\n";
if($i==$etage){
/* Nous nous trouvons donc à l'étage inférieur de notre sapin,
il faut donc en récupérer sa longueur afin de pouvoir connaitre
la taille de la dernière ligne, d'où l'utilisation de notre
variable temporaire */
$dernier=strlen($sapintmp);
//echo $dernier." ".$etage." ".$sapintmp."<br/>";
}
//On réinitialise la variable temporaire
$sapintmp="";
}
/* Le bas du sapin matérialisé avec des underscores
et d'une longueur dépendant de celle du niveau précédent
tout en tenant compte des bords du sapin.*/
$sapin.=$gauche.str_repeat(chr(95),$dernier-1).$droite."<br/>\n";
// On définit le tronc de notre saPHPin
$sapin.="||";
echo $sapin;
// On ferme la balise PHP
?>
<!-- On ferme les tags à la fin du fichier -->
</p>
</body>
</html>
j'ai oublié un certains nombre de choses : je n'ai pas expliqué l'usage de \n ni la concaténation.. mais bon, ça allait devenir franchement illisible à force :). Et si je me suis loupé quelque part, c'est à l'insu de mon plein gré :]
Sur ce, bons réveillons ! L'Equipe de PHPDébutant
|