Visualizzazione dei risultati da 1 a 8 su 8

Discussione: Asp e ricerche in db

  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    15

    Asp e ricerche in db

    Ciao ragazzi,

    ho predisposto due pagine (1 htm e 1 asp) per permettere all'utente finale di ricercare dati in un database.
    Si tratta di un catalogo libri.
    Vi posto il codice della pagina htm:

    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Form di ricerca in catalogo libri</title>
    <style type="text/css">
    <!--
    body,td,th {
    	font-family: Verdana, Arial, Helvetica, sans-serif;
    	font-size: 10px;
    	color: #000066;
    	font-weight: bold;
    }
    body {
    	background-color: #FFFFFF;
    }
    -->
    </style></head>
    <body>
    
    
    FORM DI RICERCA IN CATALOGO LIBRI 
    
    
    <form name="form1" method="post" action="RisultatoBiblioteca-LIBRI.asp">
    CODICE
    
      <input name="cod_libri" type="text" id="cod_libri">
      
    
      PAROLE CHIAVE 
    
      <input name="pc_libri" type="text" id="pc_libri">
      
     
      AUTORE
    
    
    <input name="aut_libri" type="text" id="aut_libri">
    
     
    TITOLO
    
      <input name="tit_libri" type="text" id="tit_libri">
      
     
      IN
    
    
    <input name="in_libri" type="text" id="in_libri">
      
     
      VOLUME, TOMO, EDIZIONE
    
    
    <input name="vol_libri" type="text" id="vol_libri">
      
    
      ANNO
    
      <input name="anno_libri" type="text" id="anno_libri">
      
     
      LUOGO DI EDIZIONE
    
    
    <input name="luogo_libri" type="text" id="luogo_libri">
      
    
      CASA EDITRICE 
    
      <input name="ed_libri" type="text" id="ed_libri">
      
     
      ISBN
    
    
    <input name="isbn_libri" type="text" id="isbn_libri">
    
    
    NOTE
    
      <input name="note_libri" type="text" id="note_libri">
      
    
      COLLOCAZIONE
    
      <input name="coll_libri" type="text" id="coll_libri">
      
    
      
    
        <input name="Submit_libri" type="submit" id="Submit_libri" value="Ricerca nel catalogo LIBRI">
        <input name="cancella_libri" type="reset" id="cancella_libri" value="Cancella">
      
    
    </form>
    </body>
    </html>
    e quello della pagina asp:

    codice:
    <html>
    <head>
    <title>RISULTATO RICERCA IN CATALOGO LIBRI</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <table width="1376" border=1>
    	<tr><td>ID</td>
    	<td>Codice</td>
    	<td>Parole chiave</td>
    	<td>Autore</td>
    	<td>Titolo</td>
    	<td>In</td>
    	<td>Volume</td>
    	<td>Anno</td>
    	<td>Luogo Edizione</td>
    	<td>Casa Editrice</td>
    	<td>ISBN</td>
    	<td>Note</td>
    	</tr>
    
    <%
    '' Connessione al DB
    myDB = "..\db\cat_biblio.mdb"
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(myDB)
    
    
    '' Creazione della stringa WHERE (campi per il filtro)
    sSQLWhere = "ID > 0"
    if Request("Codice") <> "" then
    	sSQLWhere = sSQLWhere & " AND Codice = '" & Replace(Request("Codice"),"'", "''") & "'"
    end if
    if Request("Parole_chiave") <> "" then
    	sSQLWhere = sSQLWhere & " AND Parole_chiave = '" & Replace(Request("Parole_chiave"),"'", "''") & "'"
    end if
    if Request("Autore") <> "" then
    	sSQLWhere = sSQLWhere & " AND Autore = '" & Replace(Request("Autore"),"'", "''") & "'"
    end if
    if Request("Titolo") <> "" then
    	sSQLWhere = sSQLWhere & " AND Titolo = '" & Replace(Request("Titolo"),"'", "''") & "'"
    end if
    if Request("In") <> "" then
    	sSQLWhere = sSQLWhere & " AND In = '" & Replace(Request("In"),"'", "''") & "'"
    end if
    if Request("Volume_Tomo_Edizione") <> "" then
    	sSQLWhere = sSQLWhere & " AND Volume_Tomo_Edizione = '" & Replace(Request("Volume_Tomo_Edizione"),"'", "''") & "'"
    end if
    if Request("Anno") <> "" then
    	sSQLWhere = sSQLWhere & " AND Anno = '" & Replace(Request("Anno"),"'", "''") & "'"
    end if
    if Request("Luogo") <> "" then
    	sSQLWhere = sSQLWhere & " AND LuogoEdizione = '" & Replace(Request("LuogoEdizione"),"'", "''") & "'"
    end if
    if Request("Editore") <> "" then
    	sSQLWhere = sSQLWhere & " AND CasaEditrice = '" & Replace(Request("CasaEditrice"),"'", "''") & "'"
    end if
    if Request("ISBN") <> "" then
    	sSQLWhere = sSQLWhere & " AND ISBN = '" & Replace(Request("ISBN"),"'", "''") & "'"
    end if
    if Request("Note") <> "" then
    	sSQLWhere = sSQLWhere & " AND Note = '" & Replace(Request("Note"),"'", "''") & "'"
    end if
    if Request("Collocazione") <> "" then
    	sSQLWhere = sSQLWhere & " AND Collocazione = '" & Replace(Request("Collocazione"),"'", "''") & "'"
    end if
    
    '' Lavoriamo sul Recordset
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.cursorlocation = 3
    ' ALBY: I nomi delle tabelle è meglio scriverli senza spazi, in caso contrario bisogna usare le parentesi quadre
    rs.Open "Select * from Libri where " & sSQLWhere, conn, 0, 1
    do until rs.EOF
    %>
    	<tr>
    	<td><%=rs("ID")%></td>
    	<td><%=rs("Codice")%></td>
    	<td><%=rs("Parole_chiave")%></td>
    	<td><%=rs("Autore")%></td>
    	<td><%=rs("Titolo")%></td>
    	<td><%=rs("In")%></td>
    	<td><%=rs("Volume_Tomo_Edizione")%></td>
    	<td><%=rs("Anno")%></td>
    	<td><%=rs("Luogo")%></td>
    	<td><%=rs("Editore")%></td>
    	<td><%=rs("ISBN")%></td>
    	<td><%=rs("Note")%></td>
    	<td><%=rs("Collocazione")%></td>
    	
    	</tr>
    
    <%
    	rs.MoveNext
    loop
    rs.Close
    %>
    </table>
    </html>
    Quando effettuo una ricerca di prova è come se mi venissero mostrati tutti i record del database, e non solo quelli che effettivamente corrispondono alla ricerca che ho fatto...
    Come mai?
    (Premetto che di Asp so pochissimo)...
    Grazie,
    Ivy
    Ci sono anche su msn messenger: ivana.dicarlo@gmail.com

    "Chi e' pronto a dar via le proprie liberta' fondamentali
    per comprarsi briciole di temporanea sicurezza
    non merita ne' la liberta' ne' la sicurezza"
    Benjamin Franklin

  2. #2
    Fatti stampare la query e postala qui.

    Opera le modifiche di qua sotto nel tuo codice:

    codice:
    '' Lavoriamo sul Recordset
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.cursorlocation = 3
    ' ALBY: I nomi delle tabelle è meglio scriverli senza spazi, in caso contrario bisogna usare le parentesi quadre
    strSql = "Select * from Libri where " & sSQLWhere
    
    response.write(strSql)
    response.end 
    
    rs.Open strSql, conn
    do until rs.EOF
    %>
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    15

    prova

    Ciao e grazie.

    Ho provato a fare la modifica di codice ma dopo, se effettuo una ricerca, non mi da proprio alcun risultato...
    Vedo solo i nomi delle colonne della tabella che dovrebero mostrarli...

    La query...
    Io in access ho questo query, che si chiama Libri, ed è:

    codice:
    SELECT Libri.Codice, Libri.Parole_chiave, Libri.Autore, Libri.Titolo, Libri.[In], Libri.Volume_Tomo_Edizione, Libri.Anno, Libri.Luogo, Libri.Editore, Libri.ISBN, Libri.Pagine, Libri.Note, Libri.Collocazione
    FROM Libri;
    Grazie a questa query funziona un'ulteriore pagina che mostra tutti i record della tabella Libri.
    Ci sono anche su msn messenger: ivana.dicarlo@gmail.com

    "Chi e' pronto a dar via le proprie liberta' fondamentali
    per comprarsi briciole di temporanea sicurezza
    non merita ne' la liberta' ne' la sicurezza"
    Benjamin Franklin

  4. #4
    OK, che tu veda pagina bianca, ma dovresti vedere a video anche la query SQL.
    Controlla bene.
    Provare paura per un qualcosa che ti possa capitare nel futuro non ti evita quell'evento,ti fa soltanto vivere un presente sbagliato!

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    15

    mmm

    Allora...

    Nella pagina asp aggiungo il codice che mi hai dato tu

    Vado online, apro la pagina del form, provo a mettere una parola in "parole chiave" per fare la ricerca, e do il comando...

    Mi appare una pagina bianca dove vedo solo la prima riga della tabella, quella con i nomi delle colonne,e a video non vedo nessuna query sql...
    Ci sono anche su msn messenger: ivana.dicarlo@gmail.com

    "Chi e' pronto a dar via le proprie liberta' fondamentali
    per comprarsi briciole di temporanea sicurezza
    non merita ne' la liberta' ne' la sicurezza"
    Benjamin Franklin

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    15

    errore

    Ciao,

    Facevo un errore madornale, e cioè nella pagina asp sbagliavo i campi request, ai quali non mettevo i valori del form.

    Ora la pagina è la seguente:

    codice:
    <html>
    <head>
    <title>RISULTATO RICERCA IN CATALOGO LIBRI</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    </head>
    <body>
    <table width="1376" border=1>
    <tr><td>ID</td>
    <td>Codice</td>
    <td>Parole chiave</td>
    <td>Autore</td>
    <td>Titolo</td>
    <td>In</td>
    <td>Volume</td>
    <td>Anno</td>
    <td>Luogo Edizione</td>
    <td>Casa Editrice</td>
    <td>ISBN</td>
    <td>Note</td>
    </tr>
    
    <%
    '' Connessione al DB
    myDB = "..\db\cat_biblio.mdb"
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(myDB)
    
    
    '' Creazione della stringa WHERE (campi per il filtro)
    sSQLWhere = "ID > 0"
    if Request("cod_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Codice = '" & Replace(Request("cod_libri"),"'", "''") & "'"
    end if
    if Request("pc_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Parole_chiave = '" & Replace(Request("pc_libri"),"'", "''") & "'"
    end if
    if Request("aut_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Autore = '" & Replace(Request("aut_libri"),"'", "''") & "'"
    end if
    if Request("tit_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Titolo = '" & Replace(Request("tit_libri"),"'", "''") & "'"
    end if
    if Request("in_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND In = '" & Replace(Request("in_libri"),"'", "''") & "'"
    end if
    if Request("vol_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Volume_Tomo_Edizione = '" & Replace(Request("vol_libri"),"'", "''") & "'"
    end if
    if Request("anno_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Anno = '" & Replace(Request("anno_libri"),"'", "''") & "'"
    end if
    if Request("luogo_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND LuogoEdizione = '" & Replace(Request("luogo_libri"),"'", "''") & "'"
    end if
    if Request("ed_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND CasaEditrice = '" & Replace(Request("ed_libri"),"'", "''") & "'"
    end if
    if Request("isbn_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND ISBN = '" & Replace(Request("isbn_libri"),"'", "''") & "'"
    end if
    if Request("note_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Note = '" & Replace(Request("note_libri"),"'", "''") & "'"
    end if
    if Request("coll_libri") <> "" then
    sSQLWhere = sSQLWhere & " AND Collocazione = '" & Replace(Request("coll_libri"),"'", "''") & "'"
    end if
    
    '' Lavoriamo sul Recordset
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.cursorlocation = 3
    ' ALBY: I nomi delle tabelle è meglio scriverli senza spazi, in caso contrario bisogna usare le parentesi quadre
    rs.Open "Select * from Libri where " & sSQLWhere, conn, 0, 1
    
    do until rs.EOF
    %>
    <tr>
    <td><%=rs("ID")%></td>
    <td><%=rs("Codice")%></td>
    <td><%=rs("Parole_chiave")%></td>
    <td><%=rs("Autore")%></td>
    <td><%=rs("Titolo")%></td>
    <td><%=rs("In")%></td>
    <td><%=rs("Volume_Tomo_Edizione")%></td>
    <td><%=rs("Anno")%></td>
    <td><%=rs("Luogo")%></td>
    <td><%=rs("Editore")%></td>
    <td><%=rs("ISBN")%></td>
    <td><%=rs("Note")%></td>
    <td><%=rs("Collocazione")%></td>
    
    </tr>
    
    <%
    rs.MoveNext
    loop
    rs.Close
    %>
    </table>
    </html>
    Mi succede ora questo: se effettuo una qualsiasi ricerca, visualizzo nella pagina dei risultati solo la prima riga della tabella, con i nomi delle colonne per intenderci, e niente altro, nessun errore etc...
    Ci sono anche su msn messenger: ivana.dicarlo@gmail.com

    "Chi e' pronto a dar via le proprie liberta' fondamentali
    per comprarsi briciole di temporanea sicurezza
    non merita ne' la liberta' ne' la sicurezza"
    Benjamin Franklin

  7. #7
    evidentemente non trova nulla...porva a togliere gli AND dalla query e a sostituirli con gli OR


  8. #8
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    15

    test

    Ho provato a sostituire solo in questa parte di codice:

    codice:
    if Request("pc_libri") <> "" then
    	sSQLWhere = sSQLWhere & " AND Parole_chiave = '" & Replace(Request("pc_libri"),"'", "''") & "'"
    end if
    che è diventata

    codice:
    if Request("pc_libri") <> "" then
    	sSQLWhere = sSQLWhere & " OR Parole_chiave = '" & Replace(Request("pc_libri"),"'", "''") & "'"
    end if
    Faccio una ricerca dal form indicando solo una parola nel campo parole chiave, ed è come se nei risultati vedessi tutti i record tranne quelli che cercavo io....
    Ci sono anche su msn messenger: ivana.dicarlo@gmail.com

    "Chi e' pronto a dar via le proprie liberta' fondamentali
    per comprarsi briciole di temporanea sicurezza
    non merita ne' la liberta' ne' la sicurezza"
    Benjamin Franklin

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.