Bonjour !
là je préviens tout le monde .. j'en ai marre.
Ce qui est si facile avec une fonction "include()" en PHP est un vrai casse-tête en ASP !
j'ai enfin trouvé un code qui marchait parfaitement pour inclure des pages dynamiquement en fonction du paramètre de l'url "page=xyz". ET qui gérait les pages contenant du code asp.
le voici :
je croyais que le code asp allait toujours fonctionner car un response.write contenu dans la page externe, marche !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42 <% ' === INCLUSION ASP === sub Include(fichier) if (fichier<>"") then dim Fnm,inF,code,asp,pt1,pt2 ' Création éventuelle de l'objet FSO if not isobject(FSO) then _ set FSO = Server.CreateObject("Scripting.FileSystemObject") ' Calcul du path long du fichier Fnm = server.mapPath(fichier) ' si le fichier existe if FSO.fileExists(Fnm) then set inF = FSO.openTextFile(Fnm,1,false) ' on lit tout son contenu code = inF.readAll inF.close ' on remplace les <%= par des <%response.write code = replace(code,"<%=","<%response.write ") code = replace(code,"<% =","<%response.write ") ' puis c'est selon... pt1 = 1 : pt2 = -1 while pt1>0 pt1 = instr(pt2+2,code,"<"&"%") ' on exécute tout ce qui est entre < % et % > if pt1>0 then response.write mid(code,pt2+2,pt1-pt2-2) pt2 = instr(pt1+2,code,"%"&">") asp = mid(code,pt1+2,pt2-pt1-2) execute asp ' et on affiche le reste else response.write mid(code,pt2+2) end if wend ' sinon msg d'erreur else response.write "Pas trouvé : " & Fnm end if else Call Include("accueil.asp") end if end sub %>
Le problème survient maintenant quand j'essaie d'inclure une page contenant du code asp "plus poussé" :
ma page externe (elle lit des news dans une base de donnée) :
il me renvoit l'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36 <!-- #include file="NEWS_Config.asp" --> <% NewsMaxCount = 5 Set Connection = Server.CreateObject("ADODB.connection") Set RecordSet = Server.CreateObject("ADODB.Recordset") Connection.ConnectionString = DNS_DB_NEWS Connection.open iNewsCount = 0 Recordset.open "select * from NEWS_INFO order by ID desc", Connection,3,3 If Recordset.EOF = false then do while not Recordset.EOF = true if iNewsCount = NewsMaxCount then exit do iNewsCount = iNewsCount + 1 %> <!-- #include file="NEWS_Include.asp" --> <% recordset.movenext loop else %> <Center>Pas de News trouvées</Center> <% end if %> <% Recordset.Close Connection.close Set Connection = nothing Set RecordSet = nothing %> <A Href="News_Archive.asp">Archives</A> <A Href="news_add.asp">Ajouter votre news</A>
Alors que cette page, sans l'inclure, fonctionne parfaitement.Microsoft VBScript compilation error '800a03fb'
Expected 'Loop'
/Projet/index.asp, line 36
Le problème vient-il de la boucle ? (loop) Qui serait mal gérée ?
Est-il impossible d'avoir d'inclure une page dynamiquement et correctement en ASP ?
Partager