Estrarre i dati da due tabelle in relazione con Asp

Siti dinamici con ASP
Impara a creare siti dinamici professionali con ASP

Scritto da Luca Ruggiero nella sezione Asp

La struttura di un'applicazione, di tipo Web o meno, in virtù della teoria dei database relazionali, consiglia di suddividere in più tabelle i dati che saranno oggetto dei risultati delle query.

Immaginiamo di avere un'area di accesso privato con username e password, ed una serie di informazioni personali relative agli utenti. Una soluzione intelligente sarebbe quella di inserire in una tabella username e password, ed in una seconda i dati personali.

Creiamo quindi due tabelle: login che conterrà i campi username e password, e la tabella utenti che conterrà i dati degli utenti, ad esempio i campi nome e cognome. Naturalmente le due tabelle saranno munite di un campo id di tipo contatore.

Inseriamo una serie di dati nelle due tabelle, in modo che l'esempio di codice che vedremo tra poco potrà produrre dei risultati.

Ecco il codice del file index.asp che andiamo a creare:

<%@LANGUAGE = JScript%>
<%
   var username = new String(Request.QueryString("username"));

   var Cn = new ActiveXObject("ADODB.Connection");
       Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("database.mdb"));

   var joinSql = Cn.Execute(
   "SELECT * FROM login INNER JOIN utenti ON login.id = utenti.id WHERE username = '" + username + "'"
   );
%>
<html>
 <head>
  <title>Join - www.lukeonweb.net</title>
  <basefont size="2" face="Verdana">
 </head>
<body>

<ul>
  <li><a href="index.asp?username=lukeonweb">lukeonweb</a></li>
  <li><a href="index.asp?username=pippo">pippo</a></li>
</ul>

<%
   with (Response)
   {
      Write("Nome: " + joinSql("nome") + "<br>");		
      Write("Cognome: " + joinSql("cognome") + "<br>");		
   }
%>

</body>
</html>
<%Cn.Close()%>
Le operazioni effettuate non sono diverse da una qualsiasi pagina che recupera dei dati da un database in base ad una query, effettuata grazie ad un parametro che passiamo in una QueryString. La differenza sostanziale è sulla stringa Sql che riporto nella sua fase essenziale:
SELECT * FROM login INNER JOIN utenti ON login.id = utenti.id
In questo modo abbiamo messo in relazione le due tabelle col campo id. L'unica seccatura, la cui risoluzione è parte della bravura dello sviluppatore, è mantenere sempre i dati corrispondenti nelle due tabelle con lo stesso id progressivo, quindi, in fase di aggiornamento o cancellazione dei dati, è necessario compiere dette operazioni parallelamente sulle due tabelle.

I più cliccati della sezione Asp

:: Un semplice form mail in Asp (52.078)

:: Creazione di un Guestbook in Asp (50.971)

:: Creazione di un'area di accesso riservato in Asp (45.575)

:: Connessione ad un database MySql con Asp (25.227)

:: Connessione ad un database Microsoft SQL Server con Asp (24.398)

:: Asp e database (23.285)

:: Differenza tra i metodi get e post e recupero dei dati, attraverso Asp (22.643)

:: Una semplice area di accesso riservato senza DB in Asp (21.549)

:: Riscrivere le URL con Asp (19.946)

:: Creazione di un Sondaggio in Asp (19.221)

IN EVIDENZA
DOWNLOAD