Motore di ricerca

  • Creatore Discussione Creatore Discussione cerimapd
  • Data di inizio Data di inizio

cerimapd

Nuovo Utente
30 Nov 2004
15
0
0
Ho scaricato questo script che funziona perfettamente:

------------------------------------------------------------------------------

<%@LANGUAGE = JScript%>
<%

Response.Buffer = true;
var Cn = new ActiveXObject("ADODB.Connection");
Cn.Open("driver={Microsoft Access Driver (*.mdb)};dbq=" + Server.MapPath("cerca.mdb"));
var testo = new String(Server.HTMLEncode(Request.Form("cerca")));
var r_testo = testo.replace(/'/g,"''");
var cerca = r_testo.split(" "); // Tutte le parole chiave devono essere separate da uno spazio vuoto
var sql = "SELECT * FROM risultati WHERE ";
for (var i=0; i<cerca.length; i++)
{
if (i > 0) sql += " AND";
sql += " parole_chiave LIKE '%" + cerca + "%'";
}
sql += " ORDER BY titolo";
var Mostra = Cn.Execute(sql);
%>
<html>
<head>
<title>Cerca</title>
<basefont size="2" face="Verdana">
</head>
<body link="Blue" alink="Red" vlink="Blue">

<h3>
<b>Cerca</b>
<form method="post" action="cerca.asp">
<input type="text" name="cerca" size="50" value="<%cerca != "undefined" ? Response.Write(testo) : Response.Write("")%>">
<input type="submit" value="Cerca">
</form>
</h3>

<%if (testo != "undefined") {%>
<p><b>Risultati della ricerca per il termine <font color="Red"><%=testo%></font></b></p>
<%
if (testo == "" || testo == "undefined" || testo.charAt(0) == " ")
{
Response.Write("<p>Inserire un termine per effettuare una ricerca</p>");
}
else if (Mostra.EOF)
{
Response.Write("<p>Nessun risultato</p>");
}
else
{
while (!Mostra.EOF)
{
with (Response)
{
Write("<p>");
Write("<a href='" + Mostra("url") + "' target='_blank'>" + Mostra("titolo") + "</a><br>");
Write(Mostra("descrizione") + "<br>");
Write("<font color='Green'>" + Mostra("url") + "</font>");
Write("</p>");
}
Mostra.MoveNext();
}
}
%>
<%}%>

</body>
</html>
<%Cn.Close()%>

------------------------------------------------------------------------------
Come vedete la ricerca viene fatta sulla sola tabella "risultati" del db "cerca.mdb".
Ma se volessi fare una ricerca su più tabelle, uguali nella struttura ma differenti nel contenuto, come posso fare??
Pensavo che si potesse aggiungere le altre tabelle nella stringa:

var sql = "SELECT * FROM risultati WHERE ";

ma nonostante tutte le prove fatte, la cosa non funziona.
 
Sono lieto di conoscerti.
Io non sono molto esperto del linguaggio ASP, ma cerco, copiando un pò di qua e un pò di la, di creare le mie piccole applicazioni.
Sto cercando di trasformare in formato web, un mio vecchio programma, realizzato in Access 2000.
All'interno dei questo DB sono presenti archivi (tabelle) relative agli anni dal 1988 ad oggi. Queste tabelle sono strutturate in maniera identica e contengono ogniuna circa 4000 record. Ogni record di queste tabelle, contiene un campo "MATRICOLA" dove è registrata appunto la matricola (univoca) del materiale versato.
Adesso, se io faccio la ricerca su una sola tabella, come detto prima, la cosa funziona perfettamente. Ma se volessi allargare la ricerca su tutte le tabelle presenti nel db, come fare?
La soluzione alternativa che ho adottato è quella di aver unito i dati di tutte le tabelle in una unica. Ma non è quello che speravo di dover fare. Anche perchè ogni anno che passa i dati inseriti aumentano di parecche unità appesantendo appunto la tabella e tutto ciò che le è legato.
Le tabelle sono denominate con l'anno di riferimento cioè 1988, 1989, 1990 ecc.
 

Discussioni simili