Salve a tutti
come da titolo avrei un piccolo problema x un form di ricerca
premetto che ho già fatto una ricerca ed infatti ho trovato uno script interessante che ho utilizzato in parte..
il fatto è che funziona solo in parte mi spiego meglio
ho un db con una tabella con cui gestisco un parco macchine usate.
i campi della tabella sono :
idUsato
Marca
Modello
Immatricolazione
Cilindrata
Tipologia
Alimentazione
Prezzo
foto
Km
Accessori
Infomail
ora la mia ricerca è una ricerca x diversi campi quali
Marca
Modello
Tipologia
Alimentazione
Prezzo
ecco sul prezzo ho problemi![]()
x le altre no posto il cod che uso
il problema sul prezzo è che posso fare una ricerca su di un range di prezzi nn sul prezzo specifico quindi passo alla pag asp oltre a tutti gli altri valori, qualora ci siano, e due prezzi che rappresentano le estremità del mio range ...ad es 0 e 5000Codice PHP:<%
Const adOpenKeyset = 1
Const adLockReadOnly = 1
dim marca
marca=trim(request.QueryString("marca"))
dim modello
modello=trim(request.QueryString("modello"))
dim tipologia
tipologia=trim(request.QueryString("tipologia"))
dim alimentazione
alimentazione=trim(request.QueryString("alimentazione"))
dim prezzo1
prezzo1=trim(request.QueryString("prezzo1"))
dim prezzo2
prezzo2=trim(request.QueryString("prezzo2"))
%>
<%
function eliminasp(p)
dim out
out=replace(p," ","")
eliminasp = out
end function
function fixQuotes(theString)
if inStr(theString,"'") > 0 then theString = replace(theString,"'","''")
fixQuotes = theString
end function
function buildSQL(theField,theValue,theOperator)
tmpSQL = ""
if inStr(theValue," ") > 0 then
theValue = split(theValue)
for i = 0 to uBound(theValue)
tmpSQL = tmpSQL & theField & " LIKE '%" & theValue(i) & "%' "
if i < uBound(TheValue) then tmpSQL = tmpSQL & theOperator & " "
next
else
tmpSQL = theField & " LIKE '%" & eliminasp(TheValue) & "%' "
end if
buildSQL = tmpSQL
end function
eseguiRicerca = false
scriptPage = request.serverVariables("PATH_INFO")
sql = "SELECT * FROM TabUsato WHERE "
if len(marca) > 0 then
eseguiRicerca = true
sql = sql & "(" & buildSQL("marca",fixQuotes(marca),"AND") & ") "
end if
if len(modello) > 0 then
eseguiRicerca = true
if len(marca) = 0 then
sql = sql & "(" & buildSQL("modello",fixQuotes(modello),"OR") & ") "
else
sql = sql & "And (" & buildSQL("modello",fixQuotes(modello),"OR") & ") "
end if
end if
if len(tipologia) > 0 then
'tipologia=eliminasp(tipologia)
eseguiRicerca = true
if len(marca) = 0 And len(modello) = 0 then
sql = sql & "(" & buildSQL("tipologia",fixQuotes(tipologia),"OR") & ") "
else
sql = sql & "And (" & buildSQL("tipologia",fixQuotes(tipologia),"OR") & ") "
end if
end if
if len(alimentazione) > 0 then
eseguiRicerca = true
if len(marca) = 0 And len(modello) = 0 And len(tipologia) = 0 then
sql = sql & "(" & buildSQL("alimentazione",fixQuotes(alimentazione),"OR") & ") "
else
sql = sql & "And (" & buildSQL("alimentazione",fixQuotes(alimentazione),"OR") & ") "
end if
end if
if len(prezzo1) > 0 then
eseguiRicerca = true
if len(marca) = 0 And len(modello) = 0 And len(tipologia) = 0 And len(alimentazione) = 0 then
if len(prezzo2) = 0 then
'prezzo2="100000"
sql = "SELECT * FROM TabUsato WHERE TabUsato.prezzo >"& prezzo1 &" "
'sql = "SELECT * FROM Qmax "
else
sql = "SELECT * FROM TabUsato WHERE TabUsato.prezzo >="& prezzo1 &" And TabUsato.prezzo<="& prezzo2 &""
end if
end if
end if
if eseguiRicerca then
' Creo il RECORD SET che contiene tutti i dati selezionati dal Data base
Set rs = Server.CreateObject("ADODB.RecordSet")
rs.Open SQL, conn, adOpenKeyset,adLockReadOnly
' Eseguo la paginazione del record set suddividendo i risultati trovati in pagine e selezionando solo la pagina richiesta
PageNumber = 1
if not isnull(request("PageNumber")) and request("PageNumber") <> "" then
PageNumber = cint(request("PageNumber"))
RsIn = (Pagenumber - 1) * 6
rs.move(RsIn)
end if
numrec=6
' Eseguo un ciclo su tutti i dati del Recod set e creo il documento XML in output con i vari TAG
Do while not rs.eof and numrec > 0
Response.Write "<nome id=""" & rs("Marca") & """/><descrizione h=""" & rs("Modello") &""">" & rs("Immatricolazione") & "</descrizione><foto h=""" & rs("Cilindrata") &""">"& rs("urlImgNews") &"</foto><foto1 h=""" & rs("Alimentazione") &""">"& rs("Tipologia") &"</foto1><prezzo>"& rs("prezzo") &"</prezzo><info k=""" & rs("Km") &""" h=""" & rs("InfoMail") &""">"& rs("Accessori") &"</info>"
rs.movenext
numrec = numrec -1
Loop
'aggiungo al documento XML un nodo che contiene il numero totale di record
response.write "<totrec>"& rs.recordcount &"</totrec>"
rs.close
set rs=nothing
Conn.Close
set conn=nothing
else
response.write "E' necessario specificare almeno una chiave"
end if
%>
il problema è che adesso comè lo script se scelgo ad es alfaromeo ,nel form di ricerca, e la fascia di prezzo da 0 -5000 mi funziona come un or cioè mi fa vedere tutte le alfaromeo anche quello con il prezzo > di 500
anzi direi che nn funge bene![]()
![]()
mentre se ad es scelgo una marca ed un modello o magari una tipologia mi funge bene
ovviamente avrò fatto qualche errore data la mia nubbiaggine in materia
grazie x il Vs tempo
![]()
![]()

Rispondi quotando
