|
ascolipiceno
New Member

Città: ascoli piceno
44 Messaggi |
Inserito il - 08/02/2007 : 09:34:49
|
Salve Volevo fare una pagina web per il mio sito intitolata libro degli ospiti usando asp+access ma non ci sono riuscito. Ho seguito quanto segue :
GUEST.MDB Anche in questo caso utilizziamo un database di Ms Access (97 o 2000) che dovrà contenere una tabella (di nome ‘guest’) con i seguenti campi: o id (ovvero il campo contatore) o nome (campo ‘testo’ che conterrà il nome del visitatore) o cognome (campo ‘testo’ in cui, se inserito nel modulo, verrà memorizzato il cognome) o email (campo ‘testo’ che conterrà il suo indirizzo email) o homepage (campo ‘testo’ che conterrà in cui, se se inserito nel modulo, verrà memorizzato l’indirizzo del sito del visitatore) o commenti (campo ‘memo’ in cui saranno inseriti i commenti del visitatore) FIRMA.HTM Questo è il modulo che il visitatore compila per lasciare un commento nel guestbook. Lo possiamo creare normalmente con qualsiasi editor html, avendo cura di inserire un form che faccia riferimento alla pagina ‘registra.asp’ con il metodo ‘post’. Tale modulo dovrà contenere i seguenti campi: o campo testo che chiameremo ‘form_nome’ o campo testo che chiameremo ‘form_cognome’ o campo testo che chiameremo ‘form_email’ o campo testo che chiameremo ‘form_homepage’ o campo testo a scorrimento che chiameremo ‘form_commenti’ Di tutti questi campi gli unici due che consideriamo obbligatori sono il campo ‘form_nome’ e il campo ‘form_commenti’ Il codice html di questa pagina potrebbe essere il seguente: <html> <body> <form method="POST" action="registra.asp"> <p>Nome<br> <input type="text" name="form_nome" size="20"></p> <p>Cognome<br> <input type="text" name="form_cognome" size="20"></p> <p>Email<br> <input type="text" name="form_email" size="20"></p> <p>Homepage<br> <input type="text" name="form_homepage" size="20"></p> <p>Commenti<br> <textarea rows="2" name="form_commenti" cols="20"></textarea></p> <p><input type="submit" value="Invia" name="B1"><input type="reset" value="Reimposta" name="B2"></p> </form> </body> </html> FIRMATO.HTM Una volta compilato il modulo viene caricata una pagina di conferma, 'firmato.htm' appunto. Si tratta di un semplice file html che ringrazia il visitatore per aver firmato il nostro guestbook. <p align="center">Grazie per aver firmato il nostro libro degli ospiti.</p> <p align="center">Arrivederci!</> REGISTRA.ASP Una volta compilato il modulo presente nella pagina appena create, viene caricata la pagina ‘registra.asp’ che, innanzitutto prende i dati dal modulo (mediante la funzione ‘request.form’ che già abbiamo visto) e li memorizza nella relative variabili <% dim nome1 dim cognome1 dim email1 dim homepage1 dim commenti1 nome1 = request.form("form_nome") cognome1 = request.form("form_cognome") email1 = request.form("form_email") homepage1 = request.form("form_homepage") commenti1 = request.form("form_commenti") A questo punto verifichiamo che siano stati compilati i campi ‘form_nome’ e ‘form_commenti’ del modulo stesso. In caso contrario carichiamo la pagina ‘errore.asp’ passandole il parametro ‘error’ (per il codice della pagina ‘error.asp’ si veda più sotto). if nome1 = "" then response.redirect("error.asp?error=1") end if if commenti1 = "" then response.redirect("error.asp?error=2") end if Nel caso in cui invece le variabili nome1 e commenti1 non siano vuote (quindi i relativi campi del modulo sono stati compilati), controlliamo le altre variabili. Infatti abbiamo detto che i due campi citati sono gli unici obbligatori del form: se vuole, l’utente può segnalare il proprio cognome, la propria email e l’indirizzo del proprio sito. Se però non compila questi campi, le relative variabili che abbiamo appena creato saranna vuote. Dato che non è possibile aggiungere un record contenente campi vuoti, occorre sostituire a tali campi vuoti un qualsiasi carattere: per convenzione useremo il simbolo '+' if cognome1 = "" then cognome1 = "+" end if if email1 = "" then email1 = "+" end if if homepage1 = "" then homepage1 = "+" end if Sempre grazie alla funzione ‘if... then... end if’ controlliamo che tali variabili non siano vuote. Nel caso in cui lo siano, le variabili assumeranno come valore il carattere ‘+’. Ora creiamo la solita connessione con il database ‘guest.mdb’ che abbiamo memorizzato nella sottocartella ‘database’ del nostro web Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database/guest.mdb") Dim rs Set rs = Server.CreateObject("ADODB.Recordset") Come già fatto in precedenza, selezioniamo i valori presenti nella cartella ‘guest’ rs.Open "select * from guest", conn, 3, 3 A questo punto creiamo un nuovo record all’interno di tale tabella mediante il comando rs.AddNew Ora scriviamo i dati prelevati dal modulo (e memorizzati nelle variabili) all’interno del database rs.Fields("nome")=nome1 rs.Fields("cognome")=cognome1 rs.Fields("email")=email1 rs.Fields("homepage")=homepage1 rs.Fields("commenti")=commenti1 In questo modo nel campo ‘nome’ verrà inserito il valore preso dalla variabile ‘nome1’ (che a sua volta ha preso i dati dal campo ‘form_nome’ del modulo); nel campo ‘cognome’ inseriremo il valore della variabile ‘cognome1’ e così via... Una volta terminata l’aggiunta dei dati aggiorniamo il database. rs.update Come tutti i guestbook che si rispettano anche noi vogliamo che, ad ogni aggiunta di un commento di un visitatore, ci venga inviata un’email contenente i dati inseriti nel guestbook stesso. In questo modo sapremo in tempo reale quando il nostro ‘libro degli ospiti’ viene firmato. Per l’invio dell’email utilizzeremo il cosidetto Cdonts: nel caso in cui il vostro server non lo supporti dovrete ignorare questa parte e passare direttamente alla chiusura del database. In caso contrario ecco come si presenta il codice da inserire Dim email Set email = CreateObject("CDONTS.NewMail") email.From = email1 email.To = "tuo_indirizzo[No-Spam]email" email.Subject = "Nuova firma sul guestbook" email.MailFormat = 0 email.Body = commenti1 email.Send set email = Nothing Vediamo come è composto: o Dim email: creiamo una variabile che chiamiamo appunto email o email.From = email1: in questo modo l’indirizzo email inserito risulta come mittente del messaggio o email.To = tuo_indirizzo_email : qui va inserito l’indirizzo a cui inviare l’email di segnalazione o email.Subject = "Nuova firma sul guestbook": questo è l’oggetto dell’email che vi giungerà. Come vedete il testo deve essere racchiuso dalle virgolette doppie. o email.MailFormat = 0: qui specifichiamo il formato dell’email (0 = solo testo; 1 = formato html) o email.Body = commenti: questo è il testo dell’email, ovvero il commento del visitatore o email.Send: ora inviamo l’email o set email = Nothing: svuotiamo la variabile utilizzata Una volta inviata l’email chiudiamo recordset e connessione. RS.Close Set RS=Nothing conn.Close Set conn=Nothing Come utlima cosa carichiamo la pagina di conferma response.redirect("firmato.htm") %> ERROR.ASP Questa pagina viene caricata nel caso in cui il visitatore non abbia inserito il proprio nome o i propri commenti all’interno del modulo. Come già abbiamo visto nella sezione ‘verifica di un modulo’, anche qui preleviamo il valore del parametro ‘error’ contenuto nella stringa di collegamento utilizzata per caricare tale pagina e ci regoliamo di conseguenza <% dim error1 error1 = request.querystring("error") if error1 = "1" then response.write("<font face=‘Verdana’ size=‘2’> <b>Attenzione!</b> <br>Non hai compilato il campo NOME!</font>") end if if error1 = "2" then response.write("<font face=‘Verdana’ size=‘2’> <b>Attenzione!</b> <br>Non hai compilato il campo COMMENTI!</font>") end if %> Una volta pronte le pagine per la ‘firma del libro degli ospiti’ non rimane che creare la pagina per consultarlo. Tale pagina avrà nome LEGGI.ASP Per la visualizzazione dei record del database ‘guest.mdb’ useremo un file ASP con paginazione, con dieci risultati per pagina (in modo da non appesantirne troppo la consultazione). Riprendiamo lo stesso codice utilizzato nella precedente sezione ‘Paginazione’ (per la spiegazione del codice e i relativi commenti vi rimando alle pagine precedenti) <!-- #INCLUDE FILE="adovbs.inc" --> <% Dim conn 'La solita variabile di connessione Dim iPageSize 'Numero di record da visualizzare per ogni pagina Dim iPageCount 'Numero di pagine totali che otteniamo dalla query Dim iPageCurrent 'Pagina corrente Dim strOrderBy 'Parametro in base a cui definire l'ordinamento Dim strSQL 'Comando da eseguire per effettuare la ricerca Dim RS 'Il nostro solito recordSet Dim iRecordsShown 'Variabile usata per definire i record mostrati Dim nome1 'Variabile in cui memorizziano il nome del visitatore che prendiamo dal database Dim cognome1 'Variabile in cui memorizziamo il suo cognome Dim email1 'Variabile in cui memorizziamo la sua email Dim homepage1 'Variabile in cui memorizziamo l’indirizzo del suo sito Dim commenti1 'Variabile in cui memorizziamo i commenti che ha inserito nel database iPageSize = 10 'NUMERO DI RECORD MOSTRATI PER PAGINA! If Request.QueryString("page") = "" Then iPageCurrent = 1 Else iPageCurrent = CInt(Request.QueryString("page")) End If If Request.QueryString("order") = "" Then strOrderBy = "id" Else strOrderBy = Request.QueryString("order") End If Set Conn = Server.CreateObject("ADODB.Connection") conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("database/guest.mdb") Set RS = Server.CreateObject("ADODB.Recordset") sql = "SELECT * FROM guest ORDER BY " & strOrderBy & " DESC;" RS.Open sql, conn, adOpenKeyset RS.PageSize = iPageSize RS.CacheSize = iPageSize iPageCount = RS.PageCount If iPageCurrent > iPageCount Then iPageCurrent = iPageCount If iPageCurrent < 1 Then iPageCurrent = 1 If iPageCount = 0 Then Response.Write("<p align center><font face=‘verdana’ size=‘2’>Nessuno ha ancora firmato il mio Libro degli Ospiti. <br>Che ne diresti di essere tu il primo?</font></p>") Else RS.AbsolutePage = iPageCurrent iRecordsShown = 0 Do While iRecordsShown < iPageSize And Not RS.EOF La parte mostrata da questo punto fino a ‘iRecordsShown = iRecordsShown + 1’ viene ripetuta per dieci volte (ovvero per ogni record visualizzato). Cominciamo a memorizzare nelle variabili le informazioni prelevate dal database nome1 = rs("nome") cognome1 = rs("cognome") email1= rs("email") homepage1= rs("homepage") commenti1= rs("commenti") %> A questo punto cominciamo a mostrare i dati prelevati dal database. Dato che li abbiamo selezionati con ‘id DESC’ (ovvero in base al campo contatore decrescente), i commenti più recenti saranno visualizzati per primi. Creiamo quindi una tabella in cui nella colonna a sinistra scriveremo ‘nome’, ‘cognome’, ‘email’, ‘homepage’, ‘commenti’. Ricordiamo però che gli unici campi obbligatori sono ‘nome’ e ‘commenti’. Gli altri campi potrebbero essere vuoti: quindi facciamo in modo che le righe della tabella siano visualizzate solo se necessario. Pertanto avremo sicuramente due righe (‘nome’ e ‘commenti’) e, in base alle scelte del visitatore, potremo avere anche le righe ‘email’, ‘email’ e ‘homepage’. Per far questo utilizziamo ancora una volta la funzione ‘if... then... end if’, unita a ‘response.write’. Come già abbiamo accennato, quest’ultima funzione serve sia a mostrare il contenuto di una variabile, sia a mostrare un testo a nostra scelta. Con opportuni accorgimenti (ovvero sostituendo le virgolette doppie con l’apice o apostrofo) possiamo fare in modo di visualizzare, all’interno del codice ASP, normale codice html, tra cui, appunto, le righe della tabella in questione. Cominciamo a creare la prima riga della tabella in cui, nella prima colonna, scriviamo ‘Nome’ mentre nella seconda colonna visualizziamo il contenuto della variabile ‘nome1’. <table width="100%" border="0" cellspacing="0" cellpadding="0" align="center"> <tr> <td><font face = "verdana" size = "2"> Nome</font></td> <td><font face = "verdana" size = "2" ><% = nome1 %></font></td> </tr> A questo punto, mediante la funzione ‘if... then... end if’, controlliamo che cognome1’ sia diverso da ‘+’: infatti quando il campo ‘form_cognome’ e gli altri campi non obbligatori del modulo sono lasciati vuoti, tali ‘vuoti’ sono colmati dal carattere ‘+’. Quindi se il visitatore ha inserito il proprio cognome, tale campo sarà diverso dal carattere ‘+’. Se il cognome1 è diverso da "+" (if cognome1 <> "+") allora creiamo una seconda riga in cui scrivere, nella prima colonna la parola ‘Cognome’ mentre nella seconda colonna mostriamo il valore preso dal database e memorizzato nella variabile ‘cognome1’. Nel caso in cui cognome1 = "+" questa parte di codice viene saltata e la riga della tabella non è nemmeno mostrata. <% if cognome1 <>"+" then response.write("<tr><td width='50%'><font face = 'verdana' size = '2' >Cognome</font></td><td width=‘50%’><font face = ‘verdana’ size = '2' > ") response.write(cognome1) response.write("</font></td></tr>") end if Allo stesso modo per ‘email1’, aggiungendo però il fatto che tale email deve essere ‘cliccabile’, quindi deve avere un link del tipo <a href="mailto:indirizzo[No-Spam]email[.com]">indirizzo[No-Spam]email[.com]</a> Naturalmente ‘indirizzo[No-Spam]email[.com]’ è l’indirzzo email prelevato dal nostro database e che abbiamo memorizzato nella variabile ‘email1’. Pertanto se email1<>"+" (quindi il visitatore ha inserito il proprio indirizzo email) avremo un'ulteriore riga della tabella contenente appunto l'email del visitatore. if email1<>"+" then response.write "<tr><td width='50%'><font face = 'verdana' size = '2' >Email</font></td><td width='50%'><font face = 'verdana' size = '2' ><a href='mailto:"&email1&"'>"& email1 &"</a></font></td></tr>" end if Sicuramente avrete notato che per mostrare l'indirizzo email ho utilizzato il consueto response.write. In questo caso però la struttura è leggermente diversa: infatti anzichè fare un response.write per ogni variabile e per ogni pezzo di codice ho raggruppato tutto in un unica stringa. Infatti apro le virgolette e comincio ad inserire il codice html che desidero sia visualizzato. Al momento di visualizzare il contenuto di una variabile, chiudo le virgolette (altrimenti vedrei il nome della variabile e non il suo contenuto), aggiungo l' & (in modo da non interrompere la stringa) e inserisco il nome della variabile. Se dopo la variabile voglio visualizzare altro codice dovrò riscrivere l' & seguita dall virgolette, quindi il codice e finalmente chiudo tutto con le virgolette. Schematizzando avremo response.write "testo" & variabile & "testo" Per quanto riguarda invece l’indirizzo del sito del visitatore, avremo che il relativo link sarà nella forma <a href="htt*://[www].indirizzo[.com]"> htt*://[www].indirizzo[.com]</a> dove, anche in questo caso, ‘htt*://[www].indirizzo[.com]’ è prelevato dal database e memorizzato in ‘homepage1’. Quindi se homepage1<>"+" (ovvero il visitatore ha inserito l’indirizzo del proprio sito) creiamo un'altra riga. Altrimenti passiamo direttamente alla visualizzazione die 'commenti' if homepage1<>"+" then response.write("<tr><td width='50%'><font face = 'verdana' size = '2' >Homepage</font></td><td width='50%'><font face = 'verdana' size = '2' > <a href='"& homepage1 &"' target='_blank'>"& homepage1 &"</a> </font></td></tr>" end if %> Come ultima cosa visualizziamo i commenti che il visitatore ha inserito nel modulo. Dato che si trattava di un campo obbligatorio, la variabile ‘commenti1’ sarà necessariamente diversa da ‘+’, quindi inutile verificarla mediante la funzione ‘if... then... end if’. Quindi il codice da inserire diventa <tr><td width="50%"><font face= "verdana" size="2">Commenti</font></td> <td width="50%"> <font face="verdana" size="2"><% = commenti1 %> </table></font> <p > </p> A questo punto non rimane che spostarci al record successivo del nostro database e ripetere la procedura riportata. Fatto questo si chiude la connessione e si svuota il RecordSet <% iRecordsShown = iRecordsShown + 1 RS.MoveNext Loop End If RS.Close Set RS = Nothing Conn.Close %> Creiamo ora i link per andare Avanti e Indietro <% If iPageCurrent <> 1 Then %> <a href="leggi.asp?page=<%= iPageCurrent - 1 %>&order=<%= Server.URLEncode(strOrderBy) %>"> Indietro</a> <% End If %><br> <% If iPageCurrent < iPageCount Then %> <a href="leggi.asp?page=<%= iPageCurrent + 1 %>&order=<%= Server.URLEncode(strOrderBy) %>">Avanti</a> <% End If %> A questo punto il nostro ‘Libro degli ospiti’ è pronto
usando tutte le variabili del caso mi appare solo una maschera se voglio salvare la pagina asp
La pagina asp la creo con front page e access è 2007
Che cos'è sbagliato?
Grazie
|
|