Installation

Vous allez avoir besoin d'installer les logiciels Apache et MySQL sur votre ordinateur pour le transformer en server web. Le fait de disposer d'un serveur web sur votre propre machine vous permet de travailler en local sans avoir à uploader les fichiers à chaque modification.

Télécharger et installer

Au lieu d'installer séparément Apache, PHP et MySQL, puis de les configurer, il existe des logiciels qui fournissent un package complet contenant ces logiciels pré-configurés ainsi que les addons dont vous pourriez avoir besoin.

Rendre votre vie plus simple

Quelques petits trucs optionnels si vous voulez vous simplifier la vie, c'est pas obligé, c'est juste des conseils pour vous.

Sur Windows

L'icône Wamp dans la zone de notifications

Utilisez le launcher de wamp (dans la zone de notifications) pour accéder aux principaux endroits :

  • lancer le localhost avec le navigateur web
  • lancer phpmyadmin avec le navigateur web
  • accéder au dossier www avec l'explorateur de fichiers

Conflits avec Skype

Si Skype est lancé, il peut entrer en conflits avec Wamp, pour éviter ce conflits, désactivez “Utiliser les ports 80 et 443 comme alternative” en décochant la case. Ou, plus simple, éteignez skype.

Enfin relancez wamp server.

Conflits avec Spotify

Si Spotify est lancé, il peut entrer en conflits avec Wamp, pour éviter ce conflits, quittez Spotify, quittez-le vraiment

Enfin relancez wamp server.

Sur Mac OS

Utilisez le dossier Sites

Dans le dossier utilisateur, par défaut il y a un dossier Sites, mettez vos sites dedans, ce sera plus simple que d'aller chercher dans /Applications/MAMP/htdocs/

Pour ce faire, dans l'interface de MAMP, cliquez sur l'onglet Apache et choisissez le dossier Sites.

Pour chaque projet, créez un dossier séparé, ce sera toujours mieux que tous les fichiers en vrac, si si, je vous assure !

Lancez MAMP en Widget

le widget de mamp Au lieu d'avoir sans cesse l'icône de MAMP dans le Dock (ça prend de la place), vous pouvez lancer MAMP dans le Dashboard en installant son widget, ça ne change pas grand chose, c'est juste un peu plus geek.

Version avec phpinfo

  • A la racine de votre serveur web, créez un dossier php_td01_info
  • Créez-y un fichier phpinfo.php
  • dans ce fichier mettez-y le code suivant :
<?php
phpinfo();
?>

(ou http://localhost:8888/php_td01_info/phpinfo.php si vous avez MAMP configuré par défaut)
que se passe-t-il ?

Echo

Pour travailler sur echo, créez un dossier php_td01_echo.

La fonction echo est super pratique, elle permet d'afficher du contenu dans une page web. Je pense qu'elle fait partie des fonctions les plus utilisées dans PHP, on va donc commencer par celle-ci.

echo simple

Créez ainsi un fichier echo_simple.php

<?php
echo "Hello World";
?>

Pour faire ça mieux, placez votre code dans un fichier PHP mais qui contient du code HTML. Placez le donc entre les balises <body>.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//FR"
	"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<title>ANAEL</title>
	<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
	<meta name="author" content="gaspard from freelancis" />
 
</head>
<body>
    <?php
      echo "Hello World";
    ?>
</body>
</html>

Lancez ces fichiers dans un navigateur dont l'adresse commence par http … pour regarder le résultat.

Enfin, que se passe-t-il si vous enregistrez votre fichier au format .html au lieu de .php ? Merci d'écrire la réponse…

echo concaténation

La concaténation, est l'action de rassembler plusieurs chaînes de caractères

<?php
echo "Je suis"."un ninja";

Le . permet de faire la jointure entre la chaîne de caractères “je suis” et “un ninja”. Ce code affiche “Je suisun ninja”, modifiez le pour qu'il affiche “Je suis un ninja”.

echo et variables

Les variables permettent de stocker des données de manière temporaire, en PHP elles s'écrivent avec un $ devant.

<?php
$nom = "Anthony";
echo "Mon nom est ".$nom;
?>

Modifiez ceci pour afficher le nom et le prénom en utilisant les variables $nom et $prenom (souvenez vous que la variable $prénom avec un accent ne fonctionnera pas).

Guillemets, apostrophes, antislash, etc.

Guillemets

Les guillemets ” se disent quote marks ou simplement quote en anglais, les apostrophes ' se disent simple quote.

On peut utiliser les deux types de guillemets dans des echo.

<?php
echo "Hello World";
echo 'Hello World';
?>

La différence, c'est que les variables dans les ' ne sont pas exécutées, testez ainsi ce code source.

<?php
$nom = 'Damien';
 
echo "Hello $nom";
echo 'Hello $nom';
?>

Antislash

Le problème, c'est que ceci ne marche pas parce que PHP se mélange dans entre les guillemets et les apostrophes:

<?php
echo "J'ai aimé le film "Twilight" qui est sorti l'année dernière";
echo 'J'aime';
?>

Testez le code ci-dessus, il doit vous afficher plein d'erreurs. Fixez le en utilisant des \ devant les caractères qui causent le problème.

\n ou retour chariot

L'Antislash n1) de son doux nom est aussi appellé fr:retour chariot, il permet de faire un retour à la ligne.

Si votre code PHP génère du HTML, ça ne se verra pas car — souvenez vous – ça n'a pas d'influence sur le rendu. En revanche, ceci peut vous aider à re-lire plus facilement le code HTML généré.

<?php
echo "<h1>Association nationale des éditeurs de livres</h1>\n";
echo "<p>L'Association nationale des éditeurs de livres (ANEL) est née en 1992.</p>\n";
?>

Dans le navigateur, affichez le code source de la page pour voir si le retour chariot a bien été effectué.

Les variables

Pour travailler sur les variables, créez un dossier php_td01_variables

Comme vu en amphi, les variables sont des receptacles pouvant contenir plusieurs valeurs, par exemple :

<?php 
$var0 = "jean" ; 
$var1 = "christophe" ; 
$var3 = 5.5 ; 
$var2 = $var1 ; 
?>

Pour pratiquer un peu le truc : quelle sera la valeur de la variable $resultat ci-dessous ?

<?php
$var0 = 'Once upon a time';
$var1 = 'la galaxie';
$var2 = 6;
$var3 = $var2 * 7;
$var4 = 'un kiwi';
$resultat = $var1 . $var3;
?>

Si vous avez du mal avec ce concept, allez lire le cours sur les variables sur le site atelier PHP

string

Les strings, comme nous l'avons vu dans l'amphi01 sont des chaînes de caractères, par exemple “je suis une chaîne de caractères” est une chaîne de caractères, 42 n'en est pas une.

Pour ceux qui suivent pas trop, 42 c'est un nombre :-)

$nom = "Gaspard";

integer

Les Integers ou “entiers” sont des nombres, par exemple 42.

$nombre = 42;

float

Les float ou double sont des nombres à virgule, on ne s'en sert presque jamais

$nombre_a_virgules = 1/3;

boolean

Les booleans (on dit fr:Booléens en français) sont des variables qui peuvent prendre comme valeur true ou false qui correspondent à peu près à 0 ou 1, les booléens peuvent être très pratique mais on ne s'en servira pas vraiment dans l'immédiat.

$reponse = true;

array

Les arrays — appelées tableaux en français permettent de mettre plusieurs variables en une seule, on en reparlera quelques lignes plus tard.

$fruits = array('pommes','poires','fraises');

autres

Outre les arrays qui sont des variables contenant d'autres variables, il existe d'autres types de variables comme les ressources et les objets que nous ne verrons pas explicitement cette année. Grosso modo, ça ressemble à ça :

$twingo = new Car(); // objet
$link = mysql_connect(); // ressource

Les tableaux

Nous l'avons vu, les tableaux servent à stocker plusieurs valeurs dans une seule variable, c'est très pratique dans un grand nombre de cas (que nous verrons au td02).

On distingue deux manières de stocker des données : dans un certain ordre (tableaux itératifs) et avec certains mots associés (tableaux associatifs).

itératifs

Les tableaux itératifs peuvent être définis de différentes manières. Le code ci-dessous permet de les créer, mais pas de les afficher.

// méthode 1
 
$eleve = array();
 
$eleve[0] = 'nicolas';
$eleve[1] = 'loic';
$eleve[2] = 'bruno';
 
unset($eleve);
 
 
// méthode 2
 
$eleve = array();
 
$eleve[] = 'nicolas';
$eleve[] = 'loic';
$eleve[] = 'bruno';
 
unset($eleve);
 
// méthode 3
 
 
$eleve = array('nicolas','loic','bruno');
 
unset($eleve);

(juste pour info : unset sert à effacer le contenu de la variable)

Prenez le tableau suivant et reproduisez-le avec la méthode 1

// les premiers pokémons, source : http://fr.wikipedia.org/wiki/Liste_des_Pok%C3%A9mon
$pokemon = array('MissingNo.','Bulbizarre','Herbizarre','Florizarre',
	'Salamèche','Reptincel','Dracaufeu','Carapuce','Carabaffe','Tortank','Chenipan');

A partir du tableau itératif obtenu, affichez Carapuce.

Enfin, ajoutez les 10 pokémon suivants : Chrysacier, Papilusion, etc.

associatifs

Pour les tableaux associatifs, c'est à peu près la même méthode

// méthode 1
$player = array();
$player['vie'] = 100;
$player['armure'] = 50;
$player['endurance'] = 200;
 
unset($player);
 
// méthode 2
$player = array('vie'=>100, 'armure'=>50,'endurance'=>200);

Ajoutez la caractéristique 'mana' level 20 au personnage.

tableau dans un tableau

Bien entendu, pour éviter que ce soit trop simple, on peut mettre des tableaux dans des tableaux, pour nos pokémons de l'exemple ci-dessus, ça donnerait

$pokemon = array();
$pokemon[]=array('nom'=>'MissingNo.','type'=>'inconnu');
$pokemon[]=array('nom'=>'Bulbizarre','type'=>'plante');
$pokemon[]=array('nom'=>'Herbizarre','type'=>'plante');
$pokemon[]=array('nom'=>'Florizarre','type'=>'plante');

Comme c'est vite difficile de s'en sortir, pour afficher le contenu d'un tableau, utilisez la fonction var_dump.

A vous de jouer, cumulez les deux méthodes pour créer plusieurs personnages pour créer un résultat tel que le var_dump($player); affiche ceci :

array(3) {
  [0]=>
  array(2) {
    ["nom"]=>
    string(6) "Naruto"
    ["level"]=>
    int(3)
  }
  [1]=>
  array(2) {
    ["nom"]=>
    string(6) "Sakura"
    ["level"]=>
    int(2)
  }
  [2]=>
  array(2) {
    ["nom"]=>
    string(7) "RockLee"
    ["level"]=>
    int(0)
  }
}

Utilisation d'include

Pour l'exercice include, créez un dossier php_td01_include dans-lequel vous travaillerez dorénavant.

inclusion de texte

Souvenez-vous, quand on veut afficher du texte dans une page, on peut simplement utiliser la fonction echo. Reproduisez cet exemple dans un fichier jaime_les_patates.php

echo "patate";

Créez un fichier patate.txt qui contient simplement :

je suis un fichier patate

Dans le fichier jaime_les_patates.php, à la place du echo, mettez un include

include "patate.txt";

Créez un fichier patate.html tel que ci-dessous et incluez-le

<p>je suis un <em>joli</em> fichier patate</p>

Créez un fichier patate.php tel que ci-dessous et incluez-le

<p>je suis un <em><?php echo "joli"; ?></em> fichier patate</p>

inclusion et variables

Il est également possible de passer des variables dans les includes. Créez un nouveau fichier nommé les_patates.php dont le code est :

$qualificatif = "joli";
include "patate.php";
 
$qualificatif = "moche";
include "patate.php";

Modifiez maintenant le fichier patate.php pour que le résultat de ce script soit :

Je suis un joli fichier patate

Je suis un moche fichier patate

ascii et binary

A tester : que se passe-t-il si j'inclus patate.jpg ?

(oui, je sais, je recycle mes TD, cémal)

Exemple dans la vraie vie

Include est très pratique quand on fait un site, ça évite de faire plein de copiers/collers et quand on a des modifications à faire, ça évite de devoir les faire une à une sur toutes les pages du site, au lieu de ça il suffit de changer dans un seu fichier qui est inclus.

G.EC Finance

Voici un script contenant le site g-ec finance, c'est un petit site de 8 pages, très simple, seulement une seule page a été montée : la page d'accueil.

Créez toutes les pages

g-ec.zip

Vous remarquerez que le contenu des pages est présent dans le dossier templates/content/ il faut donc effectuer des includes pour minimiser vos efforts. Inspirez-vous du fichier index.php si vous êtes perdu.

A partir de l'archive zip, reconstituez toutes les pages du site :

  • index.php c'est fait
  • transition.php
  • assistance.php
  • reorganisation.php
  • assets.php
  • contacts.php
  • jobs.php
  • legal.php

Ajoutez une page partenaires

Une fois ceci effectué, imaginez que le client vous demande d'ajouter une page “partenaires”

Le titre change à chaque page

Vous remarquerez que quelle que soit la page, le titre de la fenêtre reste le même, c'est parce que dans le fichier templates/head/dist.php entre les balises <title> et </title> le texte est toujours le même. En ré-utilisant l'exemple de l'exercice inclusion et variables faites en sorte que chaque page ait un texte différent.

La logique du truc

Vous avez utilisé le framework HTML ”Z“ créé par Cédric Morin. Pour en comprendre les enjeux, vous pouvez regarder cette conférence Un Framework HTML est-il possible (50 minutes)

1) ou “Backslash n” en anglais”
ressources/php/td01.txt · Last modified: 2013/06/16 22:51 (external edit)
 
 
Creative Commons License Powered by PHP Valid XHTML 1.0 April