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