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:
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(" "); 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("[*]"); Response.Write("" + rdr["TITOLO"] + " "); Response.Write("Autore:" + rdr["AUTORE"] + " "); Response.Write(""); Response.Write("<hr />"); } Response.Write("[/list]"); } // 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>

Rispondi quotando