Buono sconto 4% su Toner e Cartucce agli utenti AZpoint. SU Iomiricarico.it!!
Articolo a cura di Luca Ruggiero - http://www.lukeonweb.net/
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.
|