Une fonction générale d'affichage de la base de données. Les exigences sont les suivantes :
1. Peut afficher les champs spécifiés. Bien entendu, les noms des champs et le texte affiché peuvent être différents.
2. Peut interroger plusieurs champs en même temps, prenant en charge les méthodes de requête floues et précises.
3. Il existe deux modes d'affichage : disposition horizontale et disposition verticale des champs.
4. Peut paginer automatiquement.
5. Peut définir le nombre d'enregistrements à afficher sur chaque page. Eh bien, c'est tout pour les grandes exigences. Selon cette exigence, Ayu a écrit la fonction suivante.
En fait, Ayu a écrit ici deux fonctions : l'une est TABDISP(), qui est utilisée pour afficher le contenu d'une table spécifiée, l'autre est ER(), une petite fonction de gestion des erreurs.
Cette fonction a 5 paramètres (c'est beaucoup). Chaque paramètre doit être saisi avec des données et ne peut pas être vide, sinon une erreur se produira.
1(TAB), le nom de la table à appeler.
2 (DISPFILD), quels champs du tableau doivent être affichés, si les noms de champs sont différents des caractères à afficher, séparez-les par < Par exemple, un certain nom de champ est : IMG, mais il doit être affiché comme : Image sur la page, alors, écrivez simplement Pour IMG<images, s'il y a plusieurs champs, utilisez "," pour séparer chaque champ. Hélas, c'est une longue histoire.
3(FINDFILD), quels champs doivent être interrogés et les noms de champs et les caractères à afficher sont séparés par <.
4(PAGEN), combien d'enregistrements sont affichés sur chaque page.
5(FH), la direction d'affichage Lorsqu'il est S, il est affiché verticalement. Lorsqu'il est H, il est affiché horizontalement.
La valeur de retour de la fonction est vraie lorsqu'il n'y a pas d'erreur, sinon elle est fausse.
Cette fonction n'inclut pas la partie de connexion à la base de données, vous devez donc vous connecter vous-même à la bibliothèque. De plus, pour des applications répétées, vous pouvez enregistrer cette fonction dans un fichier puis inclure ce fichier en cas de besoin.
Jetez un oeil à la fonction suivante : (Ne manquez pas de la lire, je vous donnerai un exemple d'application à la fin)
<%
'Ce qui suit définit une fonction TABDISP() d'affichage des tables, les paramètres TAB, le nom de la table à afficher, DISPFILD, les champs à afficher, FINDFILD, le champ de requête, PAGEN, le numéro affiché par page, fh, le sens d'affichage
'Si l'affichage réussit, la valeur de retour est vraie ; s'il échoue, la valeur de retour est fausse.
'Utiliser, pour séparer plusieurs champs
'Le champ de requête doit être inclus dans le champ d'affichage.
'Si le nom du champ est différent du nom à afficher, utilisez < pour séparer le nom du champ et le nom affiché. Le nom du champ et le caractère d'affichage doivent être séparés par < pour que le champ soit recherché.
La direction d'affichage FH est "H" pour un affichage horizontal, "S" pour un affichage vertical, sensible à la casse.
FONCTION TABDISP(TAB,DISPFILD,FINDFILD,PAGEN,FH)
En cas d'erreur, reprendre ensuite
SI DISPFILD="" ALORS DISPFILD="*"
SI PAGEN="" ALORS PAGEN=15
DISPFILD1=DISPFILD&","
findfild1=findfild&","
dim findl(10),findr(10)
je1=1
faire pendant que instr(findfild1,",")<>0
étoile=instr(findfild1,",")
findl(i1)=gauche(findfild1,star-1)
trouverr(i1)=trouver(i1)
fildbak=findl(i1)
findl(i1)=gauche(fildbak,instr(fildbak,"<")-1)
findr(i1)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
findfild1=droite(findfild1,len(findfild1)-star)
i1=i1+1
boucle
Response.Write "<table border='0' width='100%' Cellpacing='0'><tr><form method='GET'>"
Réponse.Écrivez "<TD > " 'width='50%'
SI SESSION("FLMENULBUP")<>"" ALORS
Response.Write "Colonne actuelle : <A HREF='FLMEN.ASP?MENULB="&SESSION("FLMENULBUP")&"'>"&MID(SESSION("FLMENULBUP"),4,200)&"</A>"
FIN SI
SI SESSION("flmenulb")<> SESSION("FLMENULBUP") ALORS
Response.Write " >> <A HREF='FLMEN.ASP?menulb="&SESSION("FLMENULBUP")&"&LB="&SESSION("flmenulb")&"'>"&MID(SESSION("flmenulb"),4 200 )&"</A>"
FIN SI
Response.Write "</TD><td align='right' ></td><td align='right'><table border='0' Cellspacing='0' cellpadding='0'> "
Response.Write "<tr><td rowspan='2'><img src='img/SEARCH.GIF' width='50'> </td>"
pour i3=1 à i1-1
Réponse.Écrivez "<td>"&findr(i3)&":</td>"
suivant
Réponse.Écrivez "</tr><tr>" '<td></td>
pour i2=1 à i1-1
Response.Write "<td><input type='text' name='key_word"&i2&"' size='8' value=''></td>"
next
Response.Write "<tr></table></td><td width='20%'> <input type='checkbox' name='find_fr' value='yes'>Précis<input type='submit ' value='Démarrer' name='B_FIND'></td>"
Réponse.Écrivez "</form> </tr></table>"
find_fr=request("find_fr")
TJ=""
urllr="&find_fr="&find_fr
findlrdisp=""
POUR I3=1 À I1-1
TJ1=requête("KEY_WORD"&I3)
urllr=urllr&"&key_word"&i3&"="&tj1
SI TJ1=FINDR(I3) OU TJ1="" ALORS
TJ1=""
AUTRE
si find_fr<>"oui" alors
findlrdisp=findlrdisp&findr(i3)&"Contient ""&TJ1&"" "
tj1=" ET "&findL(I3)&" comme '%"&TRIM(TJ1)&"%' "
autre
findlrdisp=findlrdisp&findr(i3)&"是""&TJ1&""
tj1=" ET "&FINDL(I3)&" = '"&TRIM(TJ1)&"' "
finir si
FIN SI
TJ=TJ&TJ1
SI TJ="" ALORS
TOPSN=" TOP 300 "
AUTRE
TOPSN=""
FIN SI
SUIVANT
dim fild(35),dispfil(35),dispfildlr
dispfildlr=""
je = 1
dispfild1=dispfild1
faire pendant que instr(dispfild1,",")<>0
étoile=instr(dispfild1,",")
fild(i)=gauche(dispfild1,star-1)
dispfil(i)=fild(i)
si instr(fild(i),"<")<>0 alors
fildbak=fild(i)
fild(i)=gauche(fildbak,instr(fildbak,"<")-1)
dispfil(i)=right(fildbak,len(fildbak)-instr(fildbak,"<"))
finir si
dispfildlr=dispfildlr&fild(i)&","
dispfild1=droite(dispfild1,len(dispfild1)-star)
je=je+1
boucle
dispfildlr=gauche(dispfildlr,len(dispfildlr)-1)
SQL="SELECT "&topsn&" id,"&DISPFILDlr&" FROM "&TAB&" WHERE ID<>-1 "&tj&" trier par -ID"
'Réponse.Écrire SQL
session("tabsql")=sql
Définir rs=Server.CreateObject("ADODB.RecordSet")
rs.Open sql, conn, 1,3
sinon rs.eof alors
pagesn=requête("pagesn")
si pagesn<=0 ou pagesn="" alors pagesn=1
rs.pagesize=page
pagezs=rs.pagecount
SI cint(PAGESN)>pagezs ALORS pagesn=PAGEZS
zs=rs.recordcount
page=(pagesn-1)*pagen
rs.déplacer la page,1
if findlrdisp<>"" then Response.Write "Après la recherche, les enregistrements de "&findlrdisp&" sont les suivants :"
Réponse.Écrivez "<table border='0' width='90%'>"
si zs>=300 et topsn<>"" alors
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Le nombre total est très grand. Les premiers éléments "&ZS&" sont actuellement affichés, divisés dans les pages "&PAGEZS&". Maintenant, voici la page "&PAGESN&"</td>".
autre
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Il y a des éléments "&ZS&" au total, divisés en pages "&PAGEZS&". la page est "&PAGESN&" page</td>"
finir si
Réponse.Écrivez "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>Page précédente</A></td>"
Réponse.Écrivez "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>Page suivante</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>Aller à la page"
Response.Write "<input type='text' name='PAGESN' size='2'>Page<input type='submit' value='GO' name='B1'></td></form> "
Réponse.Écrivez "</tr></table> "
si fh="H" ALORS
Response.Write " <table border='0' width='100%' Cellpacing='1' cellpadding='0'>"
Response.Write " <tr bgcolor='#EDBAA5' align='center'> "
pour ii=1 à i-1
Réponse.Écrivez "<td>"&dispFIL(ii)&"</td>"
suivant
Réponse.Écrivez "</tr>"
pour iii=1 à pagen
Réponse.Écrivez "<tr bgcolor='#FFFAEE'>"
POUR II=1 À I-1
Réponse.Écrivez "<td>"&RS(fild(II))&"</td>"
SUIVANT
Réponse.Écrivez "</tr>"
RS.MOVENEXT
si rs.eof alors quittez pour
suivant
Réponse.Écrivez "</table>"
AUTRE
Response.Write " <table border='0' width='100%' Cellpacing='1' cellpadding='0'>"
pour iii=1 à pagen
POUR II=1 À I-1
Response.Write "<tr><td bgcolor='#EDBAA5' ALIGN='RIGHT' WIDTH='20%'>"&dispFIL(ii)&":</td><td bgcolor='#FFFAEE'>"&RS (fild(II))&"</td></tr>"
SUIVANT
Response.Write "<tr height='1'><td bgcolor='#CFBA9E' colspan='2' ALIGN='RIGHT' WIDTH='20%'> </td></tr>"
RS.MOVENEXT
si rs.eof alors quittez pour
suivant
Réponse.Écrivez "</table>"
FIN SI
rs.fermer
Réponse.Écrivez "<table border='0' width='90%'>"
si zs>=300 et topsn<>"" alors
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Le nombre total est très grand. Les premiers éléments "&ZS&" sont actuellement affichés, divisés dans les pages "&PAGEZS&". Maintenant, voici la page "&PAGESN&"</td>".
autre
Response.Write "<tr> <form method='POST' action='?"&urllr&"'><td width='54%'>Il y a des éléments "&ZS&" au total, divisés en pages "&PAGEZS&". la page est "&PAGESN&" page</td>"
finir si
Réponse.Écrivez "<td width='11%' align='center'><a href='?PAGESN="&PAGESN-1&urllr&"'>Page précédente</A></td>"
Réponse.Écrivez "<td width='11%' align='center'><a href='?PAGESN="&PAGESN+1&urllr&"'>Page suivante</A></td>"
Response.Write "<td width='24%' ALIGN='RIGHT'>Aller à la page"
Response.Write "<input type='text' name='PAGESN' size='2'>Page<input type='submit' value='GO' name='B1'></td></form> "
Réponse.Écrivez "</tr></table> "
autre
Réponse.Écrivez « Aucun enregistrement approprié trouvé »
finir si
si euh() alors
tabdisp=Faux
autre
tabdisp=Vrai
finir si
END FUNCTION
Fonction Er() 'Fonction de gestion des erreurs
Si Err.Number = 0 Alors
Euh=Faux
Autre
Err.Effacer
Euh=Vrai
Fin si
Fonction de fin
%>
J'ai enfin fini de lire la fonction...
Vous êtes un peu fatigué, mais peu importe que vous regardiez attentivement ou non, ajustez-le. Voici un exemple d'application.
Tout d'abord, nous enregistrons la fonction précédente, qui est la partie comprise entre <% et %>, dans un fichier appelé TABDISP.ASP.
Le code est le suivant :
Afficher un tableau de liste d'emplois, nom du tableau : ZG
Il y a plusieurs champs dont ID, nom, titre du poste, TEL BP, DZ (adresse
<%
).
. . . . . .
La connexion à la base de données est ignorée ici et ne sera pas écrite.
%>
<!--#include file="TABDISP.asp"-->
<%
DISP="nom, position, titre, TEL<téléphone, BP<pagination, DZ<adresse"
FIND="Nom<Nom, Position<Titre, DZ<Adresse"
PAGEN="15"
FH="H"
TAB="ZG"
SI NON TABDISP(TAB,DISP,FIND,PAGEN,FH) ALORS
réponse.write "Une erreur s'est produite",
FIN SI
SET CONN = RIEN
%>
Donnez simplement un nom de fichier au contenu ci-dessus et tout ira bien.