| Consigli PC  |

 

 

 ITALIA UMTS

Flying in the net!

black.gif (50 bytes)
 

www.calshop.biz

 
 

Italia UMTS nasce da una idea del team di calshop.biz e vuole essere nella rete un punto di riferimento nel settore dell'informazione e.
© 2002 - 2004 ItaliaUMTS Powered by calshop  -  All Rights Reserved.

 
black.gif (50 bytes)
 

Google
 
Web www.calshop.biz
 


Asp: la guida introduttiva

1 | 2 | 3 | 4 

ASP: la guida introduttiva

Capitolo 12 - Un motore di ricerca con ASP (Parte 2)

   12.0   Sui pannelli di controllo...
  
 12.1   Il form HTML
   
12.2   Inserimento del nuovo record
   12.3   Conclusioni e spunti
 

12.0 - Sui pannelli di controllo...

Dopo aver realizzato un basilare servizio di archiviazione, indicizzazione e ricerca di pagine Web (cfr. Capitolo 11) si conclude in questa seconda parte il tutorial relativo all'approfondimento delle tecniche di utilizzo del componente ADO (ActiveX Data Object). Nel corso del capitolo precedente, infatti, sono state prese in esame le tematiche relative alla possibilità di eseguire ricerce tra le informazioni archiviate all'interno di una comune fonte di dati di Access, e lo studio era legato soprattutto all'utilizzo del particolare oggetto di ADO denominato Connection, in grado appunto di stabilire connessioni con un database e di estrarre da esso, seguendo un criterio dettato mediante SQL, una serie di dati ritenuti interessanti per l'applicazione. In questo capitolo lo studio si incentrerà maggiormente sull'oggetto Recordset, sempre di ADO, utile per effettuare inserimenti di nuove informazioni all'interno della stessa fonte di dati utilizzata per l'esempio precedente. In parole più spicciole quello che sarà realizzato nei paragrafi successivi altro non sarà che un pannello di controllo, funzionante su interfaccia Web, utile all'ipotetico amministratore del motore di ricerca per aggiornare i record presenti nell'archivio precedentemente creato. Si tratta di una funzionalità molto importante per i servizi di questo genere, in quanto permette di aggiornare i dati originariamente specificati in maniera remota, ossia senza dover disporre di una copia del database sulla propria macchina di lavoro, interagendo perciò direttamente con quanto disponibile in rete. Senza tale pannello di controllo l'aggiunta di una nuova pagina all'interno del database utilizzato risulterebbe un'operazione piuttosto laboriosa: bisognerebbe infatti inserire il nuovo record agendo direttamente con Access su una copia locale di archivio.mdb, per poi sovrascrivere la copia in rete tramite, ad esempio, un accesso FTP. Si tratta di un metodo altamente sconveniente, in quanto per aggiungere pochi caratteri è necessario modificare, trasportare e sovrascrivere un archivio che potenzialmente può avere dimensioni rilevanti, causando anche dei momentanei malfunzionamenti del servizio nel momento in cui si sovrascrive la copia in rete. Un pannello di controllo via Web, invece, rende notevolmente più semplice questa serie di operazioni. L'inserimento di un nuovo record, in questo caso, può essere eseguito semplicemente collegandosi ad una pagina Web, tramite un normale browser, specificando quindi mediante un form HTML le specifiche del nuovo record e quindi aggiornando in tempo reale direttamente la copia disponibile in rete, senza causare disagi, senza dover utilizzare altri aggiuntivi, e senza che siano richieste particolari conoscenze tecniche. Il più delle volte, infatti, capita che chi gestisca un servizio non sia la stessa persona che lo ha realizzato. Si immagini ad esempio che il motore di ricerca oggetto di questo studio stia venendo realizzando per un ipotetico committente, che di programmazione Web, di ASP, di ADO e di tutte le tematiche collegate è completamente digiuno. Tramite un pannello di controllo il cliente potrà aggiornare il database realizzato dallo sviluppatore senza doversi rivolgere allo sviluppatore stesso. Inoltre un pannello di controllo Web permette l'aggiornamento dei dati da una qualsiasi postazione che abbia accesso ad Internet e disponga di un comune Web browser, mentre l'aggiornamento in locale richiede almeno l'utilizzo di una copia di Access e di un client FTP, strumenti solitamente non in mano all'utente medio. Per concludere: quando si sviluppa un'applicazione Web basata sull'accesso ad una fonte di dati che necessiti di continui aggiornamenti la realizzazione di un pannello di controllo via Web è quasi un passo obbligato.

12.1 - Il form HTML

Premesso quanto detto nel paragrafo precedente ci si accinge ora allo sviluppo di un basilare pannello di controllo in grado di aggiornare archivio.mdb aggiungendo in esso un nuovo record alla volta, specificato dal gestore del servizio attraverso una semplice pagina Web. Si torni quindi a lavorare nella stessa cartella utilizzata per testare i codici presentati nel Capitolo 11, in quanto in questo momento si sta completando l'esempio precedente, e non si sta realizzando perciò un codice di per sé indipendente. Come già visto più volte un utente è in grado di passare dei dati ad una pagina Web sfruttando il costrutto FORM messo a disposizione da HTML. Come prima cosa, quindi, sarà necessario realizzare un semplice modulo in grado di consentire all'amministratore del servizio di specificare i dati che insieme costituiscono il record che si intende accodare a quelli già presenti nell'archivio. Si realizzi quindi la pagina pannello.htm come segue:

<html>
<head>
<title>Pannello di controllo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body bgcolor="#FFFFFF">
<div align="center">
  <p><b><font size="2" face="Verdana, Arial, Helvetica, sans-serif">BENVENUTO 
    NEL PANNELLO DI CONTROLLO!</font></b></p>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Grazie a questo 
    pannello è possibile inserire nuovi documenti all'interno del motore 
    di ricerca. Utilizza il modulo sottostante.</font></p>
  <p> </p>
  <form name="" method="post" action="inserisci_record.asp">
    <table width="350" border="0" cellspacing="1" cellpadding="0">
      <tr> 
        <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Password:</b></font></td>
        <td align="right"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="password" name="password" size="30">
          </font></td>
      </tr>
      <tr> 
        <td> </td>
        <td> </td>
      </tr>
      <tr> 
        <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Titolo:</b></font></td>
        <td align="right"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="text" name="titolo" size="30">
          </font></td>
      </tr>
      <tr> 
        <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>URL:</b></font></td>
        <td align="right"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="text" name="url" size="30" value="http://">
          </font></td>
      </tr>
      <tr> 
        <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Descrizione:</b></font></td>
        <td align="right"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="text" name="descrizione" size="30">
          </font></td>
      </tr>
      <tr> 
        <td align="left"><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>Keywords*:</b></font></td>
        <td align="right"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="text" name="keywords" size="30">
          </font></td>
      </tr>
      <tr> 
        <td> </td>
        <td> </td>
      </tr>
      <tr align="center"> 
        <td colspan="2"> <font face="Verdana, Arial, Helvetica, sans-serif" size="2"> 
          <input type="submit" value="AGGIUNGI IL RECORD">
          </font></td>
      </tr>
    </table>
  </form>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2"><b>(*)</b> le 
    parole chiave devono essere separate tra di loro tramite uno spazio</font></p>
</div>
</body>
</html>

Analizzando il codice sopra riportato è possibile estrarre le seguenti informazioni relativamente al form proposto.

  • action="inserisci_record.asp" - questo significa che i dati inseriti verranno passati al documento inserisci_record.asp, del quale ci si occuperà nel prossimo paragrafo

  • method="post" - il metodo utilizzato per l'invio dei dati è POST. All'interno di inserisci_record.asp, quindi, potranno essere recuperati utilizzando la sintassi Request.Form("nomeCampo")

  • campo password - naturalmente il pannello di controllo non deve essere sfruttato da tutti, ma solo dalle persone autorizzate. Per questo è prevista l'autentificazione mediante passoword.

  • campo titolo - qui andrà specificato il titolo della pagina Web da indicizzare

  • campo url - qui andrà specificato l'url della pagina Web da indicizzare

  • campo descrizione - qui andrà specificata una breve descrizione per la pagina Web da indicizzare

  • campo keywords - qui andrà specificata la lista delle parole chiave da associare alla pagina Web che si deve indicizzare

Si osservi inoltre come gli ultimi quattro campi descritti (titolo, url, descrizione e keywords) corrispondano esattamente ai quattro campi scelti per rappresentare una pagina Web all'interno del database. Come è facile intendere il contenuto di questi campi verrà dunque prelevato ed inserito così come è all'interno dell'archivio.

12.2 - Inserimento del nuovo record

I compiti di inserisci_record.asp, a questo punto, possono essere riassunti nei seguenti passi:

  • recupero dei dati presentati nel form

  • validazione della password inserita

  • validazione dei quattro campi che costituiscono il nuovo record da inserire

  • nel caso i precedenti controlli abbiano dato buon esito, inserimento del nuovo record all'interno dell'archivio

  • visualizzazione di un responso dell'operazione nell'output

Tenendo a mente quanto detto nel capitoli precedenti relativamente all'utilizzo di ADO se ne ricava il seguente codice:

<%@ LANGUAGE = JScript %>
<%
// SPECIFICA QUI LA PASSWORD
var password_di_accesso = "pannello";

// RECUPERO DEL CONTENUTO DEL FORM
var password = String(Request.Form("password"));
var titolo = String(Request.Form("titolo"));
var url = String(Request.Form("url"));
var descrizione = String(Request.Form("descrizione"));
var keywords = String(Request.Form("keywords"));

// VARIABILI DI UTILITA'
var errore = 0;
var fatto = false;

// CONTROLLO PASSWORD
if (password!=password_di_accesso) errore = 1;
else {
  // CONTROLLO CAMPI
  if (titolo.length<1 || titolo.length>100) errore = 2;
  if (url.length<1 || url.length>100) errore = 2;
  if (descrizione.length<1) errore = 2;
  if (keywords.length<1) errore = 2;
  if (errore==0) {
    // INSERIMENTO DEL NUOVO RECORD
    stringaDiConnessione = "driver={Microsoft Access Driver (*.mdb)};dbq=";
    stringaDiConnessione += Server.MapPath("archivio.mdb");
    conn = new ActiveXObject("ADODB.Connection");
    conn.Open(stringaDiConnessione);
    rs = new ActiveXObject("ADODB.Recordset");
    rs.Open("pagineweb",conn,3,3);
    rs.AddNew();
    rs("titolo") = titolo;
    rs("url") = url;
    rs("descrizione") = descrizione;
    rs("keywords") = keywords;
    rs.Update();
    rs.Close();
    conn.Close();
    fatto = true;
  }
}
%>
<html>
<head>
<title>Inserimento di un nuovo record</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FFFFFF">
<div align="center">
  <% if (errore==1) { %>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#660000"><b>ERRORE #1</b>: PASSWORD NON CORRETTA</font></p>
  <% } %>
  <% if (errore==2) { %>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#660000"><b>ERRORE #2</b>: CAMPI NON VALIDI</font></p>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">Si ricordano le lunghezze massime previste:</font></p>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">
    <b>TITOLO</b>: compreso tra 1 e 100 caratteri<br>
    <b>URL</b>: compreso tra 1 e 100 caratteri<br>
    <b>DESCRIZIONE</b>: almeno un carattere<br>
    <b>KEYWORDS</b>: almeno un carattere
  </font></p>
  <% } %>
  <% if (errore!=0) { %>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">< <a href="javascript:history.back()">TORNA INDIETRO</a> ></font></p>
  <% } %>
  <% if (fatto) { %>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2" color="#006600"><b>OPERAZIONE ESEGUITA CON SUCCESSO!</b></font></p>
  <p><font face="Verdana, Arial, Helvetica, sans-serif" size="2">< <a href="pannello.htm">INSERISCI ALTRO RECORD</a> ></font></p>
  <% } %>
</div>
</body>
</html>

Tralasciando i commenti relativi alla forma scelta per realizzare il documento e alle tecniche sfruttate per eseguire i controlli si passi all'analisi dei due punti chiave di inserisci_record.asp. Il primo è relativo all'autentificazione della password. Si è scelta una via molto semplice: la password corretta è stata memorizzata direttamente all'interno di una variabile JScript (password_di_accesso) facente parte del codice stesso. Si tratta di una soluzione poco pratica nei termini del servizio (se l'amministratore volesse modificare la propria password dovrebbe mettere mano al codice, con risultati spesso catastrofici!), ma comunque conveniente per l'esempio in fase di studio, il cui obiettivo non è quello di descrivere come si realizzino zone ad accesso limitato. Un tema del genere sarà argomento di studio nei capitoli 15 e 16. La seconda parte interessante è quella relativa all'accesso al database e all'inserimento del nuovo record:

stringaDiConnessione = "driver={Microsoft Access Driver (*.mdb)};dbq=";
stringaDiConnessione += Server.MapPath("archivio.mdb");
conn = new ActiveXObject("ADODB.Connection");
conn.Open(stringaDiConnessione);

rs = new ActiveXObject("ADODB.Recordset");
rs.Open("pagineweb",conn,3,3);
rs.AddNew();
rs("titolo") = titolo;
rs("url") = url;
rs("descrizione") = descrizione;
rs("keywords") = keywords;
rs.Update();
rs.Close();

conn.Close();

La parte evidenziata in verde è identica a quella già descritta nel Capitolo 11, il cui scopo è quello di utilizzare l'oggetto ADODB.Connection per connettersi ad archivio.mdb. La parte in arancione, invece, evidenzia l'inserimento del nuovo record all'interno della tabella pagineweb, mediante l'utilizzo dell'oggetto ADODB.Recordset.

12.3 - Conclusioni e spunti

Si conclude qui questo tutorial dedicato all'approfondimento delle tecniche di accesso alle fonti di dati supportate da ADO. E' stato anche fornito un approccio alla realizzazione dei pannelli di controllo per interfaccia Web, strumenti da sempre apprezzati dai clienti delle applicazioni. Si invita il lettore ad approfondire l'argomento completando il pannello proposto con l'aggiunta di altri servizi, quali ad esempio la possibilità di cancellare record precedentemente inseriti (comando DELETE di SQL) e quella di modificare i contenuti di un record già esistente (comando UPDATE di SQL).

Home Page

1 | 2 | 3 | 4 

 
Trucchi PC e Guide
Tips su sistemi operativi, registro di configurazione, sicurezza, internet, navigazione, word ed excel. ................ ....
 

Guide e sulla configurazione, installazione ed utilizzo di, periferiche, sistemi operativi ecc... .............................................................


 

 
 
Halloween  
Halloween Online

Utenti on line

Ultimo aggiornamento giugno 2005