Académique Documents
Professionnel Documents
Culture Documents
Il peut être :
statique, c'est-à-dire qu'il possède un contenu xe - exemple un roman, un article -
ou dynamique, exemple d'un progiciel de gestion ou une eboutique.
Technologie à connaître
Site Statique
HTML
Site Dynamique
HTML + PHP (/page-apprendre-php)
Vocabulaire
Internet
Ensemble de serveurs interconnectés. Chaque serveur peut être relié à d'autres serveurs,
on parle de réseaux connectés à d'autres réseaux. Schématiquement cela peut ressembler
à une toile d'araignée, d'où le terme de web.
Adresse IP
L'adresse IP est un numéro d'identi cation attribué à un appareil connecté à internet.
Serveur
Le serveur est un ordinateur connecté à internet qui a plusieurs intérêts dont celui de
retourner des pages web.
Il est important de comprendre la notion de client et de serveur. Votre ordinateur est un
client et l'ordinateur distant qui répond à votre demande est un serveur. C'est comme dans
un bar, le client demande une bière et le serveur la lui rapporte.
Bien sûr le terme "ordinateur distant" n'est qu'une image pour comprendre la logique. Un
serveur peut ne pas être distant. Un développeur - sérieux - utilisera un serveur local ( sur son
propre ordinateur ) pour faire ses tests avant de mettre son travail sur un serveur distant /
public.
Intranet
Un site web n'est pas forcément accessible sur internet. Il peut l'être uniquement en local (sur
sa propre machine) ou sur un réseau privé, on parle d'intranet. Cette solution existe surtout
pour les entreprises, cela permet une plus grande sécurité et ainsi bloquer toute agression
extérieure au réseau, ou pour des raisons de performance ou de maintenance.
Si vous désirez faire un site moderne avec un design propre, il vous faudra maîtriser en plus
les technologies BOOTSTRAP (/page-apprendre-bootstrap-twitter) et JQUERY (/page-
apprendre-jquery).
Si vous avez l'ambition de faire un site dynamique avec interaction de l'utilisateur, il vous
faudra en plus maîtriser PHP et MySQL (/page-apprendre-mysql).
UNE QUESTION SUR L'ARTICLE? (/page-question)
Il est important de comprendre ce qu'est l'ergonomie d'un site web. Il faut toujours se mettre
à la place de l'utilisateur. Celui-ci a besoin de se sentir à l'aise, de trouver les informations
qu'il cherche rapidement et de prendre plaisir à lire ce qu'il voit sur le fond comme sur la
forme. On ne doit pas chercher l'information, elle doit apparaître naturellement. Il faut
également ajouter à son site les conventions qu'on peut retrouver sur les sites les plus
populaires. Par exemple, depuis toujours les sites ont leur logo en haut à gauche de leur page
et lorsque l'on clique dessus on tombe sur la page d'accueil du site, c'est une habitude
utilisateur, tout le monde fait ça. Si vous mettez le lien vers votre page d'accueil en bas à
droite avec un GIF animé de la décennie dernière, cela pourrait agacer l'utilisateur et ferait
passer votre site pour un site amateur.
Le design
La notion de mode existe aussi sur internet, le design devient de plus en plus simple et léger.
C'est d'ailleurs le cas de iOs7 et Windows 8 également pour ne citer qu'eux en exemple. On
cherche à créer des logiciels e caces avant tout. Un site/logiciel simple et épuré c'est un
projet réussi. Il n'est pas évident de partir de rien et faire un site agréable à lire. Soit on a un
sens artistique et donc il n'y a rien à apprendre, soit on n'en a pas et là c'est plus di cile. Le
design ne s'apprend pas vraiment, il faut s'inspirer de la mode du moment. Mon conseil pour
créer un site design, surfez sur internet, mettez en favoris vos sites préférés et CSSW vous
apprendra à comprendre comment les développeurs ont réalisé leur site, vous pourrez vous
inspirer de vos sites préférés. Un article sur Bootsrap vous apprendra à faire de beaux sites
modernes sans que vous ayez le talent artistique d'un designer web.
Le web de demain
Votre site doit être parfaitement adapté à tous les supports. Aujourd'hui un site web peut
être vu depuis un écran de 30 pouces avec des résolutions dépassant les 4000 pixels, sur une
tablette ou un smartphone. Il faut que votre site soit adapté à tous les supports. La réponse à
ce besoin s'appelle le responsive design.
Le responsive design
Aujourd'hui on peut faire un seul site web pour tous les supports. Il su t de dire au
navigateur d'a cher ou de cacher tel élément en fonction de la taille de l'écran, on parle alors
de responsive design. Vous devez garder cette information dans votre tête dès le début de
projet. Pour chaque page réalisée testez-la sur votre smartphone, tablette ou simplement
réduisez la taille de votre navigateur pour voir le résultat de votre travail.
UNE QUESTION SUR L'ARTICLE? (/page-question)
Le navigateur de Google
Google est très bon dans beaucoup de domaines. Il ne fera pas exception dans la conception
d'un navigateur. Je vous conseille d'utiliser ce navigateur que ce soit pour surfer ou pour
travailler. Il est compatible tout OS et est très léger et rapide.
Où le télécharger?
Vous pouvez télécharger Google Chrome à cette adresse:
Télécharger Google Chrome (http://www.google.fr/intl/fr/chrome/browser/)
L'analyse du code
Chrome a une fonctionnalité native très intéressante qui permet de voir/modi er le code
HTML d'une page en temps réel, ainsi que le CSS hérité par les éléments qui sont en plus
sélectionnables graphiquement. Pour cela il vous su t d'avoir le focus sur le navigateur et
d'appuyer sur la touche F12 de votre clavier. Une fenêtre apparaît en bas de page.
Le code que vous voyez à gauche et le code HTML du site visité. Le rôle d'un navigateur est
d'interpréter ce code pour le transformer en élément visuel.
L'édition du code
La magie de cette fonctionnalité c'est de pouvoir sélectionner un élément et de le modi er en
temps réel sur votre navigateur.
Dans cet exemple j'ai modi é la couleur du corps du site de noir à blanc.
La console
Dans cette même fonctionnalité vous pourrez exécuter du code Javascript (/page-jquery-
javascript) à la volée depuis le module "Console".
Le debug
C'est dans cette partie qu'apparaîtront les erreurs javascript ou css. Très utile quand vous
êtes bloqué.
CTRL + SHIFT + F Faire une recherche sur les chiers d'un dossier
Pensez à installer le plugin SublimeCodeIntel qui vous aidera à compléter / sauter vers vos
fonctions.
Vous pouvez aussi installer le plugin SublimeLinter qui vous aidera à trouver les erreurs de
syntaxe de code.
Notepad++
Eclipse
Pour les plus gros projets je vous conseille d'utiliser Eclipse. Il permet de gérer plusieurs
projets et possède quelques outils très utiles. Personnellement j'ai souvent travaillé avec
Eclipse en entreprise, quelque soit le type de projet.
Suivez les instructions lors de l'installation et assurez-vous que l'icone wampserveur soit
a chée dans votre barre des tâches et soit de couleur verte.
Pour cela veuillez cliquer sur l'icone verte wampserver puis sélectionnez Apache et en n
cliquez sur le chier httpd.conf
Par défaut le bloc note devrait ouvrir ce chier.
NameVirtualHost boot.local
<VirtualHost xxx.local:80>
ServerName xxx.local
DocumentRoot "C:\wamp\www\xxx"
DirectoryIndex index.php
<Directory "C:\wamp\www\xxx">
AllowOverride All
Allow from All
</Directory>
<//VirtualHost>
Remplacez xxx par le nom de votre site sans espace et sans accent. Dans l'exemple, le chemin
du site est C:\wamp\www\xxx . Adaptez également cette partie du code en entrant le chemin
que vous avez choisi. Peu importe l'endroit du moment que vous le spéci ez au serveur web.
Créez dans ce dossier un chier à l'extension .txt qui servira de test à la n de ce tutoriel - par
exemple test.txt - et écrivez du texte dans ce chier.
Il faut maintenant indiquer à votre système d'exploitation que xxx.local pointe vers votre
propre ordinateur. Pour cela, vous devez éditer le chier hosts qui se trouve dans le dossier
système: C:\Windows\System32\drivers\etc. Ce chier n'a pas d'extension, ouvrez le avec un
éditeur de texte et ajoutez la ligne suivante à la n du chier:
127.0.0.1 xxx.local
Redémarez votre serveur web en cliquant sur "Restart All Services" :
Si vous voyez le texte que vous avez entré dans le chier .txt c'est que votre serveur local est
opérationnel.
Le logiciel écoute le port 25 et intercepte les envois mail ce qui vous permet de travailler dans
un environnement de développement sans risque d'envoi mail non souhaité.
Installer un serveur web sous linux
Si vous êtes sur linux, je vous invite à consulter la page suivante: Installer serveur web sous
linux (http://creer.local/page-linux-installer-serveur-web-php-mysql-apache)
Ensuite e acez la zone avec la touche "Suppr" ou cliquez sur le "E acer" dans le menu
"Edition":
Vous pouvez obtenir ce résultat :
Fond transparent
Pour transformer le fond en fond transparent il su t maintenant de remplacer le vert uo
par du transparent.
Résultat :
UNE QUESTION SUR L'ARTICLE? (/page-question)
OVH
OVH est l'acronyme de "On vous héberge". Bien qu'il ne soit pas le seul à faire cela, c'est sur
ce site que vous pourrez réserver un nom de domaine et un hébergement.
Cliquez sur "Commander" et suivez les instructions. Vous pouvez choisir l'o re que vous
désirez mais la version "Perso" qui est la moins cher est tout à fait acceptable pour un
premier projet. Une fois le paiement e ectué vous receverez par mail toutes les information
de votre site.
OVH FTP
Pour gérer votre site, vous n'aurez besoin que d'un accès FTP ( voir rubrique suivante ).
Normalement ces informations sont sur votre mail de con rmation de paiement, mais si vous
ne les avez plus loggez vous dans l'espace membre cliquez sur l'onglet "Hébergement" puis
"Mot de passe FTP"
FTP et Filezilla
Et remplissez les champs avec les valeurs que vous avez reçu de votre hébergeur ( exemple
OVH ).
Ensuite renseignez les données de localisation de sourcel et de destination pour synchroniser
la consultatation des données:
Dictionnaire informatique
Adresse IP (/dico-adresse-ip)
L'adresse IP ( Internet Protocol ) est un numéro d'identi cation qui est attribué à une machine
connectée à Internet.
Base de données (/dico-base-de-donnees)
Une base de données ( ou database en anglais ) est un conteneur qui permet de stocker des
informations structurées et qui sont exploitables facilement.
CRUD (/dico-crud)
CRUD ( Create, Read, Update, Delete ) désigne les 4 opérations de base d'un logiciel. Le terme
est un clin d'oeil au mot anglais crude qui signi e "rudimentaire".
DOM (/dico-dom)
Le Document Object Model ( ou DOM ) est un standard du W3C qui permet de créer une
arborescence de la strcuture d'un document et de ses éléments.
FTP (/dico-ftp)
FTP est l'acronyme de File Transport Protocol, il est un protocole de communication qui
permet d'échanger des chiers entre deux machines distantes.
JSON (/dico-json)
JSON JavaScript Object Notation est un format de données qui permet de représenter une
information structurée.
Multi-thread (/dico-multi-thread)
Un logiciel multi-thread est capable d'exécuter plusieurs processus en même temps.
Serveur web (/dico-serveur-web)
Le serveur web est une machine connectée à internet et qui heberge des ressources ( page
web, images, vidéo, chiers divers... )
Thread (/dico-thread)
Thread ( ou l d'execution / tâche / processus ) est une execution d'une suite d'instructions.
URL (/dico-url)
L'URL ( Uniform Resource Locator ) est une adresse web. Elle peut être composée de lettres et
de chi res.
Virtual Host (/dico-virtual-host)
Virtual Host ( ou hébergement virtuel ) permet d'héberger plusieurs noms de domaine sur un
seul et même serveur.
Le code HTML est composé de balises imbriquées les unes dans les autres ; cela permet de
regrouper les informations.
<!DOCTYPE html>
<head>
<title>Titre de ma page</title>
<style> ... </style>
</head>
<body>Bienvenue sur mon site</body>
</html>
Pour donner une valeur à une balise on encadre la valeur de sa balise comme ci-dessous:
<b>Texte GRAS</b>
<i>Texte ITALIQUE</i>
<u>Texte SOULIGNE</u>
Dans certains cas, par exemple pour <img>, <br>, <input> il ne faut pas fermer la balise.
Exemple:
Ces balises n'ont pas pas besoin de valeur ( c'est cas de la balise <br> ) ou alors nécessite
plusieurs valeurs donc la syntaxe est di érent. Le rôle des attributs est expliqué dans le
chapitre suivant.
Balise Fonction
<cite> Citation
<div> Division
<form> Formulaire
<frame> Frame
<table> Tableau
Les balises peuvent avoir des propriétés, on les appelle des attributs.
<!DOCTYPE html>
<head>
<title>Titre de ma page</title>
<meta name="description" content="Site web" />
<style type="txt/css"> ... </style>
</head>
<body>Bienvenue sur mon site</body>
</html>
Dans l'exemple ci-dessus, l'attribut "name" de la base "meta" a pour valeur "description". Cela
permet de dire au navigateur que la balise meta - qui est une balise d'information - nous
informe de la description du site. Pour cette balise la valeur se met dans l'attribut "content".
autocomplete <input>, <select>, <textarea> Propriété qui permet d'a cher ou non des
propositions de complétion de texte à
l'utilisateur
form <button>, < eldset>, <input>, Indique le formulaire qui est propriétaire
<label>, <object>, <output>, de l'élément
<progress>, <select>, <textarea>
style TOUS Dé nit les styles CSS qui primeront sur les
styles précédemment dé nis.
<table>
<tr>
<td>Cellule 1 de la ligne 1</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
<tr>
<td>Cellule 1 de la ligne 2</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
</table>
Résultat:
Cellule 1 de la ligne 1 Cellule 2 de la ligne 1
Les entêtes
<table>
<tr>
<th>Entete 1</th>
<th>Entete 2</th>
</tr>
<tr>
<td>Cellule 1 de la ligne 2</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
</table>
En tête 1 Entête 2
<table>
<tr>
<td>Cellule 1 de la ligne 1</td>
<td>Cellule 2 de la ligne 1</td>
</tr>
<tr>
<td colspan="2">
FUSION de celulle
</td>
</tr>
<tr>
<td>Cellule 1 de la ligne 3</td>
<td>Cellule 2 de la ligne 3</td>
</tr>
</table>
<table>
<tr>
<td>Cellule 1 de la ligne 1</td>
<td>Cellule 2 de la ligne 1</td>
</tr>
<tr>
<td rowspan="2">
FUSION cellule
</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
<tr>
<td>Cellule 2 de la ligne 3</td>
</tr>
</table>
<table>
<caption>Legende en haut</caption>
<tr>
<td>Cellule 1 de la ligne 1</td>
<td>Cellule 2 de la ligne 1</td>
</tr>
<tr>
<td>Cellule 1 de la ligne 2</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
</table>
Légende en haut
Cellule 1 de la ligne 1 Cellule 2 de la ligne 1
Cellule 1 de la ligne 2 Cellule 2 de la ligne 2
<table>
<caption align="bottom">Legende en bas</caption>
<tr>
<td>Cellule 1 de la ligne 1</td>
<td>Cellule 2 de la ligne 1</td>
</tr>
<tr>
<td>Cellule 1 de la ligne 2</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
</table>
<table border="10">
<tr>
<td width="10">10px</td>
<td>Cellule 2 de la ligne 1</td>
</tr>
<tr>
<td height="200">200px</td>
<td>Cellule 2 de la ligne 2</td>
</tr>
</table>
<table>
<thead>
<tr>
<th>Col1</th>
<th>Col2</th>
</tr>
</thead>
<tbody>
<tr>
<td>c1</td>
<td>c2</td>
</tr>
</tbody>
<tfoot>
<tr>
<th>c3</th>
<th>c4</th>
</tr>
</tfoot>
</table>
Ce qui ne changerait pas grand chose visuellement mais le code est plus précis, on sait
maintenant quelle partie du tableau est l'entête, le corps et le bas de tableau. Alors
concrètement à quoi sert tout cela ? Essentiellement à styliser un tableau de données. On va
créer un tableau avec un entête de couleur rouge en haut en vert en bas. Il sera plus aisé de
dé nir ce genre de style par la suite en CSS.
Col1 Col2
c1 c2
c3 c4
Liste UL OL LI
Liste non ordonnée
Comme nous avons vu dans le chapitre balise, il est possible de créer des listes d'item en
HTML.
Exemple
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ul>
Résultat:
Item 1
Item 2
Item 3
Item 4
Liste ordonnée
<ol>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
</ol>
Résultat:
1. Item 1
2. Item 2
3. Item 3
4. Item 4
Pour une même qualité d'image un JPG peut être trois fois plus léger qu'un PNG, alors que
pour d'autres types d'images, comme un simple dégradé le PNG sera plus léger ; de plus le
PNG a tendance à mieux respecter la qualité de l'image, les JPG sont souvent pixélisé
lorsqu'ils sont trop compressé.
Résultat:
Résultat:
Ajouter un titre à l'image
Pour a cher un texte au survol de l'image, il su t d'indiquer le texte souhaiter dans l'attribut
title. Il est également intéressant de remplir l'attribut alt qui permet d'a cher un texte si le
navigateur n'arrive pas à charger l'image.
<img
alt="Photo egypte ancienne"
title="Photo Egypte Ancienne"
src="http://www.egypte-antique.com/egypte.jpg" />
Résultat:
(http://www.egypte-antique.com)
UNE QUESTION SUR L'ARTICLE? (/page-question)
EGYPTE ANCIENNE
(http://www.egypte-
antique.com)
On remarquera que lorsqu'on clique dessus, on quitte le site pour aller sur un autre. Pour
éviter de perdre la page en cours on peut donner à la balise <a> l'attribut target qui indiquera
la cible de destination.
_self a chera le contenu dans le cadre courant, c'est la valeur par défaut.
Les ancrages
La gestion des encrages se fait avec l'attribut name. Le fait de nommer cette balise la
transforme en ancre. Il s'agit d'un point de repère qu'on peut atteindre via l'URL.
<a name="nom-de-votre-ancre"></a>
<a href="#nom-de-votre-ancre"></a>
Exemple:
ANCRE
POINTEUR
J'ai rempli la balise <a> par la valeur "ANCRE", j'aurai pu la laisser vide pour rendre l'ancre
invisible. Lorsque l'on clique sur le pointeur, le navigateur scroll jusqu'à l'ancre.
Exemple:
<a
href="http://www.egypte-antique.com"
target="_blank">
<img
alt="Photo egypte ancienne"
title="Photo Egypte Ancienne"
src="http://www.egypte-antique.com/egypte.jpg" />
</a>
Résultat:
(http://www.egypte-antique.com)
Le champ texte
Exemple de champ texte:
<input />
Résultat:
Checkbox
Exemple de checkbox:
Résultat:
OUI
NON
Ce qui nous frappe lors de ce test de checkbox c'est qu'on peut cocher les deux valeurs. C'est
assez idiot de répondre à une question par oui et par non en même temps.
Il existe donc un input qui permet de choisir qu'une seule réponse possible.
Radio
Résultat:
OUI
NON
Case cochée
Par défaut aucun des boutons radio ou checkbox n'est coché. Pour cocher la réponse "oui"
par défaut, il faut l'indiquer avec l'attribut checked.
Résultat:
OUI
NON
Textarea
Il existe un type d'input qui permet d'écrire du texte sur plusieurs lignes
<textarea>Exemple</textarea>
Résultat:
Exemple
Bien qu'il soit conseillé de changer sa taille en CSS, on peut modi er sa taille en lui précisant
son nom de colonnes et de lignes.
Résultat:
Exemple
La liste déroulante
Lorsque l'on propose à l'utilisateur de sélectionner une valueur stricte, on lui propose une
liste déroulante
<select>
<option>OPTION 1</option>
<option>OPTION 2</option>
</select>
Résultat:
OPTION 1
Input à connaître
<input type="text" />
<input type="checkbox" />
<input type="radio" />
<textarea></textarea>
<select></select>
La balise <form>
Les formulaires sont encadrés par les balises <form> et possèdent les attributs suivants:
METHOD, indique le type d'envoi des données. Soit en POST ( données envoyées via le corps
de la requête ) ou en GET qui envoie les données via l'URL.
ACTION indique la localisation du script. Cela peut être un script CGI ou directement une
adresse mail, exemple : mailto:exemple@exemple.com
Exemple:
Résultat:
Inscription
Nom
Prénom
Valider
¨ ¨ Tréma
˜ ˜ Tilde
¸ ¸ Cédille
¯ ¯ Macron
¶ ¶ Paragraphe
© © Copyright
◊ ◊ Losange
♠ ♠ Pique
♣ ♣ Trè e
♥ ♥ Coeur
♦ ♦ Carreau
ç ç le c cédille
α α alpha
Α Α Alpha
β β beta
Β Β Beta
γ γ gamma
Γ Γ Gamma
δ δ delta
Δ Δ Delta
ε ε epsilon
Ε Ε Epsilon
ζ ζ zeta
Ζ Ζ Zeta
η η eta
Η Η Eta
θ θ theta
Θ Θ Theta
ι ι iota
Ι Ι Iota
κ κ kappa
Κ Κ Kappa
λ λ lambda
Λ Λ Lambda
μ μ mu
Μ Μ Mu
ν ν nu
Ν Ν Nu
ξ ξ xi
Ξ Ξ Xi
ο ο omicron
Ο Ο Omicron
π π pi
Π Π Pi
ρ ρ rho
Ρ Ρ Rho
σ σ sigma
Σ Σ Sigma
τ τ tau
Τ Τ Tau
υ υ upsilon
Υ Υ Upsilon
φ φ phi
Φ Φ Phi
χ χ chi
Χ Χ Chi
ψ ψ psi
Ψ Ψ Psi
ω ω omega
Ω Ω Omega
° ° Degré
µ µ Mu
≠ ≠ Di érent
≡ ≡ Equivalent
± ± Plus ou moins
− − moins
× × multiplication
÷ ÷ division
⁄ ⁄ fraction
¼ ¼ 1 quart
½ ½ 1 demi
¾ ¾ 3 quarts
¹ ¹ Exposant 1
² ² Exposant 2
³ ³ Exposant 3
ƒ ƒ Fonction
∑ ∑ Somme
∞ &in n; In ni
∩ ∩ Intersection
∫ ∫ Intégrale
UNE QUESTION SUR L'ARTICLE? (/page-question)
<style>
span
{
color:red;
}
</style>
<span>Yes!</span>
Résultat:
Yes!
L'association par id
Pour donner un identi ant unique à un élément, je lui donne comme attribut un "id".
<div id="xxx">BONJOUR</div>
Résultat:
BONJOUR
On remarque que pour une association unique, CSS utilise le caractère #. La syntaxe CSS est
di érente de HTML, les données associées à l'identi ant sont encadrées par des accolades {}.
Dans ces accolades on peut y implémenter des propriétés. Dans cet exemple on peut voir
"color", "background-color", "font-weight" et "width". Et pour chaque propriété j'ai donné une
valeur. Ainsi pour la propriété "color", j'ai dé ni que la couleur est "red" donc rouge. La
propriété "color" change la couleur du texte.
Exemple:
<span class="menu">XXX</span>
<div class="menu">YYY</div>
<style>
.menu
{
background-color:violet;
}
</style>
XXX
YYY
Il est possible d'associer plusieurs class sur un même élément en les séparant d'un espace:
Combinaison d'association
Il est possible de combiner les associations entre elles. Ainsi si je veux transformer le texte
des balises <a> du <footer> en leur donnant une couleur bleu, je peux le faire en une ligne
comme ceci:
Eléments imbriqués
<style>
footer a
{
color:blue;
}
</style>
On remarque un espace entre la balise footer et a. Les liens de votre <footer> seront
désormais bleu.
Groupe d'éléments
<style>
a,b,span,footer
{
font-weight:bold;
}
</style>
<style>
body > a
{
font-weight:bold;
}
</style>
Ce code permet de donner un texte gras aux liens qui sont directement dans le <body> ; les
liens imbriqués dans d'autres éléments ne seront pas concernés.
Sélecteur consécutif
<style>
td + td
{
background-color:orange;
}
</style>
Résultat:
0 1 2 3
0 1 2 3
<style>
input[disabled]
{
color:orange;
}
</style>
Résultat:
0 1
Dans cet exemple on peut voir que l'input qui a été mis en "disabled" a pris la couleur orange.
<style>
input[value="123"]
{
background-color:orange;
}
</style>
Résultat:
123
456
789
Exemple:
<style>
input[value~="olivier"]
{
color:green;
font-style:italic;
border-color:red;
}
</style>
olivier engel
engel olivier
olivierengel
batman
<style>
input[value^="olivier"]
{
color:green;
}
</style>
olivier engel
engel olivier
olivierengel
batman
<style>
input[value$="olivier"]
{
color:green;
}
</style>
olivier engel
engel olivier
olivierengel
batman
Elément qui contient la sous chaine "XXX"
<style>
input[value*="olivier"]
{
color:green;
}
</style>
L'héritage en CSS?
CSS a été conçu pour que les enfants d'un élément héritent des propriétés de leurs parents.
Ainsi si je dé nis une couleur de texte dans le <body>, les éléments enfants auront la même
couleur.
Exemple:
<style>
body
{
color:red;
}
</style>
<h1>Titre</h1>
Résultat:
Titre
Ecrasement des propriétés
CSS permet de redé nir les propriétés d'un élément plusieurs fois, le dernier enregistrement
étant celui qui sera utilisé.
<style>
body
{
color:red;
}
h1
{
color:blue;
}
#main h1
{
color:green;
}
#main h1
{
color:orange;
}
</style>
Dans cet exemple la balise <h1> qui se trouve dans l'élement #main aura comme couleur
d'abord rouge puis bleu puis vert et en n orange. A la n de la lecture du chier le navigateur
retiendra la dernière valeur, donc la couleur orange sera utilisée.
L'intéret de cette information est de savoir qu'il faut dabord importer les CSS génériques, puis
des modules exterieurs et en n des CSS personnalisés à votre site. L'ordre jouant un rôle
important, vous devez y penser dès la création de votre site.
border-style solid, dashed, dotted, double, groove, Dé nit le forme de bordure d'un
ridge, inset, outset élément
border-spacing: 2px;
clear both, left, none ,right Détermine si l'élément bloc peut être
clear:both; a ché dans la même bande
horizontale qu'un élément ottant (
voir oat ) voisin.
font-size Taille absolue, taille relative, longueur, Détermine la police d'écriture d'un
pourcentage élément
font-size:14px;
font-size:x-small;
font-size:120%;
font-weight bold, bolder, lighter, normal, 100, 200, Dé nit l'épaisseur de la police
300, 400, 500, 600, 700, 800, 900 d'écriture.
font-weight:bolder; 100 est la valeur la plus ne et la plus
large est 900.
outline-style solid, dashed, dotted, double, groove, Determine le style de l'outline d'un
ridge, inset, outset élément
outline-style: dashed;
background-color:red;
background-color:#ff0000;
background-color:RGB( 255, 0, 0 );
Comme l'exemple l'indique, on peut choisir un nom de couleur en anglais. Exemple: red,
green, blue, etc. On peut également donner à la propriété un code hexadécimale qui est
composé de 3 valeurs:
On retrouve la même logique pour le code décimal RGB, où le maximum est 255.
#123456
Exemple d'utilisation:
<style>
body
{
font-family: "Fenix", serif;
}
</style>
Et voila, sans autre intervention, votre police d'écriture a changé comme par magie.
<style>
@font-face
{
font-family: "ma_police";
src: url("folder/ma_police.ttf");
}
</div>
Puis dé nir quel élément est concernée par cette police d'écriture
<style>
body
{
font-family: "ma_police", serif;
}
</style>
margin
border
padding
ELEMENT
Relative Block
Les éléments de type Block occupe tout l'espace de la ligne et impose un retour à la ligne
pour l'élément qui suit.
<style>
.div1
{
background-color:yellow;
}
.div2
{
background-color:gray;
}
</style>
Résultat:
DIV 1
DIV 2
Relative Inline
Les éléments de type Inline quand à eux se suivent les uns les autres. L'élément span est
d'ailleurs complètement invisible par défaut.
<style>
.span1
{
background-color:yellow;
}
.span2
{
background-color:gray;
}
</style>
Résultat:
SPAN 1 SPAN 2
Absolute
Un élément qui a la propriété position:absolute; sera placé dans son conteneur ( qui a une
position:relative; ) aux coordonnées qu'on lui dé nit.
Exemple:
<style>
#container
{
position:relative;
border:1px dashed #ccc;
}
#absolute_div
{
position:absolute;
background-color:yellow;
top:60px;
left:30px;
height:30px;
width:100px;
}
</style>
<div class="container">
<div class="absolute_div"></div>
</div>
Résultat:
absolute
Fixed
Un élément qui a la propriété position: xed; sera toujours visible sur l'écran à condition que
les coordonnées qu'on lui donne soit sur l'écran. Le menu en haut de page de ce site a cette
propriété. Lorsque l'on scroll celui-ci reste au top de la fenêtre.
Exemple:
<style>
#orange{ float:right; }
</style>
<style>
#orange{ float:left; }
</style>
Syntaxe:
<style>
selecteur:pseudo-class
{
propriete:valeur;
}
</style>
Exemple:
<style>
#div1:hover
{
background-color:yellow;
}
</style>
Résultat:
DIV 1
:checked
:disabled
:empty
:enabled
: rst
: rst-child
: rst-of-type
:focus
:hover
:last-child
:last-of-type
:visited
Le responsive design
En CSS le resposive design est le fait de créer un design adapté au support. Il ne s'agit pas
seulement d'esthétisme mais aussi o rir une meilleur expérience utilisateur à l'internaute en
augmentant l'ergonomie de votre site web.
La methode la plus basique de responsive design est d'a cher ou de cacher un élément en
fonction de la largeur et de la hauteur du support. Il est donc possible de créer deux menus
et a cher le petit menu sur les écrans de faible résolution. Le problème de cette pratique
c'est qu'on créer deux fois la même ressource. Il est donc plus judicieux de changer les
propriétés d'un élément en fonction de la taille de l'écran.
Exemple:
<style>
#menu{ width:350px; }
@media (min-width: 500px) {
#menu{ width:450px; }
}
@media (min-width: 1000px) {
#menu{ width:800px; }
}
</style>
Dans cet exemple, notre élément #menu aura par défaut une taille de 350 pixels. Si le
support est supérieur à 500 pixels en largeur alors cet élément passera à 500px de largeur et
si le support est supérieur à 1000 pixels de largeur le menu fera 800 pixels de largeur. Il est
possible de tester son responsive design en changeant la taille de son navigateur mais un
support tablette ou smartphone peut parfois être plus parlant.
Résolution iphone
1 2 3
4 5 6
7 8 9
On remarque que pour la grille ci-dessus, les bords au centre de la grille font 2px de largeur ;
en e et comme une case fait 1px de largeur, 2 cases qui se touchent donneront l'impression
d'une bordure de 2px. Pour éviter cette bordure de 2px, vous devez ajouter une ligne de code
: margin: 0 -1px -1px 0;
Exemple:
<style>
.ul li
{
width:33%;
height:50px;
float:left;
border:1px solid #ddd;
margin: 0 -1px -1px 0;
}
</style>
1 2 3
4 5 6
7 8 9
Exemple:
<style>
#main{
margin:10px auto;
}
</style>
Cet exemple ajoute une marge de 10px en haut et en bas de l'élément et centre
horizontalement l'élément.
Exemple:
<style>
ul li{
line-height:20px;
height:20px;
}
</style>
<ul>
<li>Lien 1</li>
...
</ul>
Sticky Footer
Le footer est toujours compliqué à a cher. Soit on aimerait le mettre en xed, mais il
occuperait tout le temps un espace trop important, soit en absolute, mais si la page comporte
un scrolling c'est imposible, et si on le met en relative, on aura un espace blanc en bas de
page pour les écrans les plus grand à moins d'imposer une hauteur minimum pour la page,
mais ce n'est pas esthétique non plus.
Il existe cependant une astuce CSS qui permet d'avoir un footer un bas de page proprement:
<div id="wrap">
Mon contenu
</div>
<footer>
Mon footer
</footer>
html, body
{
height: 100%;
}
#wrap
{
min-height: 100%;
/* égal à la hauteur du footer */
margin-bottom: -200px;
}
#wrap:after
{
display: block;
content: "";
}
footer, #wrap:after
{
height: 200px;
}
UNE QUESTION SUR L'ARTICLE? (/page-question)
<?php
// Votre code
?>
Exemple:
<?php
echo "Votre texte";
?>
Résultat:
Votre texte
La méthode statique serait de copier coller la ligne de code HTML autant de fois qu'on a
besoin d'input. La méthode dynamique serait de créer un script qui indique le nombre d'input
que l'on désire a cher.
<?php
for( $i = 1 ; $i <= 15 ; $i++ ){
echo '<input type="text" value="'. $i .'" />';
}
?>
On remarque que même si le code semble plus complexe, on utilise moins de lignes de code.
Imaginez maintenant qu'on devait a cher 1000 lignes, le script ne changerait que la valeur 15
en 1000 alors que la méthode statique obligerait à modi er 1000 lignes de code HTML.
// Commentaire ici
# Commentaire ici
/*
Commentaire ici
*/
Parfois un commentaire semble inutile sur une fonction qui s'appelle "build_menu", mais il
n'y a jamais trop de commentaires, vous devez comprendre ce que fait un script exactement
juste en lisant les commentaires.
<?php
$name = 'olivier';
?>
Ecrasement de valeur
Je peux écraser la valeur quand je veux.
Exemple:
<?php
$name = 'olivier';
$name = 'jean';
?>
Concaténation
Je peux ajouter du texte à une valeur déjà existante, on parle de concaténation. Pour cela
j'ajoute un point entre les deux items.
Exemple:
<?php
$name = 'olivier';
$name = $name . ' engel ';
?>
On peut écrire le code également sous cette forme pour concaténer des données:
<?php
$name = 'olivier';
$name.= ' engel ';
?>
En PHP, les variables ne sont pas typées. C'est-à-dire qu'une variable peut accepter n'importe
quel type de valeur à sa déclaration. On peut donc en théorie additionner des chaînes de
caractères avec des chi res numériques, ce qui n'a pas vraiment de sens.
Opérateurs mathématique
On peut additionner, soustraire, multiplier ou diviser deux valeurs:
<?php
$value1 = 500;
$value2 = 100;
$value3 = $value1 + $value2;
$value4 = $value1 - $value2;
$value5 = $value1 * $value2;
$value6 = $value1 / $value2;
?>
On remarque que dans notre exemple on a choisi une orange, mais on aurait pu prendre un
autre fruit. Le mixeur quant à lui ne change pas, il mixe sans se poser de question. Son rôle
est de mixer et on aura toujours du jus, à condition de lui donner un item adapté ( un fruit ou
un légume ). Donner un mauvais item à une fonction provoquera les mêmes dégâts que
mettre un objet non adapté dans ce mixeur.
On n'est pas obligé de comprendre comment fonctionne un mixeur pour s'en servir. Savoir
appuyer sur le bouton "On" est le seul besoin. En programmation c'est à peu près la meme
logique, on peut appeler une fonction pour transformer notre variable, on ne comprend pas
le mécanisme de la fonction, mais on sait qu'elle nous la transformera en ce que nous
désirons.
<?php
$resultat = ma_fonction( $value1 );
?>
<?php
function ma_fonction( $value ){
return $value + 1;
}
?>
PHP permet d'appeler une fonction qui n'est pas encore déclarée. Dans mon exemple
j'appelle la fonction "ma_fonction" alors que je la déclare après. J'aurais pu appeler ma
fonction avant ou après sa création.
La fonction que j'ai crée ajoute "+1" à la valeur qu'on lui envoie.
La fonction indépendante
Une fonction peut être aussi appelée sans paramètre.
<?php
destroy_the_world();
?>
Si la fonction est bien codée, je suis censé détruire le monde comme indiqué, sans savoir de
quoi est composé cette fonction.
Exemple:
<?php
destroy_the_world( "Atlantide" );
?>
<?php
function destroy_the_world( $lieu = "Tout" ){
// Code confidentiel
...
}
?>
Si le lieu n'est pas reseigné, c'est comme si on lui avait passer la variable "Tout".
Plusieurs syntaxes
Pour les fonctions natives comme echo ou include, la syntaxe est di érente:
<?php
echo "test";
include "/folder/fichier.txt";
?>
0 Olivier ENGEL
1 Batman
2 Harry Potter
3 Hulk
PHP associe donc une valeur à un index. L'index 1 du tableau à pour valeur Batman ; et le
premier index d'un tableau est 0.
Les index
Les index sont les clés des tableaux. Si je veux le troisième employé de la liste, je dois ecrire
$employes[2], qui est Harry Potter. Je peux voir toutes les valeurs d'un tableau grâce à la
fonction var_dump
var_dump( $employes );
Je peux dé nir moi même les index, au lieu de prendre une suite numérique, je peux lui
donner la valeur que je veux si j'utilise des valeurs alphanumériques.
Exemple:
$employes = array(
"the_best" => "olivier engel",
"the_dark" => "Batman",
"the_child" => "Harry Potter",
"the_big" => "Hulk"
);
$employes["the_dark"];
Manipuler un tableau
Si je veux manipuler un tableau dont je ne connais pas les index je peux l'explorer grâce à la
fonction foreach
Pour information la fonction echo permet d'écrire les valeurs qu'on lui indique. Dans
l'exemple ci-dessus il s'agit de HTML.
unset( $employes["the_best"] );
$employes[] = "Spiderman";
// ou avec un index personnalisé
$employes["the_spider"] = "Spiderman";
Les fonction PHP pour manipuler les array
Lorsque vous travaillez sur des scripts un peu complexe, vous utilisez forcément des
tableaux. PHP vous simpli e la vie en vous proposant des fonctions qui vous permettent de
trier, d'inverser les données, etc. :
int 4
sort( $a );
array (size=3)
0 => string 'abricot' (length=4)
1 => string 'blue' (length=4)
2 => string 'green' (length=5)
3 => string 'orange' (length=6)
Trier les valeurs d'un array sans perdre l'association des clés
La fonction asort permet de trier les tableaux PHP sans perdre l'association des clés / valeurs
asort( $a );
array (size=4)
5 => string 'abricot' (length=7)
0 => string 'blue' (length=4)
3 => string 'green' (length=5)
2 => string 'orange' (length=6)
Trier les clés d'un array
La fonction ksort permet de trier les clés tout en gardant l'association avec les valeurs
ksort( $a );
array (size=4)
0 => string 'blue' (length=4)
2 => string 'orange' (length=6)
3 => string 'green' (length=5)
5 => string 'abricot' (length=7)
Tri descendant
Tous les tris que nous avons étudié plus haut sont des tris ascendants. Pour avoir des tris
descendants, utilisez simplement la fonction "array_reverse" qui inverse les données.
sort( $a );
$a = array_reverse($a);
array (size=4)
0 => string 'orange' (length=6)
1 => string 'green' (length=5)
2 => string 'blue' (length=4)
3 => string 'abricot' (length=7)
<?php
$name = "olivier";
if( $name == "olivier" ){
echo "YES !";
}
?>
Dans l'exemple si dessus, $name est égal à olivier donc la condition est remplie le script
exécutera l'instruction echo
TRUE / FALSE
Pour que la condition soit rempli, la fonction IF execute les instructions à condition qu'on lui
donne une valeur qui vaut TRUE ( ou 1 ).
<?php
$name = "olivier";
$name2 = "batman";
if( 1 == 1 ) // Retourne true
if( 1 == 2 ) // Retourne false
if( $name == "olivier" ) // Retourne true
if( "olivier" == $name ) // Retourne true
if( $name == $name2 ) // Retourne false
?>
OU
Il existe une synatxe pour savoir si une variable est égal à une valeur OU à une autre.
Exemple:
<?php
if( $a == 1 || $a == 2 ){
// votre instruction
}
?>
ET
Il existe une synatxe pour savoir si une variable est égal à une valeur ET à une autre.
Exemple:
<?php
if( $a < 10 && $a > 1 ){
// votre instruction
}
?>
<?php
if( $a == 1 ){
// votre instruction
}
else if( $a > 2 && $a < 500 )
// votre instruction
}
else{
// votre instruction
}
?>
Si $a est égal à 1 alors les autres lignes seront ignorées. Sinon tant que les conditions ne sont
pas respectée le script cherchera une porte de sortie.
Autre syntaxe
Vous pouvez utiliser la syntaxe suivante pour ne pas à avoir à gérer les accolades:
<?php
if( $a > 1 ):
// votre instruction
endif;
?>
Ou celle-ci:
<?php
if( $a > 1 ):
// votre instruction
elseif( $a ==2 ):
// votre instruction
else:
// votre instruction
endif;
?>
A noter que le else est obligatoire dans ce genre de syntaxe, sinon une erreur d'interprétation
sera a chée.
w Ouvre le chier en écriture seule. Si le chier existe il est écrasé (e acé), si il n'existe
pas, PHP le crée.
w+ Ouvre le chier en lecture et écriture. Si le chier existe il est écrasé (e acé), si il n'existe
pas, PHP le crée.
<?php
$file = fopen( "fichier.txt", "r" );
$content = fgets($file, 4096);
fclose($file);
?>
La fonction fgets() récupère les 4096 premiers caractères de la première ligne de votre chier.
Pour lire tout le chier, il est nécessaire de parcourir toutes les lignes ainsi:
<?php
$file = fopen( "fichier.txt", "r" );
$content = "";
while(!feof($fp)) {
$content .= fgets($file, 4096);
}
fclose($file);
?>
Pour lire un nombre précis de lignes d'un chier vous pouvez faire une boucle manuelle :
<?php
$file = fopen( "fichier.txt", "r" );
$content = "";
for( $i = 0 ; $i < 10 ; $i++ )
$content .= fgets($file, 4096);
}
fclose($file);
?>
<?php
$lines = file("fichier.txt");
foreach($lines as $n => $line){
echo $line . "<br />";
}
?>
<?php
$file = fopen("fichier.txt", "a");
fwrite($file,"Mon texte");
fclose($file);
?>
Dans cet exemple, l'ouverture se fait avec l'argument "a", on ouvre donc le chier en écriture
et on place le curseur à la n. Si le chier n'existe, il est crée.
<?php
$folder = __DIR__ ;
if( is_dir( $folder ) && is_readable( $folder )) {
if( $folder_content = opendir( $folder )) {
while( $file = readdir( $folder_content )) {
Un formulaire permet de donner des valeurs à des cases nommées pour que le serveur
puisse associer une valeur à un nom. Exemple d'un input avec un nom "USER_NAME", il saura
que la valeur de cet input sera le nom de l'utilisateur.
Formulaire POST
Exemple de formulaire:
Résultat:
Nom
Prénom
Valider
Dans cet exemple lorsque l'on clique sur le bouton "valider", les données du formulaire sont
envoyées au serveur. Nous avons indiqué dans les propriétés du formulaire que la méthode
d'envoi était "POST". C'est donc dans la variable superglobale $_POST que nous pourrons
récupérer les informations du formulaire coté serveur.
Pour voir le contenu du formulaire qui a été envoyé vous pouvez explorer la variable $_POST
comme ceci:
<?php
var_dump( $_POST );
?>
<?php
echo $_POST["prenom"];
?>
Formulaire GET
Exemple de formulaire:
Résultat:
Nom
Prénom
Valider
Pour voir le contenu du formulaire qui a été envoyé vous pouvez explorer la variable $_GET
comme ceci:
<?php
var_dump( $_GET );
?>
<?php
echo $_GET["prenom"];
?>
Exemple:
http://www.creersonsiteweb.net?nom=olivier
<?php
echo $_GET["nom"];
?>
http://www.creersonsiteweb.net?nom=olivier&lieu=Strasbourg
<?php
echo $_GET["nom"];
echo $_GET["lieu"];
?>
UNE QUESTION SUR L'ARTICLE? (/page-question)
Les cookies font souvent peur aux utilisateurs, alors que ce ne sont que de simples chiers
texte qui retiennent des informations sans danger, comme votre nom ou les pages que vous
avez visités.
Ecrire un cookie
Syntaxe:
<?php
setcookie( nom du cookie, valeur, expire );
?>
Le premier paramètre est donc le nom du cookie. Vous pouvez lui donner le nom que vous
voulez. Puis une valeur en deuxième paramètre et sa date d'expiration en format timestamp
en troisième paramètre.
<?php
$expire = time() + 60 * 60 * 24 * 7;
setcookie( "nom", "olivier", $expire );
?>
<?php
echo $_COOKIE["nom"];
?>
Exemple:
Par exemple si on a besoin de calculer une information, on pourra la stocker dans une
varaible session pour éviter de la reclaculer à chaque chargement de page. La force de la
session est de ne pas perdre une information alors que l'utilisateur a changé de page.
<?php
$_SESSION["user_id"] = "15";
?>
IF
L'instruction if, qui est l'une des plus utilisées en programmation possède plusieurs syntaxes.
Lorsque l'on souhaite exécuter une seule instruction, on peut ne pas mettre d'accolade:
<?php
$a = 10;
if( $a > 5 )
echo $a . " est plus grand que 5 ";
?>
Au lieu de :
<?php
$a = 10;
if( $a > 5 ){
echo $a . " est plus grand que 5 ";
}
?>
Exemple if:
<?php
$a = 10;
if( $a > 5 ):
echo $a . " est plus grand que 5 ";
endif;
?>
Exemple while:
<?php
$i = 1;
while($i <= 10):
echo $i;
$i++;
endwhile;
?>
Exemple foreach:
<?php
foreach($array as $element):
echo 1;
endforeach;
?>
Condition
<?php
$a = 10;
echo ( $a > 5 ) "$a est plus grand que 5" : "$a est plus petit que 5";
?>
Equivaut à :
<?php
$a = 10;
if( $a > 5 ){
echo "$a est plus grand que 5";
}
else{
echo "$a est plus petit que 5";
}
?>
UNE QUESTION SUR L'ARTICLE? (/page-question)
preg_match
Exemple: Je veux savoir si dans la phrase "Mon nom est olivier", mon prénom apparaît.
<?php
if(preg_match("/olivier/", "Mon nom est olivier")){
echo "OUI";
}
else{
echo "NON";
}
?>
OUI
Commence par
Je peux faire des recherches plus avancées, par exemple je veux savoir si la phrase
commence par mon nom:
<?php
if(preg_match("/^olivier/", "Mon nom est olivier")){
echo "OUI";
}
else{
echo "NON";
}
?>
NON
Termine par
Ou alors est ce que la phrase termine par mon nom?
<?php
if(preg_match("/olivier$/", "Mon nom est olivier")){
echo "OUI";
}
else{
echo "NON";
}
?>
OUI
Les alphanumeriques
Est-ce que ma chaine commence par une lettre de l'alphabet?
<?php
if(preg_match("/^[a-zA-Z]/", "abc")){
echo "OUI";
}
else{
echo "NON";
}
?>
OUI
<?php
if(preg_match("/^[a-zA-Z]/", "éabc")){
echo "OUI";
}
else{
echo "NON";
}
?>
NON
<?php
if(preg_match("/^[0-9]/", "6abc")){
echo "OUI";
}
else{
echo "NON";
}
?>
OUI
<?php
if(preg_match("/^[0-9]/", "éabc")){
echo "OUI";
}
else{
echo "NON";
}
?>
NON
Les symboles ^ $ * + ? | - [] . et {}
Symbole Description
^ Commence par
$ Termine par
* Zéro ou plusieurs
+ Un ou plusieurs
? Un ou aucun
- Représente un intervalle
<?php
preg_match("/%(olivier)%/", "Mon nom est %olivier% bla bla bla .", $resultat);
var_dump( $resultat );
?>
array (size=2)
0 => string '%olivier%' (length=9)
1 => string 'olivier' (length=7)
preg_match_all
Si plusieurs résultats sont attendus, vous devez utiliser la fonction preg_match_all.
Exemple:
<?php
$data = '
<a href="/page1.php">PAGE 1</a>
<a href="/page2.php">PAGE 2</a>
<a href="/page3.php">PAGE 3</a>';
preg_match_all('/<a [^>]+>(.*)<\/a>/', $data, $names);
preg_match_all('/ href="(.*)"/', $data, $href);
var_dump( $names );
var_dump( $href );
?>
Résultat:
array (size=2)
0 =>array (size=3)
0 => string '<a href="/page1.php">PAGE 1</a>' (length=31)
1 => string '<a href="/page2.php">PAGE 2</a>' (length=31)
2 => string '<a href="/page3.php">PAGE 3</a>' (length=31)
1 => array (size=3)
0 => string 'PAGE 1' (length=6)
1 => string 'PAGE 2' (length=6)
2 => string 'PAGE 3' (length=6)
array (size=2)
0 => array (size=3)
0 => string ' href="/page1.php"' (length=18)
1 => string ' href="/page2.php"' (length=18)
2 => string ' href="/page3.php"' (length=18)
1 => array (size=3)
0 => string '/page1.php' (length=10)
1 => string '/page2.php' (length=10)
2 => string '/page3.php' (length=10)
PREG_REPLACE
On peut véri er qu'une chaine de caractère respecte un modèle mais on peut aussi
remplacer les données correspondantes par la valeur que l'on désire.
<?php
$text = preg_replace("/olivier/", "James Bond", "Mon nom est olivier");
echo $text;
?>
Résultat:
Les attributs sont les données associées à l'objet et les méthodes sont des fonctions qui sont
associées à la classe.
Les objets
Les objects sont des instanciations de classe. On parle d'ailleurs d'instances de classe. Il faut
imaginer une classe comme une sorte d'usine qui peut sortir autant de produits que l'on
désire. Ces produits sont les objets. Une classe "voiture" peut ainsi créer des voitures, qui
auront toutes des mêmes informations. Par exemple elles auront toutes un volant et 4 roues.
Mais lors de sa création, de son instanciation, on pourra par exemple changer la couleur d'un
élément. On pourra également changer le nombre de roues si besoin, mais la force de POO
c'est que par défaut, on ne se soucie pas du nombre de roues puisqu'elles sont présentes par
défaut.
Exemple PHP
En PHP on crée une classe comme ceci:
<?php
class voiture{
}
?>
<?php
$voiture = new voiture();
?>
Les attributs
Je peux donner à la classe des attributs qu'hériteront chaque instance
<?php
class voiture{
public $nb_roues = 4;
public $volant = 1;
public $prix = 5000;
?>
Résultat:
object(voiture)[1]
public 'nb_roues' => int 4
public 'volant' => int 1
public 'prix' => int 5000
<?php
var_dump( $voiture->nb_roues ); // Retournera la valeur 4
?>
Les méthodes
Les méthodes sont des fonctions propre à la classe.
Exemple:
<?php
class voiture{
public $nb_roues = 4;
public $volant = 1;
public $prix = 5000;
// retourne le prix de la voiture
public function prix_voiture(){
return $this->prix;
}
?>
Les méthodes permettent entre autre de manipuler les attributs. Il est d'ailleurs d'usage de
ne pas appeler un attribut directement mais de passer par une méthode.
Le constructeur
Le constructeur est une méthode qui est exécutée lors de l'instantiation de la classe.
<?php
class voiture{
public $nb_roues = 4;
public $volant = 1;
public $prix = 5000;
// methode constructeur
public function __construct(){
$this->prix+=150;
}
// retourne le prix de la voiture
public function prix_voiture(){
return $this->prix;
}
}
$voiture = new voiture();
print_r( $voiture->prix_voiture() ); // retourne 5150
?>
Dans l'exemple ci-dessus on remarque que le prix à été augmenté de 150 euros. Cette action
s'est déroulée dans le constructeur, qui a pour nom: __construct()
Méthodes statiques
La méthode statique est une méthode qui n'a pas besoin d'être appellée depuis un objet. Sa
syntaxe est celle ci: CLASSE::METHODE()
<?php
class voiture{
public $nb_roues = 4;
public $volant = 1;
public $prix = 5000;
// methode constructeur
public function __construct(){
$this->prix+=150;
}
// retourne le prix de la voiture
public function prix_voiture(){
return $this->prix;
}
?>
On remarque dans l'exemple ci-dessus que pour appeler une méthode statique, on appelle
directement la méthode sans instancier la classe.
getter et setter
Pour modi er une propriété on peut utiliser la syntaxe suivante:
<?php
class voiture{
public $nb_roues = 4;
public $volant = 1;
public $prix = 5000;
?>
Il n'est cependant pas conseillé d'utiliser cette syntaxe pour changer la valeur d'un attribut, il
est préférable de passer par des methodes qui feront la modi cation. On appelle ce genre de
méthode un setter ; et on récupère la valeur avec un getter.
<?php
class voiture{
public $nb_roues = 4;
public $volant = 1;
public $prix = 5000;
// Change le prix
public function setPrix( $prix ){
$this->$prix = $prix;
}
// retourne le prix
public function getPrix( $prix ){
return $this->$prix;
}
}
$voiture = new voiture();
// setter
$voiture->setPrix( 5400 );
// getter
print_r( $voiture->getPrix() ); // retourne 5400
?>
L'héritage
L'héritage en POO permet d'abstraire certaines fonctionnalités communes à plusieurs
classes, tout en permettant aux classes lles d'avoir leurs propres méthodes.
<?php
class voiture{
public $roue = 4;
}
class Renault extends voiture{
}
class Peugeot extends voiture{
public $roue = 5;
}
$peugeot = new Peugeot();
$renault = new Renault();
print_r( $peugeot->roue ); // retourne 4
print_r( $renault->roue ); // retourne 5
?>
Visibilité
La visibilité d'un attribut ou d'une méthode peut être dé nie en pre xant sa déclaration avec
un mots clé: public, protected ou private. Les éléments "public" peuvent être appelés à
n'importe quelle partie du programme. Les "protected" ne peuvent être appelés que par la
classe elle même ou les classes parents/enfants. Les "private" sont disponibles que pour la
classe en elle même.
Exemple:
<?php
class voiture{
public $roue = 4;
protected $prix = 5000;
private $nom = "Batmobile";
}
Mettre ce genre de protection permet d'indiquer au développeur qu'il doit récupérer les
valeurs des attributs en passant par des getter pour des raisons de stratégies.
Exemple:
<?php
class voiture{
public $roue = 4;
protected $prix = 5000;
private $nom = "Batmobile";
public function getPrix(){
return ( $this->prix + 100 );
}
<?php
class voiture{
public $roue = 4;
protected $prix = 5000;
private $nom = "Batmobile";
public function getPrix(){
return ( $this->calcPrix() + 100 );
}
// methode de calcule non public
protected function calcPrix(){
return ( $this->prix + 10 );
}
}
Bootstrap Twitter
Bootstrap Twitter est une collection d'outils qui facilite la création d'un site web. Ce
framework est composé entre autre de code HTML, javascript et CSS et permet donc de créer
des formulaires designés très facilement ainsi que l'implémentation d'éléments dynamiques
comme un carousel ou une modal.
Si vous une archive (extension .zip ou .tar.gz) vous a été délivrée, dézippez la dans dans votre
dossier racine de votre projet. Les dossiers css, fonts et js doivent être visibles.
Vous verrez votre site changer graphiquement sans avoir ajouté quoi que ce soit.
L'idée d'un responsive design c'est de dire que pour telle taille d'écran un élément occupe X
colonne(s).
Boostrap Devices
Bootstrap twitter prend en charge 4 types de format:
Tablette
Smartphone
Maintenant que nous avons établi la stratégie d'a chage des éléments, on peut passer au
code:
Code HTML
<div class="container">
<div class="row" style="border:1px solid #ddd;">
<div class="col-xs-12 col-sm-9 col-md-9 col-lg-7 col-lg-offset-1"
style="background-color:orange;height:200px;">Texte
</div>
<div class="col-xs-12 col-sm-3 col-md-3 col-lg-2 col-lg-offset-1"
style="background-color:green;height:200px;">Menu
</div>
</div>
</div>
Rendu
Texte
Menu
Si vous changez la taille de votre navigateur, vous verrez que le rendu ci-dessus s'adaptera à
la taille comme nous le voulions plus haut.
Explication du code
Nous avons construit deux blocs un orange et un vert. Ensuite nous avons indiqué pour
chaque taille d'écran le nombre de colonnes à occuper avec la syntaxe col-xs-*, col-sm-*, col-
md-* et col-lg-* où * est le nombre de colonnes.
col-xs- 12
col-sm- 9
col-md- 9
col-lg- 7
col-xs- 12
col-sm- 3
col-md- 3
col-lg- 2
Offset
Maintenant voyons comment nous avons géré l'espace entre les éléments pour la version LG
( Large device ). Pour consacrer un espace à une colonne il faut utiliser la propriété o set. La
logique est la même que pour indiquer la largeur d'un bloc: col-xs-o set-*, col-sm-o set-*,
col-md-o set-* et col-lg-o set-* où * est le nombre de colonnes.
col-xs-o set- 0
col-sm-o set- 0
col-md-o set- 0
col-lg-o set- 1
col-sm-o set- 0
col-md-o set- 0
col-lg-o set- 1
Il n'est cependant pas nécessaire d'indiquer les valeurs pour tous les formats d'a chage
puisque 0 est la valeur par defaut. Indiquer la valeur pour l'a chage LG est donc su sant.
Largeur boutons
Il existe di érentes tailles de bouton: xs, sm et lg.
Bouton Block
Pour créer un bouton qui s'a che en block:
Bouton Block
Bouton Block
Bouton actif
Défaut Actif
Bouton désactivé
Défaut Désactivé
Il est possible de changer la taille des boutons de ce groupement à l'aide des class btn-group-
xs, btn-group-sm et btn-group-lg :
Milieu
Bas
<div class="btn-group-vertical">
<button type="button" class="btn btn-default">Haut</button>
<button type="button" class="btn btn-default">Milieu</button>
<button type="button" class="btn btn-default">Bas</button>
</div>
<div class="btn-group">
<button type="button"
class="btn btn-primary dropdown-toggle" data-toggle="dropdown">
Action <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Nouveau</a></li>
<li><a href="#">Editer</a></li>
<li class="divider"></li>
<li><a href="#">Supprimer</a></li>
</ul>
</div>
Il est également possible de changer la taille de ce select grâce aux classes btn-xs, btn-sm et
btn-lg:
Action Action
<div class="btn-group">
<button type="button"
class="btn btn-primary btn-xs dropdown-toggle" data-toggle="dropdown">
Action <span class="caret"></span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Nouveau</a></li>
<li><a href="#">Editer</a></li>
<li class="divider"></li>
<li><a href="#">Supprimer</a></li>
</ul>
</div>
<div class="btn-group">
<button type="button" class="btn btn-danger">Action</button>
<button type="button" class="btn btn-danger dropdown-toggle" data-toggle="dropdown">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Nouveau</a></li>
<li><a href="#">Editer</a></li>
<li class="divider"></li>
<li><a href="#">Supprimer</a></li>
</ul>
</div>
<a href="#">
Messages
<span class="badge">451</span>
</a>
Les labels
Default Primary Success Info Warning Danger
Exemple:
Résultat:
Taille des images
Vous pouvez gérer la taille de cette image comme s'il s'agissait d'une police d'écriture ( font ).
Exemple:
Résultat:
Liste des glyphicons de Bootstrap Twitter
*
.glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon-
adjust align-center align-justify align-left align-right arrow-down arrow-left arrow-right arrow-up asterisk
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
🔔 🔖 💼 📅
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-glyphicon- glyphicon- glyphicon- glyphicon-
glyphicon-
adjust) align- align- align- align- arrow- arrow- arrow- arrow- asterisk)
center) justify)
.glyphicon- .glyphicon-ban- left) .glyphicon-bold
.glyphicon- .glyphicon-bell right) down)
.glyphicon- left)
.glyphicon- right) .glyphicon-
.glyphicon- up) .glyphicon-
backward circle barcode book bookmark briefcase bullhorn calendar
(/icon- (/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon- glyphicon-
📷
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
bell) bold)
backward) ban- barcode) book) bookmark) briefcase)bullhorn)calendar)
.glyphicon- circle)
.glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon-
camera certificate check chevron-down chevron-left chevron-right chevron-up circle-arrow- circle-arrow-left circle-arrow-
down right
✉ €
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
glyphicon- cog)
circle- cloud) comment) compressed)
.glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon-edit .glyphicon-eject .glyphicon- .glyphicon-euro
arrow-
credit-card cutlery cloud-
dashboard cloud-
download download-alt collapse-
earphone collapse- envelope copyright-
up) download) upload) down) (/icon- up) (/icon- mark)
(/icon-
(/icon- (/icon-.glyphicon-
(/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon- glyphicon- glyphicon-
glyphicon-cutlery) glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
edit) eject) euro)
credit- dashboard) download) download- earphone) envelope)
card)
.glyphicon- .glyphicon- alt)
.glyphicon- .glyphicon-eye- .glyphicon-eye- .glyphicon- .glyphicon-fast- .glyphicon-fast- .glyphicon-file .glyphicon-film
exclamation- expand export close open facetime-video backward forward
sign
(/icon- (/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
(/icon- glyphicon- glyphicon-
🔥
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
glyphicon- le) lm)
expand) export) eye- eye- facetime- fast- fast-
exclamation-
close) .glyphicon-
.glyphicon-filter .glyphicon-fire .glyphicon-flag .glyphicon-flash open) video) .glyphicon- backward)
.glyphicon- forward)
.glyphicon- .glyphicon- .glyphicon-
sign) floppy-disk floppy-open floppy-remove floppy-save floppy-saved folder-close
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
lter) re) ag) ash)
oppy- oppy- oppy- oppy- oppy- folder-
.glyphicon- .glyphicon-font .glyphicon- disk) .glyphicon-gift
.glyphicon- .glyphicon-gbp open) remove).glyphicon- save) saved)
.glyphicon- .glyphicon- close)
.glyphicon-
folder-open forward fullscreen glass globe hand-down hand-left
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
font) gbp) gift)
folder- forward) fullscreen) glass) globe) hand- hand-
open) .glyphicon- .glyphicon-hd- .glyphicon-hdd .glyphicon- .glyphicon- .glyphicon- .glyphicon- down)
.glyphicon- .glyphicon- left)
.glyphicon-
hand-right hand-up video header headphones heart heart-empty home import
(/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
🔒
glyphicon- glyphicon-
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
glyphicon-
hdd)
hand- hand- hd- header) headphones) heart) heart- home) import)
right) .glyphicon-
.glyphicon- up) video) empty) .glyphicon-list- .glyphicon-lock
.glyphicon- .glyphicon-info-.glyphicon-italic .glyphicon-leaf .glyphicon-link .glyphicon-list
inbox indent-left indent-right sign alt
−
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
italic) leaf) list) lock)
inbox) indent- indent- info- list-alt)
left)
.glyphicon-log- .glyphicon-log- right) .glyphicon-
.glyphicon- sign) .glyphicon- .glyphicon- .glyphicon- .glyphicon- .glyphicon-new- .glyphicon-off
in out magnet map-marker minus minus-sign move music window
(/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
📎 ✏
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
o )
log-in) log-out) magnet) map- minus) minus- move) music) new-
.glyphicon-ok .glyphicon-ok- .glyphicon-ok- marker)
.glyphicon- .glyphicon- sign)
.glyphicon- .glyphicon- .glyphicon- window)
.glyphicon- .glyphicon-
circle sign open paperclip pause pencil phone phone-alt picture
(/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
+ 📌
glyphicon- glyphicon-
glyphicon- glyphicon-
glyphicon- glyphicon-
glyphicon-
glyphicon-
glyphicon-
ok)
ok- ok-sign) open) paperclip)pause) pencil) phone) phone- picture)
circle)
.glyphicon-play .glyphicon-plus .glyphicon-print alt)
.glyphicon- .glyphicon-play- .glyphicon-plus- .glyphicon- .glyphicon- .glyphicon- .glyphicon-
plane
(/icon- circle
(/icon- sign
(/icon- pushpin qrcode question-sign random
glyphicon- glyphicon- glyphicon-
(/icon- play) (/icon- plus) (/icon- print) (/icon- (/icon- (/icon- (/icon-
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
plane)
.glyphicon- .glyphicon- play-
.glyphicon- .glyphicon- plus-
.glyphicon- .glyphicon- pushpin)
.glyphicon- qrcode)
.glyphicon- question-
.glyphicon- random)
.glyphicon-
record refresh registration- remove remove-circle remove-sign repeat resize-full resize- resize-small
circle)
mark sign) sign)
horizontal
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
road) save) send)
resize- retweet) saved) screenshot)sd- search) share)
vertical)
.glyphicon- .glyphicon- video) .glyphicon-sort-.glyphicon-sort-.glyphicon-sort-
.glyphicon- .glyphicon-sort .glyphicon-sort-.glyphicon-sort-.glyphicon-sort-
share-alt shopping-cart signal by-alphabet by-alphabet-alt by-attributes by-attributes-alt by-order by-order-alt
(/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
sort)
share- shopping-signal) sort-by- sort-by- sort-by- sort-by- sort-by- sort-by-
alt)
.glyphicon- cart)
.glyphicon- .glyphicon- .glyphicon- alphabet)
.glyphicon- alphabet-
.glyphicon-star attributes)
.glyphicon-star-attributes-
.glyphicon- order)
.glyphicon- order-
.glyphicon-
sound-5-1 sound-6-1 sound-7-1 sound-dolby sound-stereo empty stats step-backward step-forward
alt<) alt) alt)
(/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
star)
sound- sound- sound- sound- sound- star- stats) step- step-
5-1)
.glyphicon-stop 6-1) .glyphicon-tag
.glyphicon- 7-1) .glyphicon-tags
dolby) stereo) empty) .glyphicon-th backward)
.glyphicon- .glyphicon-text- .glyphicon-text- .glyphicon-th- forward)
.glyphicon-th-
subtitles tasks height width large list
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
stop) tag) tags) th)
subtitles) tasks) text- text- th-large) th-list)
.glyphicon- .glyphicon- .glyphicon-time .glyphicon-tint .glyphicon- height)
.glyphicon- width)
.glyphicon- .glyphicon-tree- .glyphicon-tree- .glyphicon-
thumbs-down thumbs-up tower transfer trash conifer deciduous unchecked
(/icon- (/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
glyphicon-
🔧
glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon- glyphicon-
time) tint)
thumbs- thumbs- tower) transfer) trash) tree- tree- unchecked)
down) up) .glyphicon-user .glyphicon- .glyphicon- .glyphicon- .glyphicon- conifer)
.glyphicon- .glyphicon-usd .glyphicon- deciduous)
.glyphicon- .glyphicon-
upload volume-down volume-off volume-up warning-sign wrench zoom-in zoom-out
(/icon- (/icon-
(/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon- (/icon-
glyphicon-
glyphicon-
glyphicon- glyphicon-
glyphicon-
glyphicon-
glyphicon-
glyphicon-
glyphicon-
glyphicon-
usd) user)
upload) volume- volume- volume- warning- wrench) zoom- zoom-
down) o ) up) sign) in) out)
UNE QUESTION SUR L'ARTICLE? (/page-question)
Exemple:
Bouton "fermer"
Félicitation! Votre compte a bien été enregistré ×
Exemple:
Ceci est un texte bla bla bla bla et ce qui suit est une tooltip ( petite bulle info qui s'a che
au-dessus du lien ) : Tooltip
<a href="#"
class="link tooltip-link"
data-toggle="tooltip"
data-original-title="Une URL est une adresse web">
Tooltip
</a>
Comme vous pouvez le constater vous devez renseigner l'attribut data-toggle et data-original-
title pour ajouter cette information dynamique. Il vous faudra également ajouter ce code
javascript:
<script>
$(function()
{
$(".tooltip-link").tooltip();
});
</script>
Page 1 de présentation
Code HTML
Code CSS
<style>
.carousel-page
{
width:100%;
height:400px;
background-color:#5f666d;
color:white;
}
</style>
Lancer la modal
Code
<!-- Bouton execution modal -->
<button class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Lancer la modal
</button>
Wrap Bootstrap
Les possibilités de design avec bootstrap twitter sont in ni. Si
vous avez besoin de supports pour vos inspirations ou si vous
voulez acheter un thème pour votre site pour quelques euros, je
vous conseille ce site : Bootstrap Wrap (http://wrapbootstrap.com)
Bootswatch
Un autre site dans le même genre propose des thèmes gratuit :
Bootswatch (http://bootswatch.com)
Bootsnipp
Bootsnipp est un site qui vous propose des éléments de code
designé. Exemple: menu, espace login, che présentation
utilisateur, demande de carte de crédit, etc. Très e cace
comme site: Bootsnipp (http://bootsnipp.com/)
Icones dynamiques
Avec Font awesome vous pouvez rendre vos icones dynamiques:
Exemple:
Code:
normal
fa-rotate-90
fa-rotate-180
fa-rotate-270
fa- ip-horizontal
icon- ip-vertical
Code:
Encadrement icones
Il est possible d'ajouter divers encadrements aux icones:
Exemple:
Code:
javascript
Crée en 1995, javascript est un language de programmation qui est utilisé le plus souvent
pour des pages web. La plupart du temps javascript sert à contrôler les données saisies dans
les formulaires HTML et à interagir avec le document via l'interface DOM fourni par la
navigateur.
Contrairement à des languages serveur comme PHP, le code javascript est lisible par
l'utilisateur. Il est donc déconseillé de coder avec des notions / mots clé con dentiels.
La balise <script>
La balise <script> permet d'insérer du javascript qui s'execute coté client. Pour intégrer du
code javascript à vos page web, vous pouvez soit le mettre dans un chier externe avec une
extension .js soit l'écrire directement dans la page web.
Les commentaires
Pour écrire un commentaire dans votre code, c'est à dire du texte qui ne sera pas interprété
mais juste lisible pour le programmeur:
<script type="text/javascript">
/* Ceci est un commentaire */
</script>
<script type="text/javascript">
var nom = 'olivier';
</script>
Les alertes
Vous pouvez utiliser des commandes qui controleront votre navigateur.
Le plus connu est l'alerte navigateur :
<script type="text/javascript">
alert("Bonjour");
</script>
<script type="text/javascript">
console.log( "variable: ", "val 1" );
console.log( "tableau: ", new Array("val 1", "val 2") );
console.log( "objet:", { nom : "engel", "prenom" : "olivier" } );
function test(){ alert( "ok" ); }
console.log( "fonction:", test );
</script>
Les prompt
Vous pouvez récupérer une entrée utilisateur à l'aide de la commande prompt:
<script type="text/javascript">
var nom = window.prompt( "Quel est votre nom?" );
alert( nom );
</script>
Exemple prompt
Les operateurs
Les opérateurs de calcul en javascript:
<script type="text/javascript">
var r = 1 + 1; /* 2 */
var r = 1 * 1; /* 1 */
var r = 1 - 1; /* 0 */
var r = 1 / 1; /* 1 */
</script>
<script type="text/javascript">
var r = 2;
var r+= 1; /* 2+1 = 3 */
var r-= 1; /* 2-1 = 1 */
var r*= 1; /* 2*1 = 2 */
var r/= 1; /* 2/1 = 2 */
</script>
<script type="text/javascript">
var r = 100;
r++; /* 101 */
r--: /* 100 */
</script>
<script type="text/javascript">
var x = 500;
x == 500; /* egal a = retourne TRUE */
x != 501; /* different de = retourne TRUE */
x > 501; /* supperieur a = retourne FALSE */
x < 501; /* inferieur a = retourne TRUE */
x >= 501; /* superieur ou egal a = retourne FALSE */
x <= 501; /* inferieur ou egal a = retourne TRUE */
</script>
<script type="text/javascript">
var x = TRUE;
var y = FALSE;
( x || z ) /* TRUE */
</script>
Le code ci-dessus véri e si l'une des deux valeurs remplit la condition TRUE. L'opérateur "ET":
<script type="text/javascript">
var x = TRUE;
var y = FALSE;
( x && z ) /* FALSE */
</script>
La concaténation
En javascript pour concaténer deux valeurs, il faut s'assurer que les variables ne sont pas
toutes les deux de type numérique. Si c'est le cas, on ajoute une valeur de type string.
<script type="text/javascript">
var a = 15;
var b = 30;
var c = a + b; /* 45 */
var d = a + "" + b; /* 1530 */
</script>
Les tableaux
<script type="text/javascript">
var a = new Array();
a[0] = "Valeur 1";
a[1] = "Valeur 2";
/* Autre syntaxe */
var b = [];
b[0] = 1;
/* Autre syntaxe */
var b = [];
b.push( 1 );
</script>
<script type="text/javascript">
var a = new Array();
a[0] = "Valeur 1";
a[1] = "Valeur 2";
for( i in a ){
alert( a [i] );
}
</script>
Le tableau en javascript est un objet, vous pouvez donc appeler des méthodes qui
permettront de le manipuler:
t.join Retourne un chaine de caractère contenant tous les éléments d'un tableau
Les objets
Les attributs :
<script type="text/javascript">
function Voiture(){
this.roues = 4;
}
var ma_voiture = new Voiture();
alert( ma_voiture.roues ); /* Retournera 4 */
var ma_voiture = new Voiture();
ma_voiture.roues = 6;
alert( ma_voiture.roues ); /* Retournera 6 */
</script>
Les méthodes :
<script type="text/javascript">
function Voiture(){
this.roues = 4;
this.getRoues = function(){
alert( this.roues );
}
}
var ma_voiture = new Voiture();
ma_voiture.getRoues(); /* Rtournera 5 */
</script>
JSON
Il est possible de stocker des informations structurées dans un format nommé JSON.
Exemple:
<script type="text/javascript">
var data = {};
data.prenom = "olivier";
data.nom = "engel";
console.log( data );
/* Object {prenom: "olivier", nom: "engel"} */
</script>
JQuery sélecteurs
Le selecteur jQuery (/page-apprendre-jquery) a pour syntaxe: $().
$('a[href!="#"]') Les éléments <a> n'ayant pas valeur # dans l'attribut href
$('a[href^="#"]') Les éléments <a> ayant une valeur qui commence par #
$('a[href$="#"]') Les éléments <a> ayant une valeur qui se termine par #
Exemple:
<script type="text/javascript">
alert( $("#main").html() );
/* Retourne Bonjour je suis <b>batman</b> */
alert( $("#main").text() );
/* Retourne Bonjour je suis batman */
</script>
Remplacer le contenu
Pour remplir un élément, il faut utiliser la méthode .html()
<script type="text/javascript">
$("#main").html("Il était une fois ");
</script>
Résultat:
<div id="main">Il était une fois</div>
Ajouter du contenu
Il est possible d'ajouter du contenu à un élément grâce à la méthode .append()
<script type="text/javascript">
$("#main").append(" un enfant qui aimait le chocolat");
</script>
Résultat:
<script type="text/javascript">
$( " un enfant qui aimait le chocolat" ).appendTo( "#main" );
</script>
Résultat:
<script type="text/javascript">
$("#main").prepend("un enfant qui aimait le chocolat ");
</script>
Résultat:
<script type="text/javascript">
$("un enfant qui aimait le chocolat ").prependTo("#main");
</script>
Résultat:
Supprimer un élément
<script type="text/javascript">
/* Supprime toutes les balises <li> du document */
$("li").remove();
</script>
Vider un élément
<script type="text/javascript">
/* Vide toutes les balises <li> du document */
$("li").empty();
</script>
Remplacer un élément
<script type="text/javascript">
/* Remplace les balises <li> par <a>Lien</a> */
$("li").replaceWith( $("<a>Lien</a>") );
</script>
Envelopper un élément
<script type="text/javascript">
/* Envelopper les balises <a> par des balises <li> */
$("menu a").replaceWith( $("<li />") );
</script>
Syntaxe évènement
$(<element>).<event>(<function>);
Exemple :
<script>
funtion alert_me(){
alert( $(this).val() );
}
</script>
<select id="users">
<option value="1">Olivier</option>
<option value="2">Batman</option>
</select>
<input id="user_perso" type="text" value="Spiderman" />
<script>
$("#user").change(alert_me);
$("#user_perso").keyup(alert_me);
</script>
Résultat :
Olivier Spiderman
jQuery Ajax
Ajax c'est quoi
L'Ajax ('Asynchronous JavaScript and XML) est une combinaison de plusieurs technologies qui
permet de récupérer des données sans à avoir à recharger la page.
L'exemple le plus parlant est Google Map. Vous pouvez scroller le monde entier sans
recharger la page. En fait à chaque action de scrolling, la page demande aux serveurs de
Google de lui retourner les informations de cartographie sur les coordonnées vu par
l'utilisateur, ainsi on utilise que les ressources nécessaires. Sans l'ajax, il aurait fallu recharger
la page à chaque changement de coordonnées, ou alors précharger toutes les données de la
Terre entière, mais évidemment ca ne serait pas possible.
Utiliser Ajax
JQuery simpli e l'utilisation d'Ajax.
<script>
$.ajax(<param>);
</script>
async Par defaut toutes les requetes sont asynchrones ( true par defaut )
cache Par défaut: true, false pour le dataType 'script' and 'jsonp'
dataType Par defaut: Intelligent Guess sinon (xml, json, script, or html)
password Si besoin d'un mot de passe pour l'authenti cation HTTP access
Exemple:
<script>
$.ajax({
url : "script.php",
data : { "action" : "delete_page" },
complete: function(){
alert("Félicitation page supprimée!");
},
error: function(){
alert("Erreur!");
}
});
</script>
$(input).datepicker();
Créer son propre plugin jquery permettrait de donner une spéci cité aux éléments avec la
syntaxe suivante :
$(element).monplugin();
(function($) {
$.fn.cssw_datepicker = function(params) {
$(this).css({ 'background-color': params.color }).val( params.input_value );
};
})(jQuery);
Résultat :
Plugin Correct
Les instructions SQL sont très simples à apprendre puisqu'elles ressemblent énormément
aux phrases ordinaires de l'anglais. Si vous comprenez l'anglais, vous avez déjà compris SQL.
Il existe des logiciels graphiques, comme Phpmyadmin, qui permettent de réaliser des actions
SQL sans écrire la moindre ligne SQL.
CRUD MySQL
En informatique on appelle CRUD ( Create, Read, Update, Delete ) désigne les 4 opérations de
base d'un logiciel. Le terme est un clin d'oeil au mot "crude" qui signi que justement
"rudimentaire".
Entrez cette requete dans la console MySQL et validez en apppuyant sur la touche "entrée" :
Create: Créer une table de données
La table est une composante de la base de données. Nous allons mainteant créer la table
"visiteurs" qui stockera des informations sur les visiteurs.
Pour cela vous devez avant toute chose dire au module que vous allez travailler sur le base de
données "monsiteweb" :
USE monsiteweb;
Puis :
Dans notre cas, nous avons choisi de créer une tableau avec deux colonnes, la première
enregistrant des données qui auront le format d'une adresse IP, c'est à dire : XXX.XXX.XXX.XXX
où X est un chi re. Dans ce cas la, il y aura des chi res et des points, il s'agit donc d'un format
alphanumérique ; nous l'indiquons grâce au type VARCHAR(255) 255 étant le nombre de
caractères que l'on peut enregistrer au maximum pour une entrée.
La deuxième colonne est un format DATETIME, c'est à dire qu'il stockera une date dans un
format dé ni par MySQL.
SHOW TABLES;
et voir le contenu d'une table à l'aide de la commande DESCRIBE :
DESCRIBE visiteur;
On remarque que MySQL nous retourne un tableau à double entrée avec le nom des
colonnes qui compose la table et leur type de données.
INSERT INTO
visiteurs
SET
date = NOW(),
adresse_ip = "10.2.12.15";
On remarque que pour indiquer la date et l'heure à mysql il su t d'appeler une fonction:
NOW().
Ensuite exécutons la requete SELECT pour voir si notre demande de modi cation a réussi:
Supprimer une entrée
On utilise la commande "DELETE" pour supprimer une entrée:
SQL CREATE
CREATE Database
Une base de données est un conteneur composé de tables de données. Pour créer une base
de données sur MySQL, vous pouvez utiliser la commande suivante:
Pour voir les tables d'une base de données vous pouvez utiliser la commande :
SHOW TABLES;
USE monsiteweb;
CREATE Table
Une table est une composante d'une base de données. Si une base de données était une
armoire, une table de données serait un tiroire. Bien construire une table de données est
primordial pour la rapidité de votre logiciel / site web ainsi que pour la cohérence des
données.
Il est nécessaire d'indiquer un type pour chaque colonne qui compose le tableau.
TINYINT[(nbr de caractères)]
SMALLINT[(nbr de caractères)]
MEDIUMINT[(nbr de caractères)]
INT[(length)]
INTEGER[(nbr de caractères)]
BIGINT[(nbr de caractères)]
REAL[(nbr de caractères,décimales)]
DOUBLE[(nbr de caractères,décimales)]
FLOAT[(nbr de caractères,décimales)]
DECIMAL(nbr de caractères,décimales)
NUMERIC(nbr de caractères,décimales)
DATE
TIME
TIMESTAMP
DATETIME
VARCHAR(nbr de caractères)
TINYBLOB
BLOB
MEDIUMBLOB
LONGBLOB
TINYTEXT
TEXT
MEDIUMTEXT
LONGTEXT
ENUM(valeur1,valeur2,valeur3,...)
SET(valeur1,valeur2,valeur3,...)
Syntaxe
La clé primaire est un index unique qui permet d'identi er une ligne. Cette valeur, souvent un
identi ant numérique que l'on nomme "id" n'est pas voué à changer et permet de lier les
tables entres elles.
SQL INSERT
La commande INSERT INTO permet d'insérer une donnée dans une table.
Insérer une ligne de données
Il existe plusieurs syntaxes pour e ectuer cette action:
La plus utilisée étant:
INSERT INTO
visiteurs (date, adresse_ip)
VALUES
( NOW(), "10.2.2.2" );
L'ordre des colonnes n'a pas d'importance du moment que les données qui suivent
respectent l'association COLONNE/DONNEES.
INSERT INTO
visiteurs
SET
date = NOW(),
adresse_ip = "10.2.2.2";
Exemple:
INSERT INTO
visiteurs ( date, adresse_ip )
SELECT
date, adresse_ip
FROM
visiteurs_temp;
REPLACE INTO
REPLACE INTO fonctionne exactement comme INSERT INTO, à l'exception que si on insère
une donnée où la clé primaire existe déjà, l'ancienne donnée est supprimée puis remplacée
par la nouvelle. Exemple:
REPLACE INTO
visiteurs ( date, adresse_ip )
SELECT
date, adresse_ip
FROM
visiteurs_temp;
SQL SELECT
Les requetes SELECT en MySQL
La commande SELECT est la plus importante à comprendre en MySQL. Maitriser cette
commande vous permettra d'établir des statistiques, sortir la valeur précise d'un chi re
d'a aire, trouver un item précis et pertinant, bref c'est la pierre angulaire de tout votre
logiciel /site web.
Table d'exemple
Nous utiliserons les données suivantes pour les exemples:
Les opérations
SELECT 1 + 2;
-> 3
SELECT 1 * 2;
-> 2
SELECT 1 / 2;
-> 0.5
SELECT 1 - 2;
-> -1
SELECT LOWER("Test");
-> "test"
SELECT UPPER("test");
-> "TEST"
SELECT REVERSE("olivier");
-> "reivilo"
SELECT NOW();
-> 2014-01-05 23:45:01
Ajouter 1 Heure
Supprimer 1 Heure
Le SELECT simple
La requete suivante a chera le tableau dans sa globalité:
COUNT
Il est possible de compter le nombre d'items d'une sélection.
MAX
La fonction MAX retourne la plus grande valeur de la sélection.
MIN
La fonction MIN retourne la plus petite valeur de la sélection.
La somme de (3+4+5) = 12
AVG
AVG ( pour average ) permet de calculer une moyenne sur une selection
La moyenne de (1+2+3+4+5) / 5 = 3
Table d'exemple
Nous utiliserons les données suivantes pour les exemples:
Truncate
On utilise la commande "TRUNCATE" pour vider une table:
DROP
On utilise la commande "DROP" pour supprimer une table:
PHPMYADMIN SQL
Lancer PHPMYADMIN
Pour lancer PHPMYADMIN, cliquez sur l'icone WampServer puis sélectionnez phpMyAdmin
Le navigateur s'ouvre :
Créer une nouvelle table
Pour créer une nouvelle table indiquer un nom dans le champs "Nouvelle table" puis le
nombre de colonnes désirés en en n cliquez sur "exécuter".
Vous pouvez entrer les types des colonnes puis validez en cliquant sur "Sauvegarder".
La table users
Jointure interne
Nous allons regrouper toutes les informations de ces deux tables en une seule table. Le but
recherché de cet exemple et de pouvoir dire quel nom est associé à l'adresse IP. Requete SQL
qui fait la jointure:
Résultat :
La première chose que l'on remarque c'est qu'il n'y a que 4 lignes alors que la table "visiteurs"
en a 9. SQL n'a pas trouvé une jointure possible avec les lignes 5,6,7,8 et 9 de la table
visiteurs, puisque l'adresse IP n'est pas présente dans la table users.
Cette jointure est donc la plus simple qui existe en SQL, et elle ignore les ligne qui ne peuvent
avoir de jointures.
SELECT
*
FROM
visiteurs a
INNER JOIN
users b ON a.adresse_ip = b.adresse_ip;
Le résultat de cette jointure est évidemment le même que l'exemple plus haut.
A noter aussi que le mot INNER est facultatif.
SELECT
*
FROM
visiteurs a
JOIN
users b ON a.adresse_ip = b.adresse_ip;
SELECT
*
FROM
visiteurs a
JOIN
users b ON a.adresse_ip = b.adresse_ip
WHERE
a.date > "2013-01-01 00:00:00";
Résultat:
Les jointures externes
Sur MySQL , il existe 2 jointures externes possibles : LEFT JOIN et RIGHT JOIN.
Dans l'exemple de jointure interne exmpliqué plus haut, nous avons remarqué qu'il y avait 4
lignes alors que la table "visiteurs" possédait 5 entrées.
La jointure externe permet de récupérer cette ligne, même si elle n'est associée à rien.
LEFT JOIN
Requete SQL de jointure LEFT JOIN:
SELECT
*
FROM
visiteurs a
LEFT JOIN
users b ON a.adresse_ip = b.adresse_ip;
On remarque que la jointure se fait à partir de la table de gauche ( d'où le terme LEFT JOIN )
et on ajoute, sans perdre d'informatio de la table initiales les jointures de la table suivante.
RIGHT JOIN
A l'opposé RIGHT JOIN établit une jointure en partant de la table de droite.
SELECT
*
FROM
visiteurs a
RIGHT JOIN
users b ON a.adresse_ip = b.adresse_ip;
SELECT
*
FROM
visiteurs a
LEFT JOIN
users b ON a.adresse_ip = b.adresse_ip AND a.xxx = b.yyy;
SELECT
*
FROM
<table> a
LEFT JOIN
<table> b ON a.<colonne> = b.<colonne>
LEFT JOIN
<table> c ON b.<colonne> = b.<colonne>;
Activer PDO
Pour activer PDO assurez-vous que la ligne suivante est décommentée dans le chier php.ini
extension=php_pdo_mysql.dll
<?php
define("PDO_HOST", "localhost");
define("PDO_DBBASE", "monsiteweb");
define("PDO_USER", "root");
define("PDO_PW", "");
try{
$connection = new PDO(
"mysql:host=" . PDO_HOST . ";".
"dbname=" . PDO_DBBASE, PDO_USER, PDO_PW,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") );
}
catch (PDOException $e){
print "Erreur !: " . $e->getMessage() . "<br/>";
die();
}
?>
<?php
$query = " UPDATE visiteurs SET date = "";
$r = $connection->query( $query );
?>
QUOTE / sécurité
La méthode Quote permet de sécuriser vos requêtes. En e et, il ne faut jamais faire con ance
aux données qu'envoit l'utilisateur, utiliser la méthode "quote" permet de sécuriser les
données e cacement.
Exemple:
<?php
$query = " UPDATE visiteurs SET date = " . $connection->quote( $data ) . ";
$r = $connection->query( $query );
?>
<?php
$query = " INSERT INTO visiteurs SET date = NOW(), nom = ?, adresse_ip = ? ;
$data = array( "OLIVIER", "145.50.10.2" );
$sth = $connection->prepare( $query );
$sth->execute( $data );
?>
SELECT
Exemple de code pour exécuter une requète et recevoir le résultat dans un tableau.
<?php
$query = "SELECT * FROM visiteurs;";
$r = $connection->query( $query )->fetchAll(PDO::FETCH_ASSOC);
var_dump( $r );
?>
UNE QUESTION SUR L'ARTICLE? (/page-question)
Google
En 2013 en France Google représente 90% des recherches sur internet. Optimiser son site
pour le référencement revient à dire aujourd'hui optimiser son site pour Google.
Le problème du référencement c'est que personne ne sait quoi faire. Les professionnels du
référencement connaissent peut être les pièges à éviter ou les astuces pour gagner des
places au classement des recherches, mais ils ne connaissent pas les algorithmes de Google
donc ils ne font que des suppositions avec leurs expériences. J'ai déjà lu à un endroit des
conseils d'experts et vu le conseil opposé ailleurs.
Google communique souvent sur les bonnes pratiques, leur stratégie est de dire que si votre
site est intéressant et bien construit il sera bien référencé. Cool, cela simpli e énormément
les connaissances en référencement !
Le référencement payant
Si vous avez un budget vous pouvez acheter du tra c. Cette solution se trouve toujours du
côté de chez Google - son service Adwords - qui permet de faire des enchères sur des mots
clés concernant votre activité. Vous payez la somme que vous voulez au clic. Plus votre
enchère est élévée, plus votre annonce sera visible.
Encodage
Encodage c'est quoi?
L'encodage est un jeu de caractères. Si deux documents s'échangent des données dans un
encodage di érent, il se peut que des caractères incorrectes s'a chent. Les plus utilisés en
France sont l'encodage ISO-8859-1, ISO-8859-15 et UTF8.
UTF8
En 2013, plus de 75% des sites internet utilisent l'encodage utf8, par expérience, je peux vous
conseiller de ne travailler qu'avec cet encodage.
AddDefaultCharset UTF-8
[mysqld]
#Set the default character set
default-character-set=utf8
#Set the default collation
default-collation=utf8_general_ci
Ajax
Il faut savoir que tous les retours ajax sont envoyés en UTF-8, si votre page est encodée dans
un autre jeu de caractères vous devez soit changer l'encodage du script, soit indiquer un
autre encodage en PHP, soit utiliser une fonction de traduction comme
Le problème de cette technique, c'est par exemple le caractère € qui n'est pas reconnu.
4 2 1 4 2 1 4 2 1
Les droits sont dé nit sur un nombre à 3 chi res. Le premier indique les droits du
propriétaire du chier, donc celui qui l'a crée, le deuxieme chi re indique les droits du groupe
associé au chier et le dernier indique le droits de tous les autres utilisateurs.
Le concept est de pouvoir additionner les droits. Le droit le plus élévé étant 7 puisque 4 + 2 +
1.
Il est évidemment déconseillé de changer les droits propriétaire au risque de nos plus pouvoir les
modi er par la suite!
htaccess
Le chier .htaccess est un chier de con guration du serveur Apache qui permet de dé nir les
règles dans un dossier ou sous-dossier. Il permet notamment de dé nir une interdiction
d'accès à un dossier ou le protéger par un mot de passe, mais permet aussi de dé nir des
règles de redirections, etc.
login:mot_de_passe_crypté
Pour crypter un mot de passe vous pouvez utiliser la fonction crypte de PHP :
<Files *.png>
Order Deny, Allow
Deny from .nomdomaine.com
</Files>
Exemple:
http://creersonsiteweb.net?PHPSESSID=hh40154z6e5f4ze6a0a0a0
ce qui ajoute un lien di érent en plus dans son index, et donc divise la popularité d'une page (
la duplication de données n'est jamais bonne pour le référencement de votre site web ) .
Pour éviter ce problème vous pouvez ajouter cette ligne dans votre .htaccess
php_flag session.use_trans_sid off
php_flag session.use_only_cookies on
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} PHPSESSID=.*$
RewriteRule .* %{REQUEST_URI}? [R=301,L]
</IfModule>
SetEnv SESSION_USE_TRANS_SID 0
URL REWRITING
L'URL rewriting ( ou rééciture d'URL à la volée ) est une technologie très intéressante qui
permet d'améliorer son référencement, simpli e la navigation des utilisateurs, permet une
plus grande évolutivité de votre site web et assure des rediections complexes, grâce aux
expressions régulières.
creersonsiteweb.net/lesujetdevotrepage-1/message-explicatif-12
On remarque donc que les caractères super us ont été supprimés, on peut mettre également
un descriptif directement dans l'URL et ceci améliore la compréhension du contenu de la
page pour les moteurs de recerche mais également pour l'oeil humain qui sait de quoi traite
la page sans la visiter.
Créer ensuite le chier .htaccess à la racine de votre site et indiquer le code suivant:
Options +FollowSymlinks
RewriteEngine On
Exemple de redirection
Nous souhaitons que l'adresse "test-bla-bla-bla" soit redirigé vers exemple.html :
Options +FollowSymlinks
RewriteEngine On
RewriteRule ^test-bla-bla-bla$ exemple.html [L]
Initiation HTML
Un site web c'est quoi? (/page-initiation-un-site-web-c- HTML c'est quoi? (/page-apprendre-html)
est-quoi)
Créer une page web (/page-html-creer-une-page-web)
Dév. back-end / front-end (/page-initiation-developpeur-
Les balises (/page-html-balises)
front-end-back-end-di erences-formation-apprendre-c-
est-quoi) Les attributs (/page-html-attributs)
Que dois-je maîtriser ? (/page-initiation-que-dois-je- Les tableaux (/page-html-tableaux)
maitriser)
Les listes (/page-html-liste-ul-ol-li)
Design /ergonomie web (/page-initiation-design-
ergonomie-web) Les images (/page-html-images)
Navigateur Chrome (/page-initiation-navigateur-google- Les liens (/page-html-liens)
chrome) Les inputs (/page-html-input)
L'éditeur de texte (/page-initiation-editeur-texte)
Les formulaires (/page-html-formulaire)
Installer serveur web (/page-initiation-installer-serveur-
Caractères spéciaux (/page-html-caracteres-speciaux)
web)
La grille (/page-bootstrap-grille)
Syntaxe alternative (/page-php-syntaxe-alternative)
Les boutons (/page-bootstrap-boutons)
Ecrire/Lire un chier (/page-php-lire-et-ecrire-un- chier)
Badges et Labels (/page-bootstrap-badges-labels)
Expressions régulières (/page-php-expressions-
Images / Glyphicon (/page-bootstrap-images)
regulieres-regex)
Les alertes (/page-bootstrap-alert)
POO (/page-php-programmation-orientee-objet)
Responsive tables (/page-bootstrap-tableau-table-
PDO (/page-mysql-php-pdo)
responsive-design)
JSON (/page-php-json-encode-decode)
Tooltip (/page-bootstrap-tooltip-info-bulles)
XML (/page-apprendre-xml)
Carousel (/page-bootstrap-carousel)
Import / Export CSV (/page-php-import-export-csv)
Fenêtre dynamique (/page-bootstrap-modal-fenetre-
Envoyer un mail (/page-php-send-envoyer-mail-email) dynamique)
TWIG (/page-symfony-twig-framework-template-html-
apprendre-framework)
Assetic (/page-symfony-assetic-framework-php)
AngularJS (/page-symfony-angular-angularjs-js-
framework-apprendre)
Formulaires (/page-symfony-form-formulaire-creer-
Optimiser
apprendre-html-php-framework)
SécuritéHTTP
En-tête (/page-symfony-security-securite-securiser-role-
/ Cache (/page-cache-en-tetes-http- Linux c'est quoi? (/page-apprendre-linux)
admin-user-annotations-yml-framework-php)
modi er)
Emuler Linux (/page-linux-emulation-virtualbox-
Services
SEO (/page-symfony-services-service-framework-
Référencement (/page-seo-referencer-son-site- machine-virtuelle-ubuntu)
php)
internet)
Installer Linux Ubuntu (/page-linux-installer-ubuntu)
API REST (/page-symfony-api-rest-framework-php)
Encodage (/page-encodage)
Les commandes linux (/page-linux-commandes-ubuntu)
Sécuriser son site (/page-securiser-son-site) Les droits utilisateurs (/page-linux-gestion-des-droits-
ubuntu-chmod)
.htaccess (/page-htaccess)
Con gurer Ubuntu (/page-linux-con gurer-votre-
URL Rewriting (/page-url-rewriting)
ubuntu)
Sass Compass (/page-sass-compass-css-installer-
Installer Apache MySQL PHP (/page-linux-installer-
comprendre-apprendre)
serveur-web-php-mysql-apache)
Co eeScript (/page-co eescript-co ee-script-javascript-
Installer Nginx + PHP5 FPM (/page-linux-nginx-php5-
compiler-pretty-printed-ruby)
fpm-debian-ubuntu)
Grunt (/page-grunt-minimi er-optimiser-compiler-
Con gurer VHost (/page-linux-con gurer-virtual-host-
compresser-images-tests-unitaires-synatxe-veri er-css-
vhost-apache)
js-concatener)
Installer serveur SMTP (/page-linux-installer-smtp-
Sitemap.xml (/page-sitemap-xml)
ssmtp-serveur-server)
Convertir images (/page-jpg-to-png-convertir-image-
Capture écran / gif (/page-linux-capture-ecran-video-gif-
format-changer-ligne-commande-ubuntu-linux)
ash ubuntu)
Liens
Apprendre HTML (/page-apprendre-html)
Apprendre CSS (/page-apprendre-css)
Apprendre PHP (/page-apprendre-php)
Apprendre JQUERY (/page-apprendre-jquery)
Apprendre MySQL (/page-apprendre-mysql)
Apprendre XML (/page-apprendre-xml)
Partenaires
Devenir partenaire
Apprendre python (https://python-django.dev)
CSSW
Contact
Poser une question (/page-question)