[ASP] Motore di ricerca interno su 2 tabelle

djjunior

Utente Attivo
24 Lug 2004
99
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
 
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
%>
 
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')
 
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.
 

Discussioni simili