Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Langages serveur > ASP
ASP Forum sur la programmation ASP. Avant de poster : Cours ASP, FAQ ASP
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/08/2006, 13h22   #1
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Par défaut inclusion conditionnelle de fichier definissant un fonction

Bonjour,

Je voudrais pouvoir include un fichier de façon conditionnelle, dans le FAQ il est conseillé dans ce cas d'inclure le fichier de la facon suivante :
Code :
1
2
3
4
5
6
 
<% if condition then %>
  <!--#include file="monfichier1.asp"-->
<% else %>
<!--#include file="monfichier2.asp"-->
<% end if %>
Mais si je comprend bien avec cette technique, le parseur va inclure a la fois monfichier1.asp et monfichier2.asp et executera ensuite le code en fonction de condition. C'est la que se pose mon probleme , mes 2 fichiers définissent la meme fonction mais avec des variantes de l'un à l'autre. Du coup le fait qu'ils soient tous les 2 parsés entraine que la fonction définie dans monfichier2.asp écrase automatiquement celle définie dans monfichier1.asp.
Mais il faut absolument que je puisse définir une fonction un peu différente selon ma condition. Savez vous si il existe un moyen via l'include de fichier, ou sinon puis je contourner le probleme ?

Merci
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h08   #2
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 807
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 807
Points : 3 005
Points : 3 005
Bonjour,

Il faudrait un peu plus de détail sur les conditions.

Juste une idée : Tu ne peux pas faire un include d'un seul fichier et tester ta condition dans ce fichier include ?
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h24   #3
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Merci pour ta réponse

En fait ma condition c'est une variable de session boléenne qui définie si le flux retourné est de l'HTML ou du XML. En gros ca donne :
Code :
if Session("fluxXML") Then
Qu'entends tu par l'include d'un seul fichier, tu veux dire que je fais l'inclusion du même fichier c'est à dire de celui qui définit la fonction , mais par contre dans ce fichier je teste ma condition pour faire les modifications de ma fonction selon la condition ? Je ne sais pas si je peux faire ca en fait, je souhaitais ne pas avoir a modifier les fichiers qui definissent ma fonction. Pour être plus clair cette fonction affiche de l'HTML ou du XML, mais l'affichage apparait a plein d'endroit dans la fonction, du coup a chaque fois que j'ai un response.write je vais devoir tester ma condition pour verifier si je veux afficher de l'HTML ou de l'XML, ca va me faire rajouter 30 tests de conditions dans la même fonction pour tester la même condition, c'est pour ca qu'a l'époque j'avais eu recours a un 2e fichier de fonction un peu différent du premier.

J'ai peut être une solution intermédiaire, mais je ne la trouve pas terrible car ca me fait encore rajouter un fichier ; je crée un 3e fichier, identique au 2e dans lequel je nomme ma fonction de facon différente ; et je teste ma condition non pas au moment de la définission de la fonction , mais au moment de son appel. Ca devrait fonctionner, seul ennui c'est que je crée encore un nouveau fichier

Edit : Mauvais plan, je viens de verifier le code de ma page, ca reviendrait exactement au même que d'effectuer mon test de condition dans ma fonction elle meme, car la fonction est appelée au moins 15 fois dans ma page, ca me fait rajouter 15 tests de condition dans la meme page , c 'est carrement bourrin Est ce qu'il est possible en VBSCRIPT de redefinir une fonction a partir d'une autre (en gros ce qui reviendrait a renommer une fonction)
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 14h56   #4
Expert Confirmé
 
Avatar de pc75
 
Inscription : septembre 2004
Messages : 2 807
Détails du profil
Informations personnelles :
Âge : 56
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : septembre 2004
Messages : 2 807
Points : 3 005
Points : 3 005
Jette un oeil à la FAQ là http://asp.developpez.com/faq/?page=inclusion#dynamique
__________________
Par principe, je ne réponds pas aux messages URGENT.
Il n'y a pas de choses urgentes, il n'y a que des choses en retard. (un inconnu)
pc75 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 15h18   #5
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Merci pour ta réponse

Je viens de tester mais j'obtiens une erreur avec cette fonction : j'obtiens le message 'type incompatible' au moment de l'appel de ma fonction. J'avais eu le meme probleme ce matin avec la solution proposée dans la FAQ de developpez.com.

Je voudrais essayer de renommer ma fonction (je pars du principe que je definie 2 fonctions avec un nom différent et que selon de ma condition je renomme si necessaire la fonction, car la fonction qui est appelée a toujours le meme nom). Seule probleme c'est que je n'ai aucune idée de comment on redéfinie une fonction en VBScript, j'ai fait des recherches et j'ai trouvé le code suivant en JScript
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
 
<%@ language=jscript %><html><body>
<%
function printHello() {
   Response.Write("Hello!<BR>\n");
}
function printBye() {
   Response.Write("Bye!<BR>\n");
}
printHello = printBye;
printHello(); // Prints Bye!
%>
</body></html>
Mais ca ne fonctionne pas si je le convertie en VBScript
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2006, 22h25   #6
Expert Confirmé Sénior

 
Avatar de Immobilis
 
Inscription : mars 2004
Messages : 5 849
Détails du profil
Informations forums :
Inscription : mars 2004
Messages : 5 849
Points : 5 965
Points : 5 965
Quelque soit le langage, une fonction est sensée renvoyer une valeur. Sinon, utilises une procedure.
En VB
Code :
1
2
3
4
5
6
7
 
Function bye(param)
      TRAITEMENT
      bye = RESULTAT DU TRAITEMENT
End function
 
response.write bye(value)
Comme dit PC75, pourquoi ne fais-tu pas un include avec tes deux fonctions. Suivant le résultat de ton test tu fais appel à l'une ou à l'autre.

A+
Immobilis est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/08/2006, 12h11   #7
Membre régulier
 
Inscription : décembre 2005
Messages : 177
Détails du profil
Informations personnelles :
Localisation : Belgique

Informations forums :
Inscription : décembre 2005
Messages : 177
Points : 85
Points : 85
Merci pour ta réponse !
En fait le probleme de l'include des fonctions, c'est que les 2 fonctions portent le meme nom, la 2e déclarée ecrase donc a chaque fois la premiere ; du coup mon idée etait d'en avoir une avec un nom différent et en fonction du résultat de mon test appeler la bonne fonction. C'est pour cette raison qu je voulais pouvoir renommer ma fonction car en fait la fonction est appelée une 15 aine de fois dans la page, je me vois pas faire le test a chaque appel de la fonction 15 fois dans la page. Ca me semble plus simple d'utiliser 15 fois le meme nom de fonction mais de renommer la fonction selon le résultat de mon test.
J'ai finalement changé la technique, j'ai fait 2 pages séparées pour les sorties XML et HTML, il y avait d'autre parametre en plus a prendre en compte dans la page et au final le code devenait n'importe quoi et était illisible, du coup j'ai finalement fait 2 pages, c'est lourd d'avoir 2 pages qui executent à peu pres la même chose mais parfois ca reste la meilleure solution si on veut pouvoir maintenir le code ensuite.

Merci de votre aide !
Matth_S est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 00h22.


 
 
 
 
Partenaires

Hébergement Web