Valid XHTML     Valid CSS2    

Listing du fichier l2xml_6_tp5.php

 

00001     <?php
00002     
# # (gH) -_- l2xml_6_tp5.php ; TimeStamp (unix) : 16 Novembre 2017 vers 17:44
00003     
include("std.php") ;
00004     include(
"l2xml_6_inc.php") ;
00005     
00006     
$HTML
= s_span("HTML" ,"grouge") ;
00007     
$XHTML
= s_span("XHTML","grouge") ;
00008     
$XML
= s_span("XML" ,"grouge") ;
00009     
$XSL
= s_span("XSL" ,"grouge") ;
00010     
$XPATH
= s_span("XPATH","grouge") ;
00011     
$DTD
= s_span("DTD" ,"grouge") ;
00012     
$XSD
= s_span("XSD" ,"grouge") ;
00013     
$CSS
= s_span("CSS" ,"grouge") ;
00014     
$CSV
= s_span("CSV" ,"grouge") ;
00015     
$AJAX
= s_span("AJAX" ,"grouge") ;
00016     
$Excel
= s_span("Excel" ,"grouge") ;
00017     
$Javascript
= s_span("JavaScript" ,"grouge") ;
00018     
$R
= s_span("R" ,"grouge") ;
00019     
$PHP
= s_span("PHP" ,"grouge") ;
00020     
00021     
$numSerie
= 5 ;
00022     
00023     if (!isset(
$_GET
["standalone"])) { debutPage("XML en L2, TP $numSerie","strict","","l2xml.js") ; } ;
00024     
00025     
debutSection() ;
00026     
h1
("$XML en L2, universit&eacute; d'Angers ") ;
00027     
h2
(s_nbsp(4).href("../../","gilles.hunault@univ-angers.fr","gvert nou")) ;
00028     
pvide() ;
00029     
h2
(s_span("T.P. num&eacute;ro $numSerie","gbleu")."&nbsp;:&nbsp;Programmation") ;
00030     
pvide() ;
00031     
00032     
###########################################################################################
00033     
00034     
$tableauDesRubriques = array() ;
00035     
$idr
= 0 ;
00036     
$idr
++; $tableauDesRubriques[$idr] = "Programmation en $PHP (1) : lecture" ;
00037     
$idr
++; $tableauDesRubriques[$idr] = "Programmation en $PHP (2) : génération" ;
00038     
$idr
++; $tableauDesRubriques[$idr] = "Programmation en $PHP (3) : recherche" ;
00039     
$idr
++; $tableauDesRubriques[$idr] = "Programmation en $PHP (4) : transformation" ;
00040     
$idr
++; $tableauDesRubriques[$idr] = "Programmation en $Javascript (1) : lecture " ;
00041     
$idr
++; $tableauDesRubriques[$idr] = "Programmation en $Javascript (2) : génération " ;
00042     
$tdmCRLM
= new tdm($tableauDesRubriques) ;
00043     
$tdmCRLM
->titre() ;
00044     
$tdmCRLM
->menu("oui","oui","nou") ;
00045     
00046     
pvide() ;
00047     
$numExo
= 0 ;
00048     
$numSerie
= 5 ;
00049     
direAfficherSolutions
($numSerie) ;
00050     
pvide() ;
00051     
00052     
p
("texte") ;
00053     echo
b
("Attention &nbsp;:")." tout code $PHP qui doit produire du $XHTML doit &ecirc;tre écrit via du " ;
00054     echo
href
("http://www.info.univ-angers.fr/~gh/internet/php_conceptuel.php","$PHP conceptuel").", donc sans marqueur " ;
00055     echo
ghVert
("&lt;")." ou ".ghvert("&gt;").". ";
00056     
finp() ;
00057     
00058     
p
("texte") ;
00059     echo
" On pourra consulter le " ;
00060     echo
href
("montresource.php?nomfic=l2xml_6_tp5.php","code-source php de cette page","orange_stim nou")." à titre d'exemple." ;
00061     
finp() ;
00062     
00063     
p
("texte") ;
00064     echo
"Un rappel sur les fonctions et méthodes
$PHP pour traiter du $XML se trouve à la page " ;
00065     echo
href
("xmlphp.php","xmlphp")."." ;
00066     
finp() ;
00067     
00068     
## -------------------------------------------------------------------------------------------
00069     
00070     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # "Programmation en PHP (1) : lecture"
00071     
00072     ## -------------------------------------------------------------------------------------------
00073     
00074     
blockquote() ;
00075     
00076     
p
("texte") ;
00077     echo
"Comment fait-on pour lire des fichiers en
$XML&nbsp;?" ;
00078     
finp() ;
00079     
00080     
p
("texte") ;
00081     echo
"Essayer par exemple d'afficher, en ligne de commandes, " ;
00082     echo
" pour le fichier "
.href("films2.xml").", " ;
00083     echo
" tous les titres de films avec leur numéro, comme ci-dessous&nbsp;:" ;
00084     
finp() ;
00085     
00086     
pre_fichier
("titresEnPhp.txt","cadrejaune") ;
00087     
00088     
p
("texte") ;
00089     echo
"On pourra utiliser "
.href("http://php.net/manual/fr/simplexml.examples-basic.php","SimpleXML").". " ;
00090     
finp() ;
00091     
00092     
solution
($numExo,$numSerie) ;
00093     
00094     
p
("texte") ;
00095     echo
"Comme le montre "
.href("http://php.net/manual/fr/book.xml.php","la page de manuel de $PHP consacrée à XML").", " ;
00096     echo
" on dispose de nombreuses fonctions et de plusieurs modules pour traiter du
$XML en $PHP. " ;
00097     echo
" Avec "
.href("http://php.net/manual/fr/simplexml.examples-basic.php","SimpleXML")." la lecture d'un fichier $XML se fait via la fonction " ;
00098     echo
href
("http://php.net/manual/fr/function.simplexml-load-file.php","simplexml_load_file()") ;
00099     echo
" et produit un objet de classe
$XML. Ensuite la méthode " ;
00100     echo
href
("http://php.net/manual/fr/simplexmlelement.xpath.php","xpath()") ;
00101     echo
" renvoie un tableau d'éléments pour lequel l'itération via "
.href("http://php.net/manual/fr/control-structures.foreach.php","foreach") ;
00102     echo
" est possible. Le script demandé se réduit donc, hors commandes d'affichages avec "
.b("echo").", " ;
00103     echo
" à une lecture et à une itération." ;
00104     
finp() ;
00105     
00106     
p() ;
00107     echo
b
("Fichier ".href("montresource.php?nomfic=titresL2.php","titresL2.php")) ;
00108     
finp() ;
00109     
00110     
pre_fichier
("titresL2.php","cadre") ;
00111     
00112     
finsolution() ;
00113     
00114     
finblockquote() ;
00115     
00116     
## -------------------------------------------------------------------------------------------
00117     
00118     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # "Programmation en PHP (2) : génération"
00119     
00120     ## -------------------------------------------------------------------------------------------
00121     
00122     
blockquote() ;
00123     
00124     
p
("texte") ;
00125     echo
"Essayez d'écrire le programme
$PHP correspondant à l'action du formulaire ".href("genere_f.php")." de façon à ce que le navigateur " ;
00126     echo
" ouvre le fichier
$XML résultat dès qu'il est généré. " ;
00127     echo
" Ici, on utilisera "
.href("http://php.net/manual/fr/book.dom.php","DOM")."." ;
00128     
finp() ;
00129     
00130     
p
("texte") ;
00131     echo
"Au passage, quelle serait la &laquo;"
.em("meilleure")."&raquo; structuration du fichier résultat&nbsp;?" ;
00132     
finp() ;
00133     
00134     
solution
($numExo,$numSerie) ;
00135     
00136     
00137     
p
("texte") ;
00138     echo
"Il est certainement \"rassurant\" de commencer par vérifier qu'on est bien capable d'appeler le programme défini " ;
00139     echo
" par l'attribut "
.b("action")." de l'élément ".b("&lt;form ...&gt;").". " ;
00140     echo
" Pour cela, on peut se contenter du code suivant&nbsp;:" ;
00141     
finp() ;
00142     
00143     
pre_fichier
("generer1.php","cadrebleu") ;
00144     
00145     
p
("texte") ;
00146     echo
"Vous pouvez vérifier "
.href("generer1.php","ici")." ce qu'il affiche." ;
00147     
finp() ;
00148     
00149     
p
("texte") ;
00150     echo
" Pour que le script
$PHP soit correct, il faut utiliser en début de script le bon " ;
00151     echo
href
("http://php.net/manual/fr/function.header.php","header()").". " ;
00152     echo
" Le début du code doit donc ressembler à&nbsp;:" ;
00153     
finp() ;
00154     
00155     
pre_fichier
("generer2.php","cadrebleu") ;
00156     
00157     
p
("texte") ;
00158     echo
"Vous pouvez voir "
.href("generer2.php","là")." le rendu associé à ce programme ".b("PHP") ;
00159     echo
" et constater que le navigateur affiche bien le contenu en "
.b("mode XML")."." ;
00160     
finp() ;
00161     
00162     
p
("texte") ;
00163     echo
"Le formulaire utilise la méthode "
.b("GET")." donc la gestion des paramètres peut se faire simplement " ;
00164     echo
" avec des tests "
.b("if&nbsp;(isset(\$_GET[...").". " ;
00165     
finp() ;
00166     
00167     
p
("texte") ;
00168     echo
"Si on utilise "
.href("http://php.net/manual/fr/book.dom.php","DOM").", " ;
00169     echo
" les fonctions et méthodes ont des noms déja connus via l'API de
$Javascript. " ;
00170     echo
" Ainsi, pour créer un élément on utilise " ;
00171     echo
" la méthode "
.href("http://php.net/manual/fr/domdocument.createelement.php","createElement()").", ";
00172     echo
" pour ajouter un fils on utilise " ;
00173     echo
" la méthode "
.href("http://php.net/manual/fr/domnode.appendchild.php","appendChild()").", " ;
00174     echo
" pour créer ou définir un attribut, on utilise " ;
00175     echo
" la méthode "
.href("http://php.net/manual/fr/domelement.setattribute.php","setAttribute()").". " ;
00176     echo
" La création d'un objet
$XML se fait via " ;
00177     echo
href
("http://php.net/manual/fr/domdocument.construct.php","DOMDocument()") ;
00178     echo
" et l'affichage par la méthode " ;
00179     echo
href
("http://php.net/manual/fr/domdocument.savexml.php","saveXML()").". " ;
00180     
finp() ;
00181     
00182     
p
("texte") ;
00183     echo
" Voici donc le code
$PHP complet nommé ".href("genereXml.php") ;
00184     echo
" qui produit le fichier
$XML en fonction du choix dans le formulaire " ;
00185     
finp() ;
00186     
00187     
p
("texte") ;
00188     echo
b
("Fichier ".href("montresource.php?nomfic=genereXml.php","genereXml.php")) ;
00189     
finp() ;
00190     
00191     
pre_fichier
("genereXml.php","cadre") ;
00192     
00193     
p
("texte") ;
00194     echo
"Le fichier inclus cité, soit "
.href("montresource.php?nomfic=genereXml-inc2.php","genereXml-inc.php").", " ;
00195     echo
" contient juste du code pour le contenu des protéines&nbsp;:" ;
00196     
finp() ;
00197     
00198     
pre_fichier
("genereXml-inc2.php","cadre") ;
00199     
00200     
p
("texte") ;
00201     echo
"La \"meilleure\" structuration est celle qui met les identifiants et les séquences en éléments, avec " ;
00202     echo
" les classes et les longueurs en attributs, car ces deux dernières informations peuvent sans doute &ecirc;tre ";
00203     echo
" considérées comme moins importantes. " ;
00204     echo
" Un lien possible avec ces choix, qui utilise la solution programmée précédente est " ;
00205     echo
href
("genereXml.php?i=e&amp;s=e&amp;c=a&amp;l=a","ici").". " ;
00206     
finp() ;
00207     
00208     
p
("texte") ;
00209     echo
"Une des difficultés pour programmer du "
.b("XML")." en PHP " ;
00210     echo
" qu'il n'est pas possible d'utiliser des \"echo ...\" pour afficher ce qui se passe. " ;
00211     echo
" On passe donc par des commentaires au sens de XML comme " ;
00212     echo
href
("genereXmlCmt.php?i=e&amp;s=e&amp;c=a&amp;l=a","ici").". " ;
00213     echo
" Le détail du code source associé est "
.href("montresource.php?nomfic=genereXmlCmt.php","là").". " ;
00214     
finp() ;
00215     
00216     
finsolution() ;
00217     
00218     
finblockquote() ;
00219     
00220     
## -------------------------------------------------------------------------------------------
00221     
00222     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # "Programmation en PHP (3) : recherche"
00223     
00224     ## -------------------------------------------------------------------------------------------
00225     
00226     
blockquote() ;
00227     
00228     
p
("texte") ;
00229     echo
" On voudrait compter le nombre de prot&eacute;ines du fichier "
.href("leadb880.xml")." et v&eacute;rifier que chaque prot&eacute;ine a bien un attribut ".b("length").". " ;
00230     echo
" Ecrire un script
$PHP qui effectue ce traitement puis qui trouve la plus petite longueur de prot&eacute;ine et la plus grande. " ;
00231     echo
" On pourra se contenter d'un script en ligne de commandes. ";
00232     
finp() ;
00233     
00234     
solution
($numExo,$numSerie) ;
00235     
00236     
# protminmax.php
00237     
p
("texte") ;
00238     echo
"Ici, aucune bibliothèque ni module n'est imposé. Dans la mesure où " ;
00239     echo
" "
.href("http://php.net/manual/fr/simplexml.examples-basic.php","SimpleXML")." est simple (!) et suffit ici, on peut se contenter du code suivant&nbsp;: " ;
00240     
finp() ;
00241     
00242     
p() ;
00243     echo
b
("Fichier ".href("montresource.php?nomfic=protminmax.php","protminmax.php")) ;
00244     
finp() ;
00245     
00246     
pre_fichier
("protminmax.php","cadrebleu") ;
00247     
00248     
p() ;
00249     echo
"Voici ce qu'affiche ce script&nbsp;:" ;
00250     
finp() ;
00251     
00252     
pre_fichier
("protminmax.txt","cadre") ;
00253     
00254     
p
("texte") ;
00255     echo
"On notera les initialisations de longueur minimale et maximale assez \"laxistes\" et on remarquera " ;
00256     echo
" l'utilisation de la fonction " ;
00257     echo
href
("http://php.net/manual/fr/function.intval.php","intval()") ;
00258     echo
" pour forcer la longueur à &ecirc;tre un entier,
$XML ne connaissant que des chaines de caractères pour les valeurs des attributs." ;
00259     
finp() ;
00260     
00261     
p() ;
00262     echo
"Les initialisations des longueurs minimales et maximales du programme précédent sont pas très rigoureuses. Il vaut mieux " ;
00263     echo
" utiliser la première longueur vue comme minimum et maximum. Voici donc un code \"plus propre\"&,nsp;:" ;
00264     
finp() ;
00265     
00266     
pre_fichier
("protminmaxv2.php","cadrebleu") ;
00267     
finsolution() ;
00268     
00269     
finblockquote() ;
00270     
00271     
## -------------------------------------------------------------------------------------------
00272     
00273     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # "Programmation en PHP (1) : transformation"
00274     
00275     ## -------------------------------------------------------------------------------------------
00276     
00277     
blockquote() ;
00278     
00279     
p
("texte") ;
00280     echo
"Ecrire une transformation
$XSL qui compte les films, les artistes et les metteurs en scène, comme ci-dessous. " ;
00281     echo
" On la testera en ligne de commandes. " ;
00282     
finp() ;
00283     
00284     
pre_fichier
("nbfa1_sor.txt","cadre") ;
00285     
00286     
p
("texte") ;
00287     echo
"Ecrire ensuite une page Web en PHP valide au sens de XHTML 1.0 Strict qui effectue cette transformation sur le serveur." ;
00288     echo
" On affichera le résultat dans un élément de type "
.ghVert("&lt;pre&gt;")." comme " ;
00289     echo
href
("nbfa1.php","ici").". " ;
00290     
#echo " On pourra utiliser ".href("montresource.php?nomfic=std2web.xsl","std2web.xsl") ;
00291     #echo " à condition d'expliciter quelles ".em("templates")." on utilise. " ;
00292     
finp() ;
00293     
00294     
p
("texte") ;
00295     echo
" Comment faut-il faire si on veut afficher avec de la couleur et dans des paragraphes comme dans la page " ;
00296     echo
href
("nbfa2.php","nbfa2")."&nbsp;? " ;
00297     
finp() ;
00298     
00299     
solution
($numExo,$numSerie) ;
00300     
00301     
p
("texte") ;
00302     echo
" La solution en ligne de commandes avait déjà été vue la semaine dernière, dans le T.P. précédent. Nous la reproduisons ici, " ;
00303     echo
" avec un encodage en "
.b("ISO8859-15")." explicite car c'est celui de la page Web qui exécute la transformation $XSL." ;
00304     
finp() ;
00305     
00306     
pre_fichier
("nbfa1.xsl","cadrebleu") ;
00307     
00308     
p
("texte") ;
00309     echo
" Si "
.b("xmlstarlet")." est accessible depuis $PHP sur le serveur, on peut se contenter du code suivant pour répondre à la question&nbsp;:" ;
00310     
finp() ;
00311     
00312     
pre_fichier
("nbfa1.php","cadre") ;
00313     
00314     
p
("texte") ;
00315     echo
" De m&ecirc;me si on veut du
$XHTML dans la sortie de la transformation, il suffit de modifier légèrement la feuille de style, " ;
00316     echo
" d'enlever les "
.b("&lt;xsl:text&gt;") ;
00317     echo
" et d'ajouter des "
.b("&lt;span&nbsp;class=...&gt;")."&nbsp;:" ;
00318     
finp() ;
00319     
00320     
pre_fichier
("nbfa2.xsl","cadrejaune") ;
00321     
00322     
p
("texte") ;
00323     echo
"Le résultat est visible "
.href("nbfa2.php","ici")."." ;
00324     
finp() ;
00325     
00326     
p
("texte") ;
00327     echo
" Si par contre "
.b("xmlstarlet")." n'est pas accessible, on peut effectuer la transformation dans $PHP via " ;
00328     echo
href
("http://php.net/manual/fr/xsltprocessor.construct.php","XSLTProcessor").", ";
00329     echo
href
("http://php.net/manual/fr/xsltprocessor.importstylesheet.php","importStyleSheet()")." et " ;
00330     echo
href
("http://php.net/manual/fr/xsltprocessor.transformtoxml.php","transformToXML") ;
00331     echo
" comme suit " ;
00332     
finp() ;
00333     
00334     
pre_fichier
("nbfa3.php","cadre") ;
00335     
00336     
finsolution() ;
00337     
00338     
finblockquote() ;
00339     
00340     
## -------------------------------------------------------------------------------------------
00341     
00342     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # "Programmation en Javascript (1) : lecture"
00343     
00344     ## -------------------------------------------------------------------------------------------
00345     
00346     
blockquote() ;
00347     
00348     
p
("texte") ;
00349     echo
"Comment fait-on pour lire du
$XML en ".$Javascript."&nbsp;?" ;
00350     echo
" Reproduire la sortie de l'exercice 1 via du Javascript externalisé et non intrusif. " ;
00351     echo
" On pourra utiliser la page "
.href("montresource.php?nomfic=nbelt.php","nbelt.php") ;
00352     echo
" comme point de départ, l'archive des fichiers à utiliser est "
.href("../std.php.zip","ici").". " ;
00353     
finp() ;
00354     
00355     
pre_fichier
("nbelt.php","cadrejaune") ;
00356     
00357     
solution
($numExo,$numSerie) ;
00358     
00359     
p
("texte") ;
00360     echo
"Commençons par ajouter du
$Javascript à la page. Pour cela, on déclare le fichier ".href("montresource.php?nomfic=nbelt.js","nbelt.js") ;
00361     echo
" comme paramètre numéro quatre dans l'appel de la fonction " ;
00362     echo
href
("http://forge.info.univ-angers.fr/~gh/internet/stdphp.php?lafns=debutPage","debutPage()").", ce qui permet d'inclure le code $Javascript dès la partie ".b("&lt;head&gt;")." du document." ;
00363     echo
" Voici donc la nouvelle page Web&nbsp;:" ;
00364     
finp() ;
00365     
00366     
p() ;
00367     echo
b
("Fichier ".href("montresource.php?nomfic=nbeltjs.php","nbeltjs.php")) ;
00368     
finp() ;
00369     
00370     
pre_fichier
("nbeltjs.php","cadrebleu") ;
00371     
00372     
p
("texte") ;
00373     echo
"Pour que le
$Javascript soit non intrusif, on ne doit pas définir une action à exécuter dès le chargement de la page (évènement ".b("load")."). " ;
00374     echo
" Par contre on doit définir un gestionnaire d'évènements et ajouter ce qu'on veut faire à la liste des évènements prévus au chargement. " ;
00375     echo
" Si on convient que l'on veut exécuter une fonction nommée "
.b("films")." alors le début du fichier $Javascript doit ressembler à &nbsp;:" ;
00376     
finp() ;
00377     
00378     
pre_fichier
("nbeltjs-debut.txt","cadrejaune") ;
00379     
00380     
p
("texte") ;
00381     echo
"Il y a deux actions à réaliser dans notre fonction "
.b("films")."&nbsp;: charger le fichier puis évaluer du code $XPATH pour trouver les titres de films. " ;
00382     echo
" La première action est très classique si on connait
$AJAX car on passe par " ;
00383     echo
href
("https://developer.mozilla.org/fr/docs/Web/API/XMLHttpRequest","XMLHttpRequest").". " ;
00384     echo
" Pour la seconde, il faut utiliser la méthode " ;
00385     echo
href
("https://developer.mozilla.org/fr/docs/Web/API/Document/evaluate","evaluate")." pour traiter les expressions $XPATH. " ;
00386     echo
" Voici le code complet du fichier
$Javascript nommé " ;
00387     echo
href
("montresource.php?nomfic=nbelt.js","nbeltjs").". " ;
00388     
finp() ;
00389     
00390     
pre_fichier
("nbelt.js","cadrejaune") ;
00391     
00392     
p
("texte") ;
00393     echo
"On peut vérifier "
.href("nbeltjs.php","ici")." ce que cela donne." ;
00394     
finp() ;
00395     
00396     
h3
("Remarque&nbsp;:") ;
00397     
00398     
p
("texte") ;
00399     echo
"Si on utilise "
.href("http://learn.jquery.com/","JQUERY")." on peut se passer de $XPATH. A titre d'exemple, on pourra consulter la page " ;
00400     echo
href
("nbeltjquery.php") ;
00401     echo
" dont le code est ci-dessous&nbsp;:" ;
00402     
finp() ;
00403     
00404     
pre_fichier
("nbeltjquery.php","cadrebleu") ;
00405     
00406     
p
("texte") ;
00407     echo
" Le code complet du fichier
$Javascript associé, qui utilise ".href("http://learn.jquery.com/","JQUERY").", nommé " ;
00408     echo
href
("montresource.php?nomfic=nbeltjq.js","nbeltjq.js").", ".b("formatté selon nos règles").", est ci-dessous&nbsp;:" ;
00409     
finp() ;
00410     
00411     
pre_fichier
("nbeltjq.js","cadrejaune") ;
00412     
00413     
finsolution() ;
00414     
00415     
finblockquote() ;
00416     
00417     
## -------------------------------------------------------------------------------------------
00418     
00419     
$tdmCRLM
->afficheRubrique("oui") ; $numExo++ ; # "Programmation en Javascript (2) : génération"
00420     
00421     ## -------------------------------------------------------------------------------------------
00422     
00423     
blockquote() ;
00424     
00425     
p
("texte") ;
00426     echo
"Essayer de produire, via du
$Javascript externalisé, le contenu $XML suivant&nbsp;" ;
00427     
finp() ;
00428     
00429     
pre_fichier
("trajets.xml","cadre") ;
00430     
00431     
solution
($numExo,$numSerie) ;
00432     
00433     
p
("texte") ;
00434     echo
"Vous n'&ecirc;tes pas autorisé pour l'instant à lire la solution. " ;
00435     echo
" Le fichier solution sera indiqué pendant le T.P." ;
00436     
finp() ;
00437     
00438     
finsolution() ;
00439     
00440     
finblockquote() ;
00441     
00442     
###########################################################################################
00443     
00444     
p() ;
00445     echo
href
("montresource.php?nomfic=l2xml_6_tp5.php","Code-source php de cette page","orange_stim nou")."." ;
00446     
finp() ;
00447     
00448     
finSection() ;
00449     
00450     if (!isset(
$_GET
["standalone"])) { finPage() ; } ;
00451     
?>

Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.

 

 

retour gH    Retour à la page principale de   (gH)