php - Université Paris 13

Transcription

php - Université Paris 13
Introduction Web
1ère année, cours - 3/5
Marcel Bosc
2011-2012
Département informatique
IUT de Villetaneuse
Université Paris-13
table des matières
contenu dynamique
introduction au PHP
interaction et formulaires
1ère partie
contenu dynamique
page html statique
musique.org
client
navigateur
http://musique.org/essai.html
1
2 serveur web
affichage
4
essai.html
3
essai.html
fichier
fichier
internet
très simplifié...
html généré par le serveur
client
navigateur
rechercher
"concerts lundi"
1
musique.org
serveur web
2
logiciel
affichage
4
génère html
6
3
montrant les résultats
de recherche
5
html
base de
données
internet
très simplifié...
html généré par le serveur
musique.org
rechercher
http://musique.org/search.php
1
serveur web
search.php
2
utiliser interpréteur PHP
interpréteur PHP
internet
5
html
html début page
connexion à la BDD
recherche -> requête SQL
pour chaque résultat
4 générer html avec liens
html fin page
3
base de
données
langages web - coté serveur
PHP
Java / JSP
CGI - C, C++ ...
Perl, Python, Ruby ...
ASP
exemple PHP
<?php
echo '<body>';
echo '<h1>Bonjour!</h1>';
echo '</body>';
?>
exemple Java (simplifié)
public class HelloServlet extends GenericServlet
{
public void service ( ServletRequest request,
ServletResponse response)
{
PrintWriter out = response.getWriter();
out.println ("<body>");
out.println ("<h1>Bonjour!</h1>");
out.println ("</body>");
}}}
configuration à l'IUT
client
votre poste de TP
navigateur
intranet
http://aquanux/~10612/essai.php
1
affichage
6
~/public_html/essai.php
aquanux
serveur web
2
apache
4
5
html
PHP
essai.php
3
essai.php
serveur de
fichiers
très simplifié...
2ème partie
introduction au PHP
manuel du PHP : http://fr.php.net/manual/fr
html généré, PHP
mon-site.org
essai
http://mon-site.org/essai.php
1
serveur web
essai.php
2
utiliser interpréteur PHP
interpréteur PHP
début
début du
du
code
code PHP
PHP
internet
4
html
3
bonjour1
bonjour2
fin
fin du
du
code
code PHP
PHP
<?php
echo 'bonjour1';
echo 'bonjour2';
?>
l'affichage est envoyé
vers le client
PHP et HTML
requête:
http://mon-site.org/essai.php
essai.php (fichier sur le serveur)
HTML
PHP
HTML
<h1>Mon article</h1>
<p>Un peu de texte.</p>
<p>article a été consulté
<?php
$nbLecture=calculer();
echo $nbLecture;
?>
fois</p>
<h1>Mon article</h1>
<p>Un peu de texte.</p>
<p>article a été consul
123
fois</p>
simplifié
début
début du
du
code
code PHP
PHP
<?php
... ?>
fin
fin du
du
code
code PHP
PHP
PHP et HTML
exemple1.php
<p>vous avez marqué <?php echo $score; ?> points</p>
HTML généré
<p>vous avez marqué 50 points</p>
exemple2.php
<?php
echo "<p>vous avez marqué" ;
echo $score ;
echo " points</p>";
?P>
variables et types
// pas de déclaration
$maVariable = 123;
echo $maVariable;
PHP
Java
// déclaration
int a ;
// affectation
a=1 ;
// utilisation
// pas de déclaration
System.out.println(a);
echo $a;
// affectation
$a=1 ;
// utilisation
variables non déclarées, types gérés automatiquement!
Java
int
variables et types
v = 123;
// entier
boolean w = false;
// booléen
float
x = 3.14159;
// flottant
String
y = "bonjour";
// chaîne
PHP
$v = 123;
// entier
$w = false;
// booléen
$x = 3.14159;
// flottant
$y = "bonjour";
// chaîne
chaînes de caractères
Guillemets
Guillemets simples
simples
echo 'une chaîne';
Guillemets
Guillemets doubles
doubles
echo "une chaîne";
echo '<a href="page.html">';
echo "L'utilisateur Toto a 20 ans";
choisir le plus pratique!
concaténation : « . »
Java
System.out.println("une" + "chaîne");
String nom="Toto";
System.out.println("je suis" + nom);
PHP
echo 'une '.'chaîne';
$nom='Toto';
echo 'je suis '.$nom;
chaînes et variables
Guillemets simples
ou doubles
$nom = 'Durand';
echo "je suis $nom";
je suis Durand
echo 'je suis $nom';
je suis $nom
$nom='Toto';
$age=20;
echo "L'utilisateur $nom a $age ans";
echo 'L\'utilisateur '.$nom.' a '.$age.' ans';
concaténation
boucles
boucle classique
for($i=0; $i<10;$i++)
{
echo "<li>ligne numéro $i</li>";
}
Peu utilisé!
En pratique on parcourt
des tableaux
fonctions
définition:
function ma_fonction($nom)
{
echo "je suis $nom";
}
appel:
ma_fonction("Dupond");
Java
fonctions
class Essai
{
void exemple(String nom)
{
System.out.println("je suis " + nom);
}
public static void main(String[] args)
{
this.exemple("Dupond");
}
}
PHP
function ma_fonction($nom)
{
echo "je suis $nom";
}
ma_fonction("Dupond");
tableaux indexés
String[] t = new String[100] ;
t[0]= "Paris";
t[1]= "Dijon";
Java
pas
pas de
de déclaration
déclaration
$t[0] = "Paris";
$t[1] = "Dijon";
PHP
String[] t = {"Paris", "Dijon"};
System.out.println(t[1]);
Java
$t = array("Paris", "Dijon");
echo $t[1];
élément
élément
élément 00
élément 11
PHP
tableaux indexés
PHP Java
ajouter des éléments
$villes[] = 'Lyon' ;
$villes[] = 'Nancy' ;
$villes[] = 'Metz';
[][] :: ajouter
ajouter àà la
la fin
fin
0
1
2
"Lyon"
"Nancy"
"Metz"
tableaux associatifs
tableau indexé
classique : C, Java...
index
valeur
notes[3] = 10,5
0
1
2
3
12
11
13,1
10,5
séquence
séquence
d'entiers
d'entiers
tableau associatif
clé
valeur
$notes['Dupond'] = 10,5
'Durand'
'Chen'
'Ahmed'
'Dupond'
Très utilisé !!!
12
11
13,1
10,5
clés
clés
arbitraires
arbitraires
simple en PHP
tableaux associatifs
$notes['durand'] = 12;
$notes['chen']
= 11;
clé
clé
valeur
valeur
clé
clé
valeur
valeur
$notes = array('durand'=>12, 'chen'
=>11);
echo $notes['chen'];
élément
élément
'durand'
'durand'
élément
élément
'chen'
'chen'
Exemples de tableaux
$etudiant['nom']='Toto';
$etudiant['age']=20;
echo $etudiant['nom'];
$etudiant['age']=$etudiant['age']+2;
pratique pour débugger :
var_dump($variable);
print_r($tableau);
foreach : boucles / tableaux
$notes = array('durand'=>12,
'chen'
=>11);
$notes['ahmed']=13;
foreach($notes as $nom => $points)
{
echo "$nom a eu $points/20";
}
durand a eu 12/20
chen a eu 11/20
ahmed a eu 13/20
include
utiliser le contenu d'un autre fichier PHP
fichier1.php
<?php
echo 'bonjour';
include 'fichier2.php';
echo 'aurevoir';
?>
fichier2.php
<?php
echo 'dans fichier2';
echo 'bla bla bla';
?>
<?php
echo 'bonjour';
echo 'dans fichier2';
echo 'bla bla bla';
echo 'aurevoir';
?>
include : variantes
utiliser le contenu d'un autre fichier PHP
include
'toto.php'
include_once 'toto.php'
require
'toto.php'
require_once 'toto.php'
include
require
ok, même si le
fichier n'existe pas
erreur si le fichier
n'existe pas
_once
ne pas re-inclure si le
fichier l'a déjà été
en général : require_once
classes et objets
<?php
class Personne
{
var $age;
function viellir() {$this->age++;}
function __construct()
{
echo "Création d'une personne";
}
}
class Etudiant extends Personne
{
// ....
}
$p1 = new Personne();
$p2 = new Etudiant();
?>
$this
$this est
est obligatoire
obligatoire
PHP4 != PHP5
3ème partie
interaction et formulaires
formulaire : exemple simple
form.html
simplifié...
<form method="get" action="search.php">
<p>
1 <input type="text" name="terms" />
2 <input type="submit" value="rechercher" />
</p>
</form>
1
2
form.html
formulaire : exemple 2
<form method="get" action="search.php">
<p>
1 <label for="terms" >termes à chercher:</label>
2 <input type="text" name="terms" id="terms"/>
<br/>
3 <input type="checkbox" name="fr" id="fr"/>
4 <label for="fr">en francais?</label>
<br/>
5 <input type="submit" value="rechercher" />
</p>
</form>
2
1
4
3
5
client (navigateur)
interaction
site.org
http://site.org/form.html
1
3 affichage
formulaire form.html
4 saisie utilisateur
concert lundi
8
affichage
résultats
recherche
serveur
form.html
apache
form.html
2
soumission du formulaire
http://site.org/search.php
5
7
html résultats recherche
apache
PHP
6 search.php
base de
données
internet
soumission d'un formulaire
client (navigateur)
informations saisies
client
serveur
serveur
site.org
recherche le mot "basse"
champ texte: name="terms"
terms="basse"
saisie utilisateur
4
soumission du formulaire
http://site.org/search.php
5
2 méthodes:
apache
PHP
6 search.php
GET
POST
base de
données
form.html
formulaires PHP
<form method="get" action="search.php">
...<input type="text" name="terms" />...
</form>
concert lundi
soumission du formulaire
search.php
<?php
...
$saisie=$_GET['terms'];
...
echo "vous avez écrit: $saisie";
?>
méthode GET
GET: ne modifie pas l'état sur le serveur.
Peut-être répété sans conséquences
"lire des infos sur le serveur"
http://site.org/search.php?terms=basse
exemples:
modifier l'affichage
faire une recherche
contre-exemples:
payer en ligne
ajouter un commentaire
sur un forum
méthode POST
POST: change l'état du serveur.
Répétition potentiellement gênante
"écrire des infos sur le serveur"
terms=basse
dans la requête http
contre-exemples:
modifier l'affichage
faire une recherche
exemples:
payer en ligne
ajouter un commentaire
sur un forum
ce document est distribué librement :
sous licence GNU FDL :
http://www.gnu.org/copyleft/fdl.html
les originaux sont disponibles aux formats OpenOffice et powerpoint
http://www-info.iutv.univ-paris13.fr/~bosc