[ASP] Motore di ricerca interno su 2 tabelle

djjunior

Utente Attivo
24 Lug 2004
95
1
8
Salve,
potete suggerirmi qualche script in asp per la creazione di un motore di ricerca interno che faccia la ricerca su 2 tabelle contemporaneamente, il db è mysql.
Grazie 1000
 

djjunior

Utente Attivo
24 Lug 2004
95
1
8
Salve
non sono come uscire da questo problema, dovrei fare un motore di ricerca interno al sito su 2 tabelle (diverse) contemporanemente le tabelle sono composte tipo cosi:
TABELLA 1
id, nome colonna1, etc
1, testo1
2, testo2
3, testo3

TABELLA 2
id, nome colonna23, nome colonna56
1, testo1 , testo1
2, testo2 , testo2
3, testo3 , testo3

Il db è mysql

E questo script:
Codice:
<%
page = Cint(request.querystring("page"))
if page = 0 then page = 1

database = "Sql123456_4"
call dbConnect(objConn, database)
'Totale dei record

sek = request.form("keywords")
qstring = "keywords=" & server.URLEncode(sek)

function fixSQL(TheString)
    TheString = replace(TheString,"'","''")   
fixSQL = TheString
end function

strSQL = "SELECT COUNT(*) as tot FROM (SELECT id, NOME COLONNA1 FROM tabella1 WHERE NOME COLONNA1 LIKE '%" & sek & "%'       UNION SELECT id, NOME COLONNA23, NOME COLONNA56, FROM tabella2 WHERE NOME COLONNA23 LIKE '%" & sek & "%' OR NOME COLONNA56 LIKE '%" & sek & "%'         ) as total"
Set objRS = objConn.Execute(strSQL)

if not objRs.eof then
tot_record = Cint(objRS("tot"))
else
tot_record=0
end if
set objRS = nothing


pageSize = 15

inizio = (page - 1) * pageSize

pagine_totali = tot_record / pageSize

if pagine_totali - CInt(pagine_totali) > 0 then
pagine_totali = CInt(pagine_totali + 1)
else
pagine_totali = CInt(pagine_totali)
end If

strSQL = "SELECT * FROM (SELECT id, NOME COLONNA1 FROM tabella1 WHERE NOME COLONNA1 LIKE '%" & sek & "%' UNION SELECT id, NOME COLONNA23, NOME COLONNA56, FROM tabella2 WHERE NOME COLONNA23 LIKE '%" & sek & "%' OR NOME COLONNA56 LIKE '%" & sek & "%'         ) as total order by id desc LIMIT "& inizio &","& pageSize

Set stRS = server.CreateObject("ADODB.Recordset")
stRS.Open strSQL, objConn

if tot_record > 0 then
for i=1 to PageSize
if strs.eof<>true and strs.bof<>true then

%>

i risultati devono essere:
NOME DELLA COLONNA dove è stata trovare la parola cercata
+ l'id della stessa colonna dove è stata trovare la parola cercata


<%
stRS.movenext
end if
next
else

%>

Non ci sono prodotti  con il termine cercato

<%
end if
%>
<p align='center'>
<div class="paginazione">
<%

page = page
totPage = pagine_totali
Max = 9

startPage = page
EndPage = page + Max

if page > 1 then
Response.write("<a href=""search.asp?keywords=" & request.form("keywords") &"&page="& page -1 &"""><<</a>")
end if

if EndPage > totPage then EndPage = totPage

for i = StartPage to EndPage
If i = totPage then
Response.Write("")
Else
If i = page then
Response.Write("<b>" & i & "</b>")
else
Response.write ("<a href=""search.asp?keywords=" & request.form("keywords") &"&page=" & i & """> " & i & " </a> ")
end if
end if
next

if page < totpage then
Response.write ("<a href=""search.asp?keywords=" & request.form("keywords") &"&page=" & page +1 & """>>></a> ")
end if
%>
 

Paolo69

Moderatore
Membro dello Staff
MOD
18 Feb 2010
549
13
18
Italy
www.riciclarte.info
Penso che ci voglia un esperto in SQL non in ASP.

Prova con una query del genere:
Codice:
SELECT     *
FROM         Table1 INNER JOIN
                      Table2 ON Table1.id = Table2.id
WHERE     (Table1.colonna1 LIKE 'ciao') OR (Table2.colonna23 LIKE 'giampaolo')
 

djjunior

Utente Attivo
24 Lug 2004
95
1
8
Grazie PAOLO69
per l'aiuto, ma non ho capito che valore richiamare per la stampa a video dei risultati
Ricordo che la ricerca deve essere fatta su tutte e 2 le tabelle indistintamente.
E poi i risultati che vorrei visualizzare dovrebbero essere:

NOME DELLA COLONNA dove è stata trovare la parola cercata (es: colonna1)
+ ID (della stessa colonna) dove è stata trovare la parola cercata (es: 2)

Perchè come vedi da questo esempio di struttura tabella il testo è nei campi di ogni tabella.