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.
------------------------------------------------------------------------------
<%@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.