Adesso abbiamo le News e il Feedback. Il concetto delle News lo possiamo applicare in molte maniere. Potremmo permettere, ad esempio, che i nostri utenti le inseriscano da soli. Diciamo che invece di news sono degli avvenimenti pubblici ed è nell'interesse del cliente mantenerli in regola. Credi di saperlo fare questo?
Cosa bisogna fare?
- costruire una form per l'applicazione del cliente
- entrare I dati del cliente nelil database
- generare la password e mandargliela per email
- provvedere il cliente con un attrezzo per mantenere le sue pagini (solo le sue)
Ecco la form che non presenta nessun problema
<%
'--------------------------------------------------------
'Purpose: Raccogli i dati del cliente
'Date: 7 Aprile 2001
'Commenti:
'--------------------------------------------------------
%>
<html>
<head>
<title>Dati del cliente</title>
Qui adoperiamo Javascript per validare il contenuto della form. Fare queste cose sul browser è molto più logico che dover fare un altro salto sul server
<script language="JavaScript">
<!--
function submitIt(theform) {
if (theform.nome.value == "") {
alert("Per favore entra il tuo nome...")
theform.nome.focus()
}
if (theform.cognome.value == "") {
alert("Per favore entra il tuo cognome...")
theform.cognome.focus()
return false
}
if (theform.email.value == "") {
alert("Per favore entra il tuo email...")
theform.email.focus()
return false
}
}
-->
</script>
</head>
e qui mettiamo semplicemente il focus sulla prima text box, ossia il nome
<body OnLoad="Javascript:document.frm_client.nome.focus();">
<div align="center">
Quando viene attivato l'evento OnSubmit chiamiamo la routine in Javascript che controllo se le text boxes che vogliamo noi sono state riempite o no.
<form ACTION="metti_aggiungi_cliente.asp" name="frm_cliente" method="post" OnSubmit="return submitIt(this)">
<table width="60%" border="0" cellpadding="6" cellspacing="0" bgcolor="darkorange">
<tr>
<th align=left><font color="white">Per favore entra i necessari dati:</font></th>
</tr>
<tr>
<td align=center>
<table width="100%" border="0" cellpadding="6" cellspacing="6" bgcolor="#ffcc99">
<tr>
<td align="right">Nome:</td>
<td><input type="text" name="nome" size=20></td>
</tr>
<tr>
<td align="right">Cognome:</td>
<td><input type="text" name="cognome" size=20></td>
</tr>
<tr>
<td align="right">Your email:</td>
<td><INPUT TYPE="Text" name="email" size=40></td>
</tr>
</table>
</td>
</tr>
<tr>
<td align="center"><INPUT TYPE="Submit" name="submit" value="Manda">
<input type="Reset" value="Cancella"></td>
</tr>
</table>
</form>
</div>
</body>
</html>
Ed ecco metti_aggiungi_cliente.asp che
- raccoglie i dati
- genera la password
- inserisce i dati nel database
- manda un email al cliente
<%
Option Explicit
'------------------------------------------------------------------------
'Description : raccoglie i dati del cliente
'Comments :
'Date Built : 7 Aprile 2001
'------------------------------------------------------------------------
Dim nome, cognome, email, password, data_ricevuto
Dim strConn, objConn, objRs, strsql
%>
<!--#include file="adovbs.inc"-->
<%
'costruisci password
password = genera_pwd()
'vendemmia la form
nome = Request.Form("nome")
cognome = Request.Form("cognome")
email = Request.Form("email")
data_ricevuto = Date()
'metti dentro al database
strConn = Application("dbconn")
strsql = "INSERT INTO tbl_login (nome, cognome, login1, password1, data_ricevuto, email)"
strsql = strsql & " Values('"
strsql = strsql & nome & "','"
strsql = strsql & cognome & "','"
strsql = strsql & nome & "','"
strsql = strsql & password & "',#"
strsql = strsql & data_ricevuto & "#,'"
strsql = strsql & email & "')"
%>
Non so se hai notato che ho dovuto cambiare il nome del login e password nella tbl_login. Li ho semplicemente cambiati con un 1. Il perché? Quando ho usato questa pagina mi ha data un errore nella query ma la sintassi era giusta. Cosi ho fatto un <% response.write strsql %> ho guardato alla query, l'ho inserita nel motore query di Access e mi ha funzionato alla perfezione. Deve avere a che fare con parole riservate. È sempre meglio usare notazioni giuste per le variabili.
<%
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open strConn
Set objRs = objConn.Execute(strsql)
objConn.close
set objConn = Nothing
'molte grazie...
Response.write "<div align=center>"
Response.write "<br><br><br><br><br><br>"
Response.write "<font size=+1 color=midnightblue face=verdana>"
Response.write "Il tuo nome è stato aggiunto al nostro database.<br>"
Response.write "La password ti arrivera' in un minuto... via email. <br>"
Response.write "Grazie per l'aiuto."
Response.write "</font></div>"
'e via la posta
call manda_posta(nome,password,email)
'pulisci e chiudi
objRs.close
Set objRs = Nothing
'--------------------------------------------------------------------
Function genera_pwd()
'---------------------------------------------------------------------
' Description : Generates a password
' Date Created : 11-04-2001
' Comment :
'---------------------------------------------------------------------
Dim i, x
Dim chars(36)
Dim pwd(8)
x = 0
'a-z
for i = 97 to 122
chars(x) = chr(i)
x = x + 1
next
'0-9
for i = 48 to 57
chars(x) = chr(i)
x = x + 1
next
password = ""
For i = 1 to 8
Randomize
password = password & chars(Int(UBound(chars) - LBound(chars) + 1) * Rnd + LBound(chars))
next
genera_pwd = password
end Function
'------------------------------------------------------
Sub manda_posta(nome,password,email)
'-------------------------------------------------------
'Purpose: manda la email
'Date: 10 March 2001
'Commenti:
'--------------------------------------------------------
Dim objMail, messaggio
messaggio = "Grazie per ......"
messaggio = messaggio & VBcrlf & "login = " & nome
messaggio = messaggio & VBcrlf & "password = " & password
Set objMail = Server.CreateObject("CDONTS.NewMail")
objMail.From = "latuaemail"
objMail.To = email
objMail.Subject = "Grazie per..."
objMail.Body = messaggio
objMail.importance = 0
objMail.Send
Set objMail = Nothing
end sub
%>
L'unica cosa da fare qui è costruire le pagine che permettono ai tuoi utenti di mantenere i loro dati.
Di sicuro questo ormai lo puoi fare anche da solo. In pratica è quasi uguale alle news. L'unica cosa è che devi organizzare le query con
(where id = id) così che ogni cliente ha accesso alla sua area soltanto. Forse è sempre meglio se passi questo valore nell'oggetto
Request.QueryString da una pagina all'altra.