Salve a tutti,
mi sono appena registrato al forum per chiedervi aiuto riguardo uno script che sto costruendo.
Premesso che mi sono affacciato da poco al web dinamico e che ho pochissime conoscenze di ASP.NET, ho trovato uno script in C# in rete che ho riadattato alle mie esigenze.
Cosa fa lo script ?
- si connette a un database Access
- esegue una query in base ai valori inseriti in un form
- fa un ciclo while in cui stampa i risultati
Il tutto viene eseguito dentro il tag <script language="c#" runat="server"> ... </script>
Cosa vorrei io? Che i risultati venissero impaginati per non avere una pagina unica con 1000 record.
Vi ringrazio anticipatamente per il vostro aiuto.
Ecco il codice completo:
mi sono appena registrato al forum per chiedervi aiuto riguardo uno script che sto costruendo.
Premesso che mi sono affacciato da poco al web dinamico e che ho pochissime conoscenze di ASP.NET, ho trovato uno script in C# in rete che ho riadattato alle mie esigenze.
Cosa fa lo script ?
- si connette a un database Access
- esegue una query in base ai valori inseriti in un form
- fa un ciclo while in cui stampa i risultati
Il tutto viene eseguito dentro il tag <script language="c#" runat="server"> ... </script>
Cosa vorrei io? Che i risultati venissero impaginati per non avere una pagina unica con 1000 record.
Vi ringrazio anticipatamente per il vostro aiuto.
Ecco il codice completo:
Codice:
<%@ Import Namespace="System.Data" %>
<%@ Import Namespace="System.Data.OleDb" %>
<script language="C#" runat="server">
void Page_Load(Object sender, EventArgs e)
{
// stringa di connessione
String ConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("marmar.mdb");
// oggetto cn di tipo OleDbConnection
OleDbConnection cn = new OleDbConnection(ConnString);
// apertura della connessione
cn.Open();
// creazione della pagina
// Per inserire file esterno:
// Response.WriteFile ("XXXXX.htm");
// Per scrivere codice:
// Response.Write("</XXXXX>");
// ATTENZIONE: ALL'INTERNO DI RESPONSE.WRITE TUTTE LE VIRGOLETTE DEVONO ESSERE SINGOLE
// EXA: Response.Write("<p class='serif'>");
// ALL'INTERNO DELLA DIV "CONTENT", DOPO GLI H, AGGIUNGIAMO:
// ! PER IL TAG LABEL VA CREATA UNA CLASSE CSS CHE NE SPECIFICA WIDTH
// form
Response.Write("<form action='' method='get'>");
Response.Write("<label for='titolo'>Titolo: </label>");
Response.Write("<input type='text' name='titolo'>");
Response.Write("<br/>");
Response.Write("<label for='autore'>Autore: </label>");
Response.Write("<input type='text' name='autore'>");
Response.Write("<input type='submit' name='submit' value='Cerca'>");
Response.Write("</form>");
// query
// la variabile si scrive:
// '%" + Request.QueryString["NOME DELL'INPUT"] + "%'
// il simbolo % è obbligatorio con LIKE, vale come un asterisco (exa: %king%)
// REGOLE:
// NON INTERPORRE PIU' DI UNO SPAZIO TRA LE PAROLE, ALTRIMENTI LA QUERY NON FUNZIONA
// NON SPEZZARE MAI LA RIGA
String sql =
"SELECT TITOLO, AUTORE FROM titoli WHERE titolo LIKE '%" + Request.QueryString["titolo"] + "%' AND autore LIKE '%" + Request.QueryString["autore"] + "%' ORDER BY titolo";
// creiamo l'oggetto cmd di tipo OleDbCommand
// passando la Sql e la connessione al costruttore dell'oggetto
OleDbCommand cmd = new OleDbCommand(sql, cn);
// creiamo un oggetto di tipo OleDbDataReader
// Esso è assimilabile a un RecordSet con cursore di tipo forward-only in ASP tradizionale
OleDbDataReader rdr = cmd.ExecuteReader();
// Cosi si farebbe una tabella:
// Response.Write("<table border=1 cellspacing=1 align=center>");
// Response.Write("<tr><th>TITOLO</th><th>AUTORE</th></tr>");
// while (rdr.Read()){
// Response.Write("<tr>");
// Response.Write("<td>" + rdr["TITOLO"] + "</td>");
// Response.Write("<td>" + rdr["AUTORE"] + "</td>");
// Response.Write("</tr>");
//}
// ...vari response.write con i tag di chiusura
// -----------------------------
//--------------
// COME LO VOGLIO IO:
// se tutti i campi di ricerca sono vuoti...
if
(
(string.IsNullOrEmpty(Request.QueryString["titolo"]))
&&
(string.IsNullOrEmpty(Request.QueryString["autore"]))
// inserire tutti i Request.QueryString del form, preceduti da &&
)
// ...impongo all'utente di inserire almeno un parametro
{
Response.Write("Inserire almeno un parametro di ricerca.");
}
// se invece ha inserito qualcosa ma non viene trovata...
else if
(rdr.HasRows == false)
{
Response.Write("La ricerca non ha prodotto alcun risultato.");
}
// se invece viene trovata...
else
// ...procedo normalmente a visualizzare i risultati
{
Response.Write("<h3>Risultati della ricerca:</h3>");
Response.Write("<ul class='teche'>");
while (rdr.Read()){
Response.Write("<li>");
Response.Write("<strong>" + rdr["TITOLO"] + "</strong><br/>");
Response.Write("<strong>Autore:</strong> " + rdr["AUTORE"] + "<br/>");
Response.Write("</li>");
Response.Write("<hr />");
}
Response.Write("</ul>");
}
// Completiamo il codice Html della della pagina.
// Per inserire file esterno:
// Response.WriteFile ("XXXXX.htm");
// Per scrivere codice:
// Response.Write("</XXXXX>");
// ATTENZIONE: ALL'INTERNO DI RESPONSE.WRITE TUTTE LE VIRGOLETTE DEVONO ESSERE SINGOLE
// EXA: Response.Write("<p class='serif'>");
// chiusura del DataReader
rdr.Close();
// chiusura della connessione
cn.Close();
}
</script>