Trucsweb.com

Forum de discussion

 Forum « Programmation ASP » (archives)

Re: Blems avec le bouton actualiser.

Envoyé: 1er septembre 2004, 9h37 par Oznog


Salut,

L'erreur n'a rien à voir avec le rafraîchissement. Ton code est correct à ce niveau. Par contre il y a plus d'une erreur, erreur fatales mais aussi de structure. Pour ces dernières erreurs, ça passe mais sache que tu peux optimiser ton code, tu pourrais lire sur le sujet si ça t'intéresse de programmer plus proprement.

Alors pour les erreurs fatales!

1. Je ne sais pas à quel point cette erreur est fatale mais c'est loing d'être propre. Il s'agit d'imvriquer du HTML dans une fonction. Hum, bien que ça puisse fonctionner, ça doit bien surprendre le moteur ASP.

C'Est effectivement une bonne pratique de d'imbriquer de la sorte HTML et ASP. Par exemple .

<p>Mon texte <%=varASP%> fin.</p>

Ou

<p>Texte </p>
<%
code ASP
%>
<p>Fin</p>

Mais directement dans une fonction?

<% function ASP... %>
HTML
<% ...fin Fonction ASP %>

Alors là c'est tordu.

Deux solution, ou convertire la fonction pour générer le HTML :

<%
Function afficher_L_U ()
...
do until recordset_affiche_L_U.EOF or ligne_ctr >= ligne_m%>
response.write "<BR><td align=""left"">"
response.write "<img border="0" src=""" & recordset_affiche_L_U("Image_liens") & """ name=""affichage"">"
...
End Function
%>

Ou tu ne cré pas de fonction, ce qui est la meilleurs solution parceque j'aimerais bien que tu me dise pourquoi utiliser une fonction pour exécuter son code une seule fois? Le rôle d'une fonction est de réutiliser un code plus d'une fois. Ce qui n'est pas le cas ici.

Donc, au lieu de l'appelle :

<font face="arial" size="2">
<div align="left">
<h4>Liens utiles</h4>
</div>
<%call afficher_L_U()%>
</font>

Faire directement l'imbrication :

<font face="arial" size="2">
<div align="left">
<h4>Liens utiles</h4>
</div>
requete_affiche_L_U = "SELECT Liens.* FROM Liens ORDER BY Liens.Num_liens"
Set recordset_affiche_L_U = Server.createObject("ADODB.Recordset")
recordset_affiche_L_U.cursorlocation = AdUseClient
recordset_affiche_L_U.cachesize = 16
recordset_affiche_L_U.Open requete_affiche_L_U, Connection_2
ligne_m = Cint(recordset_affiche_L_U.pagesize)
%>
<%do until recordset_affiche_L_U.EOF or ligne_ctr >= ligne_m%>
<BR><td align="left">
<Font face="Arial" size="1">
<img border="0" src="<%=recordset_affiche_L_U("Image_liens")%>" name="affichage">
<%=recordset_affiche_L_U("Nom_liens")%>
</a></font></td></tr>
<tr><td></td></tr>
<%
recordset_affiche_L_U.movenext
loop%>
<%
recordset_affiche_L_U.Close
set recordset_affiche_L_U = Nothing
%>
</font>

Je ne sais pas à quel point ça peut régler le problème mais c'est sûr que tu devra mieux structurer tes codes.

2. Tu compare la ligne affiché avec le nombre de record affichable par recordset. (ligne_ctr >= ligne_m). Bon, tu récupère bien le "pagesize" qui retrouvne le nombre de record récupérer. Mais tu ne met pas à jour la ligne affiché (ligne_ctr) et tu ne l'initialise même pas.

' Ajouter en haut pusique tu part au premier

ligne_ctr = 1

Et incrémente-le durent l'affichage :

ligne_ctr = ligne_ctr + 1
loop

C'est déjà ça. Note que pour l'optimisation, le "getRow" est une méthode parfaitement adapté pour cette situation.

3. Une erreur moins importante de structure, tu oublie l'hyperlien mais pourtant tu en ferme un!

On retrouve le "</a>" mais aucune balise "<a href..."!

4. Encore la structure, ton HTML est très mal formé, c'est quoi ça "<tr><td></td></tr>" absoluement rien! Attention ton tableau n'existe pas mais tu as des ligne et cellule! Sans parler de la police de caractères autour de tout ça (<font face="arial" size="2">) qui affecte le contenu d'un bloc pas le contenu de plusieurs bloc comme un tableau HTML, des DIV etc! Ça ne peut provoquer d,erreur ASP mais ça va assurément te poser des problème d'affichage un jour ou l'autre. Un bon truc, regarde la source du document une fois généré (via le navigateur) pour voir si ton HTML est bien généré.

Voilà, ça fait le tour, note que j'ai testé ton code, avec l'ajustement de structure comme je vient de proposer, avec l'ajour de l'incrémentation et que ton code fonctionne parfaitement, même avec refaraîchissement bien qu'il soit un peu lourd, mais ça c'est une autre histoire.

Ciao
Oznog


Réponses

 Aucune réponse à ce message... 
Aucun médias sociaux
X

Trucsweb.com Connexion

Connexion

X

Trucsweb.com Mot de passe perdu

Connexion

X

Trucsweb.com Conditions générales

Conditions

Responsabilité

La responsabilité des Trucsweb.com ne pourra être engagée en cas de faits indépendants de sa volonté. Les informations mises à disposition sur ce site le sont uniquement à titre purement informatif et ne sauraient constituer en aucun cas un conseil ou une recommandation de quelque nature que ce soit.

Aucun contrôle n'est exercé sur les références et ressources externes, l'utilisateur reconnaît que les Trucsweb.com n'assume aucune responsabilité relative à la mise à disposition de ces ressources, et ne peut être tenue responsable quant à leur contenu.

Droit applicable et juridiction compétente

Les règles en matière de droit, applicables aux contenus et aux transmissions de données sur et autour du site, sont déterminées par la loi canadienne. En cas de litige, n'ayant pu faire l'objet d'un accord à l'amiable, seuls les tribunaux canadien sont compétents.

X

Trucsweb.com Trucsweb

X

Trucsweb.com Glossaire

X

Trucsweb.com Trucsweb

X

Trucsweb.com Trucsweb

Conditions

Aucun message!

Merci.

X
Aucun message!
X

Trucsweb.com Créer un compte

Créer un compte

.
@