Un visualiseur de base (access & mysql)

Description

Voila, j'ai pris une petite heure avant de me coucher pour vous faire ce petit script qui peut s'avérer utile surtout quand on a juste un navigateur sous la main.
Ce script vous permet de visualiser les tables d'une base, les propriétés de la connexion, et le contenu des tables, il permet aussi de trier par colonne de façon croissante ou décroissante.
J'ai essayé avec MySQL et ACCESS et cela semble passer, je pense que pour une BASE SQL Serveur, cela devrait marcher (si vous avez testé et que ça marche dites-le moi :) )
N'oubliez pas de changer les paramètres dans le haut dans "La Config"
Vous verrez, j'y ai intégré ma fonction de paging que j'avais déposé il y a qq jours sur le site.

Source / Exemple :


<%
	Option Explicit
	Response.Buffer = True
%>
<!--#include file="adovbs.inc"-->
<%
	' ************************************************************
	' Code Réalisé par Nicolas SOREL ( Nix pour les intimes :) )
	' Pour ASPFr.com
	' Retrouvez d'autres scripts ASP sur www.ASPFr.com
	' Vous avez le droit d'utiliser ce script dans vos pages mais si vous souhaitez
	' l'exposer sur un autre site de programmation merci de me contacter 
	' (contact@vbfrance.com)
	' ************************************************************
%>
<html>
<head>
	<title>Visualiseur de table d'une base de données</title>
</head>
<body bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#0000FF" alink="#FF0000">
<font face="Verdana" size="2">
<%

	Dim NomPage, MonDSN, MaConnexion, ServerAddress, DBName, UID, Password
    Dim NumPageEnCours, TaillePage, MaxPages, MaxEnrgs, CombienDeRecs, MonObjRS
	Dim NbPropriete, MaReqSQL, NbChamp, i, j, AfficheTableSys, AfficheTable
	
    NumPageEnCours = Request("quelpage")
    If NumPageEnCours = "" then NumPageEnCours = 1
    TaillePage = Request("taillepage")
    If  TaillePage = "" Then TaillePage = 16
    ' Si vous souhaitez mettre vous même la taille maxi du nombre d'enregeistrement par page
    ' mettez en commentaire les 2 lignes précédentes et mettez par ex : TaillePage = 16

' *****************************************************
' ***************  La Config **************************
' *****************************************************

' Les choses paramètrablent sont ici :)
	NomPage = Request.ServerVariables("SCRIPT_NAME") ' Nom du script (si vous souhaitez changer le nom du fichier ASP
	AfficheTableSys = False ' Si vous souhaitez afficher les tables systèmes, mettez True
	
	' Config pour une Base MySQL
	ServerAddress = "localhost" ' Serveur MySQL
	DBName = "NomDeLaBase" ' Nom de la Base de données
	UID = "VotreLogin" ' Nom d'utilisateur
	Password = "VotreMotDePasse" ' Mot de Passe
	' Construcion de la chaine ODBC pour MySQL
	MonDSN = "driver={MySql};server=" & ServerAddress & ";db=" & DBName & ";user id=" & UID & ";pwd=" & Password & ";option=16386"
	
	' Config pour une base ACCESS
	' Si vous voulez tester avec une base Access, mettez en commentaire les lignes
	' au dessus pour le paramètrage MySQL et "décommenté la ligne suivant en modifiant le nom du fichier
	' MonDSN = "DBQ=" & Server.MapPath("VotreFichierMDB.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"

' *****************************************************
' ***************  FIN Config *************************
' *****************************************************

	Set MaConnexion = Server.CreateObject("ADODB.Connection")
		MaConnexion.ConnectionTimeout = 30	
		MaConnexion.CommandTimeout = 30
		MaConnexion.Open MonDSN

	' Les propriétés de la connexion
	If Request("prop") = "OUI" Then
	%>
<div align="center"><font face="Verdana" size="2"><b><a href="<%=NomPage %>"><< Retour à la liste des tables</a></b></font></div>
<table border="1" cellspacing="0" cellpadding="4" align="center" bordercolor="#000000">
	<tr><td bgcolor="#E0E0E0"><font face="Verdana" size="2"><b>N°</b></font></td><td bgcolor="#E0E0E0"><font face="Verdana" size="2"><b>Propriétés de la connexion</b></font></td><td bgcolor="#E0E0E0"><font face="Verdana" size="2"><b>Valeur</b></font></td></tr>
		<%
		NbPropriete = MaConnexion.Properties.Count 
		For i = 0 to NbPropriete - 1
			%><tr><td><font face="Verdana" size="2"><%=i%></font></td><td><font face="Verdana" size="2"><b><%=MaConnexion.Properties(i).Name%></b></font><td><font face="Verdana" size="2"><%=MaConnexion.Properties(i)%> </font></td></tr><%
		Next
		%>
</table>
<div align="center"><font face="Verdana" size="2"><b><a href="<%=NomPage %>"><< Retour à la liste des tables</a></b></font></div>
<%
	End If
	
	' La liste des tables
	If Request("table") = "" And Request("prop") = "" Then
%>
	<table border="1" cellspacing="0" cellpadding="5" align="center" bordercolor="#000000">
		<tr>
			<td align="center" bgcolor="#E0E0E0"><font face="Verdana" size="2"><b>Liste des tables de la base "<%=MaConnexion.Properties(0)%>"<br>
			Type de base : <%=MaConnexion.Properties(11)%></b></font></td>
		</tr>
		<%
		Set MonObjRS = MaConnexion.OpenSchema(adSchemaTables)
		Do While Not MonObjRS.EOF
			AfficheTable = False
			If AfficheTableSys = False Then
				If MonObjRS.Fields("TABLE_TYPE") <> "SYSTEM TABLE" Then
					AfficheTable = True
				End If
			Else
				AfficheTable = True
			End If
			If AfficheTable = True Then Response.write "<tr><td><font face=""Arial"" size=""2""><b><A HREF=""" & NomPage & "?table=" & MonObjRS.Fields("TABLE_NAME") & """>" & MonObjRS.Fields("TABLE_NAME") & "</a> ( type : " & MonObjRS.Fields("TABLE_TYPE") & ")</font></td></tr>"
			MonObjRS.MoveNext
		Loop
		%>
		<tr>
			<td align="center" bgcolor="#008000"><b>
				<a href="<%=NomPage%>?prop=OUI"><font face="Verdana" size="2" color="#FFFFFF">Liste des propriétés de la connexion</font></a></b>
			</td>
		</tr>
	</table>
<%
	End If

	' Affiche le contenu d'une table
	If Request("table") <> "" Then
		Set MonObjRS = Server.CreateObject("ADODB.RecordSet")
	    MonObjRS.cursorlocation = aduseclient
	    MonObjRS.cachesize = 5
		MaReqSQL = "SELECT * FROM " & Request("table")
		If Request("ASC") <> "" Then
			' Si un champ à été cliqué pour un affichage Ascendant
			MaReqSQL = MaReqSQL & " ORDER BY " & Request("ASC") & " ASC"
		ElseIf Request("DESC") <> "" Then
			' Si un champ à été cliqué pour un affichage Descendant
			MaReqSQL = MaReqSQL & " ORDER BY " & Request("DESC") & " DESC"
		End If
		MaReqSQL = MaReqSQL & ";"
		MonObjRS.Open MaReqSQL, MaConnexion
	    MonObjRS.pagesize = TaillePage
	    MaxPages = CInt(MonObjRS.pagecount)
	    MaxEnrgs = CInt(MonObjRS.pagesize)
	    If Not MonObjRS.EOF Then MonObjRS.absolutepage = NumPageEnCours
	    CombienDeRecs = 0
		NbChamp = MonObjRS.Fields.count
%>
<table border="0" cellspacing="0" cellpadding="4" align="center">
	<tr>
		<td><font face="Verdana" size="2"><b><a href="<%=NomPage %>"><< Retour à la liste des tables</a></b></font></td>
		<td><font face="Verdana" size="2">Base : <b><%=MaConnexion.Properties(0)%></b></font></td>
		<td><font face="Verdana" size="2">Table : <b><%=request("table")%></b> qui a <%=NbChamp%> champ(s)</font></td>
	<%If Request("ASC") <> "" Then%>
			<td><font face="Verdana" size="2">Tri ascendant sur le champ : <b><%=request("ASC")%></b></font></td>
	<%ElseIf Request("DESC") <> "" Then%>
			<td><font face="Verdana" size="2">Tri descendant sur le champ : <b><%=request("DESC")%></b></font></td>
	<%End If%>
	</tr>
</table><br>
	<table width="100%" border="1" cellspacing="0" cellpadding="2" align="center" bordercolor="#000000">
		<tr>
		<%
			For j = 0 To NbChamp - 1
				Response.write "<td bgcolor=""#E0E0E0""><font face=""Verdana"" size=""2""><b>" & MonObjRS.Fields(j).Name & "</b><br><font size=""1""><b><A HREF=""" & NomPage & "?table=" & Request("table") & "&ASC=" & MonObjRS.Fields(j).Name & """>ASC</A>/<A HREF=""" & NomPage & "?table=" & Request("table") & "&DESC=" & MonObjRS.Fields(j).Name & """>DESC</A></b></font><br>( type : " & MonObjRS.Fields(j).Type & ")</font></td>"
			Next
		%>
		</tr>
		<%
	    Do UNTIL MonObjRS.EOF OR CombienDeRecs >= MaxEnrgs
			Response.write "<tr>"
			For j = 0 To NbChamp - 1
				Response.write "<td><font face=""Arial"" size=""2"">" & MonObjRS.Fields(j).Value & "</font></td>"
			Next
			Response.write "</tr>"
	        CombienDeRecs = CombienDeRecs + 1
			MonObjRS.MoveNext
		Loop
		%>
		</tr>
	</table>
	<%Call PagingBar()%>
<%
	End If
%>
<br><br><div align="right"><font face="Verdana" size="1">Réalisé par N.SOREL<br>D'autres Scripts ASP sur <a href="http://www.aspfr.com/">ASPFr.com</a></font></div>
</font>
</body>
</html>
<%
	On Error Resume Next
	MonObjRS.Close
	Set MonObjRS = Nothing
	MaConnexion.CLose
	Set MaConnexion = Nothing
%>
<%
Sub PagingBar()
    Dim StrHTML
    Dim PageEnCours
    Dim CompteurFin, CompteurDebut
    Dim i, LesVars
    Dim Item
	
    If MaxPages <> 0 Then
        PageEnCours = Request.ServerVariables("script_name")
        Response.Write "<table rows=""1"" cols=""1"" width=""97%""><tr>"
        Response.Write "<td>"
        Response.Write "<font size=""2"" color=""#000000"" face=""Verdana, Arial,Helvetica, sans-serif"">"
        LesVars = ""
        For each Item In Request.Form
            If LCase(Item) <> "quelpage" And LCase(Item) <> "taillepage" Then
                LesVars = LesVars & "&" & LCase(Item) & "=" & server.URLencode(Request.Form(Item))
            End If
        Next
        For each Item In Request.QueryString
            If LCase(Item) <> "quelpage" And LCase(Item) <> "taillepage" Then
                LesVars = LesVars & "&" & LCase(Item) & "=" & server.URLencode(Request.QueryString(Item))
            End If
        Next
        If (NumPageEnCours mod 10) = 0 Then
            CompteurDebut = PageEnCours - 9
        Else
            CompteurDebut = NumPageEnCours - (NumPageEnCours mod 10) + 1
        End If

        CompteurFin = CompteurDebut + 9
        If CompteurFin > MaxPages Then CompteurFin = MaxPages
        If CompteurDebut <> 1 Then
            StrHTML = "<a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & 1
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>Première page</a> : "
            Response.Write StrHTML
            StrHTML = "<a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & (CompteurDebut - 1)
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>10 pages Précédente</a> <br>"
            Response.Write StrHTML
        End If
        Response.Write "["
        
        For i = CompteurDebut To CompteurFin
            If cstr(i) <> Cstr(NumPageEnCours) Then
                StrHTML = "<a href=""" & PageEnCours
                StrHTML = StrHTML & "?quelpage=" & i
                StrHTML = StrHTML & "&taillepage=" & TaillePage
                StrHTML = StrHTML & LesVars
                StrHTML = StrHTML & """>Page " & i & "</a>"
            Else
                StrHTML = "<b>Page " & i & "</b>"
            End If
            Response.Write StrHTML

            If i <> CompteurFin Then Response.Write " "
        Next
        Response.Write "]"

        If CompteurFin <> MaxPages Then
            StrHTML = "<br><a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & (CompteurFin + 1)
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>10 pages Suivantes</a>"
            Response.Write StrHTML
            StrHTML = " : <a href=""" & PageEnCours
            StrHTML = StrHTML & "?quelpage=" & MaxPages
            StrHTML = StrHTML & "&taillepage=" & TaillePage
            StrHTML = StrHTML & LesVars
            StrHTML = StrHTML & """>Dernière page</a>"
            Response.Write StrHTML
        End If
        Response.Write "<br></font>"
        Response.Write "</td>"
        Response.Write "</table>"
    End If
End Sub
%>

Conclusion :


J'essayerai de rajouter des options genre exportation d'une table en CSV etc...
Ha oui, il vous faut le fichier adovbs.inc inclus dans le ZIP

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.