Come accennato, lo scopo di questa lezione è quello di capire come si crea la query per la lettura dei messaggi in base alla pagina in cui l'utente si trova. Riproponiamo il codice della query:
073:
074: dim strSql
075: strSql = "SELECT messaggi.id_msg, messaggi.dt_invio, messaggi.titolo,
utenti.login "
076: strSql = strSql & " FROM messaggi, utenti "
077: strSql = strSql & " WHERE messaggi.id_desti='"&intUser&"'
"
078: strSql = strSql & " AND messaggi.id_mitt = utenti.id_user
"
079: strSql = strSql & " LIMIT " & intPartenza &","&intMessaggi
080:
La stringa sql appena proposta ha lo scopo di estrarre dalla tabella messaggi i campi id_msg, dt_invio ed il titolo del messaggio; dalla tabella utenti estrae il campo login.
075: strSql = "SELECT messaggi.id_msg, messaggi.dt_invio, messaggi.titolo,
utenti.login "
076: strSql = strSql & " FROM messaggi, utenti "
Ora dobbiamo capire le condizioni da imporre per estrarre i messaggi corretti. Prima di dar questa spiegazione è necessario rinfrescare la memoria riproponendo la struttura delle due tabelle del database interessate.
Tabella
Messaggi |
|||
Name
|
Type
|
Lenght/set
|
Default
Value |
id_msg | int |
10
|
-
|
id_mitt | int |
10
|
-
|
id_desti | int |
10
|
-
|
dt_invio | varchar |
50
|
-
|
titolo | varchar |
50
|
-
|
corpo | text |
-
|
-
|
Tabella
utenti |
|||
Name
|
Type
|
Lenght/set
|
Default
Value |
id_user | int |
10
|
-
|
login | varchar |
20
|
-
|
codice | varchar |
20
|
-
|
varchar |
50
|
-
|
Se ricordate le lezioni precedenti, avrete di sicuro capito il perché ho reso in grassetto il campo id_desti della tabella messaggi e il campo id_user della tabella utenti. Ora lo rispiego in modo da rinfrescare il concetto. Il campo utenti.id_user è il valore univoco della tabella utenti e identifica tramite numero il nostro utente. All'interno della tabella messaggi, il valore univoco è l'id del messaggio (id_msg). Gli altri due id che compaiono (id_mitt, id_dest) corrispondono al codice id (ricavato dalla tabella utenti) del mittente e del destinatario del messaggio. Dopo questo breve ripasso, possiamo introdurre la clausola WHERE:
077: strSql = strSql & " WHERE messaggi.id_desti='"&intUser&"'
"
078: strSql = strSql & " AND messaggi.id_mitt = utenti.id_user
"
Come prima richiesta si effettua la ricerca di tutti i messaggi che all'interno del campo messaggi.id_desti contengono il numero univoco dell'utente.
005: dim intUser
006: intUser = request.cookies("messaggistica")("iduser")
Le due righe appena proposte, servono per ricordare da dove proviene il valore contenuto nella variabile intUser. Il cookies viene scritto all'interno della pagina di registrazione utente prima di effettuare il redirect alla pagina messaggi.asp.
Ora veniamo alla seconda clausola della stringa SQL :
078: strSql = strSql & " AND messaggi.id_mitt = utenti.id_user
"
Questa seconda clausola non fa nient'altro che effettuare una ricerca di dove il campo id_mitt della tabella messaggi è uguale al campo id_user della tabella utenti
Ora vedremo come si utilizza il dato ricavato precedentemente per mostrare i messaggi in base alla pagina in cui ci si trova.
079: strSql = strSql & " LIMIT " &
intPartenza &","&intMessaggi
Nella riga appena proposta, è possibile notare la presenza di un nuovo elemento: LIMIT.
Il comando LIMIT ha lo scopo di limitare i risultati estratti ad intMessaggi a partire da intPartenza. Tradotto in parole semplici significa che se la mia query SQL estrae 100 record, il comando li riduce a 10 record (intMessaggi) a partire dal valore contenuto in intPartenza (si ricorda che il valore intPartenza è calcolato sia sul numero di messaggi da mostrare che sulla pagina in cui ci si trova).