IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ASP Discussion :

Impossible d'inclure une page asp correctement ?


Sujet :

ASP

  1. #1
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut Impossible d'inclure une page asp correctement ?
    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 :

    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
    %>
    je croyais que le code asp allait toujours fonctionner car un response.write contenu dans la page externe, marche !
    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) :

    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>
    il me renvoit l'erreur :

    Microsoft VBScript compilation error '800a03fb'

    Expected 'Loop'

    /Projet/index.asp, line 36
    Alors que cette page, sans l'inclure, fonctionne parfaitement.
    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 ?

  2. #2
    Membre averti Avatar de pmboutteau
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    601
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Santé

    Informations forums :
    Inscription : Février 2005
    Messages : 601
    Points : 420
    Points
    420
    Par défaut
    Il te manque pas un End IF :

    après ton incrémentation.
    ours ours !! Au début elle est froide mais après elle est bonne!

  3. #3
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Si ton fichier include contient une fonction ou une sub, je pense qu'il faut que tu la sorte de ta boucle, et que dans ta boucle, tu appelles la fonction ou la sub de ton include.

  4. #4
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Citation Envoyé par pmboutteau
    Il te manque pas un End IF :

    après ton incrémentation.
    En le rajoutant ça change rien .. peut-être que sur une seule ligne le end if n'est pas obligatoire (je suis pas douée en asp

    Citation Envoyé par pc75
    Bonjour,

    Si ton fichier include contient une fonction ou une sub, je pense qu'il faut que tu la sorte de ta boucle, et que dans ta boucle, tu appelles la fonction ou la sub de ton include.
    Euh ... je ne vois pas de fonction ni de sub dans le loop...

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    166
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 166
    Points : 189
    Points
    189
    Par défaut
    je ne vois pas à quel moment tu appelles ta fonction Include(), ni de passage d'arguments à cette fonction.
    Il me semble que le fichier include doit plutot servir à définir des fonctions génériques et ne figurer qu'en entête de fichier asp , dans ta deuxième page :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <!-- #include file="NEWS_Config.asp" --> 
    <!-- #include file="NEWS_Include.asp" -->
    puis dans ta boucle appel de la fonction mais avec quel argument, ""?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    do while not Recordset.EOF = true 
    if iNewsCount = NewsMaxCount then exit do 
    iNewsCount = iNewsCount + 1 
    [color=red]'ici appel de la fonction
    'mais je ne comprend pas ton passage de paramètres
    Include("")[/color]
    recordset.movenext 
    loop
    enfin, si je peux me permettre, je trouve dangereux de nommer tes fonctions ainsi.On ne sait jamais, on peut avoir affaire à un mot réservé...

  6. #6
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Re,

    Si j'ai bien compris, ton fichier include est INCLUSION.ASP. Ce fichier contient la sub Include(fichier) ?

    Alors tu fais comme amar00 suggère :
    Il me semble que le fichier include doit plutot servir à définir des fonctions génériques et ne figurer qu'en entête de fichier asp , dans ta deuxième page :
    Puis dans taboucle de ta page principale, tu appelles tu sub Include non ?

  7. #7
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Désolé.. il y a quelques confusions. J'essaie d'inclure un script de NEWS que je n'ai pas fait et qui contient lui aussi des include asp mais n'appelant pas la première fonction d'include mais utilisant : "<!-- #include file="NEWS_Config.asp" --> " et non seulement pour les configurations du scripts mais aussi pour l'affichage de chaque news.. ce qui ne me permet pas de les placer dans la page Appelant et non Appelée.

    j'ai : index.asp qui inclut en utilisant le bout de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <% ' === INCLUSION ASP ===
    sub Include(fichier)
    ....
    %>
    Ce code me permet d'inclure la page passée en argument.
    Cette fonction marche parfaitement, j'ai essayé d'inclure une page asp contenant une boucle do while : no problème.

    Mon but est alors d'inclure la page affichant les news, mais celle-ci provoque l'erreur décrite.. et c'est à ce niveau que je ne sais pas ou ça coince.. je vais revoir les chemins d'accès des "<!-- #include file="NEWS_Include.asp" --> " puisqu'une fois la page inclue, les chemins changent..

  8. #8
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Bon voilà ce qui fait planter la sub include :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <% IF "lol"="lol" then %>
    lol
    <% else %>
    lol
    <% end if %>
    La fonction ne supporte pas le découpage en plusieurs code asp de la condition.
    il ne gère que :
    <% if ... then ...
    end if
    %>

    et ceci, probablement car le code ASP est executé au fur et a mesure de la lecture du contenu des balises <% %> par la fonction Include (cf . 'execute asp' de la fonction)

    Quelqu'un a une solution ? je peux utiliser des response.write pour écrire l'html mais c'est un peu plus long ..

  9. #9
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Et avant de te lancer dans un truc aussi chiant... as tu essayé

    Execute

    La méthode Execute appelle un fichier .asp et le traite comme s'il faisait partie du script ASP appelant. La méthode Execute est semblable à un appel de procédure dans de nombreux langages de programmation.
    Syntaxe

    Server.Execute( Chemin )


    Paramètres

    Chemin
    Une chaîne spécifiant l'emplacement du fichier .asp à exécuter. Le paramètre Chemin peut être soit absolu, soit relatif. S'il s'agit d'un chemin absolu, il doit être mappé à un script ASP se trouvant dans la même application que le fichier .asp appelant. Chemin peut être un nom de variable de type chaîne défini au moment de l'exécution. Le paramètre Chemin ne doit pas contenir une chaîne de requête, sinon IIS renvoie une erreur.
    On ne parle plus là de la fonction execute de VBscript mais plutôt de la méthode Execute de l'objet ASP Server

    de toute façon il ya d'autres solutions...
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  10. #10
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    fredoche : j'obtiens :
    Server object error 'ASP 0228 : 80004005'

    Server.Execute Error

    /Projet/index.asp, line 141

    The call to Server.Execute failed while loading the page.
    mais mes pages asp sont assez basiques et je me débrouille avec le code que j'ai en convertissant le code html entre 2 conditions en code html écrit par asp (response.write)

    meric !

  11. #11
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    T'es sur d'avoir passé le bon chemin ?
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

  12. #12
    Membre actif Avatar de AlphaYoDa
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    213
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 213
    Points : 210
    Points
    210
    Par défaut
    Oui ça marche, merci par hasard .. tu connaitrais pas un moyen d'inclure une page externe .. d'un autre serveur .. je crois que c'est impossible.

  13. #13
    Membre extrêmement actif
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    1 616
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 616
    Points : 3 965
    Points
    3 965
    Par défaut
    Externe... il y a un client http inclus dans les composants msxml
    Mais il faut voir la problématique précise. Le plus chiant est de récupérer le document à exécuter depuis ASP
    Émotion
    Infantilisation
    Culpabilisation

    Christophe Alévèque - 18 Mars 2021

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inclure une page asp.net dans un site
    Par Angellus dans le forum ASP.NET
    Réponses: 10
    Dernier message: 30/04/2010, 17h00
  2. Réponses: 6
    Dernier message: 16/04/2010, 00h55
  3. Inclure une page asp dans une aspx.
    Par dedein84 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 11/03/2009, 14h31
  4. Réponses: 1
    Dernier message: 04/04/2006, 11h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo