- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- [SQL] Ricerca per fascia di prezzo
-
mmmm.....Sicuramente ho toppato qualcosa, su http://www.motoripoint.com/ricercaprezzo.asp
trovi la prova che ho fatto. Che ho sbagliato?
-
Ti sei solo dimenticato di riaprire la stringa dopo il querystring("top"), ti mando il codice corretto
sql = "SELECT * FROM annunci WHERE prezzo >= " & request.querystring("down") & " AND prezzo < " & request.querystring("top") & " order by id desc"
prova così
-
Grazie, ora non mi da piu' l'errore pero' ho difficolta nel far visualizzare i risultati, vorrei che fossero come nella pagina vetrina.asp ma continua a darmi problemi. Qualche suggerimento?
-
ciao, questa pagina resituisce errore :
http://www.motoripoint.com/searchprice.asp?top=1000&down=0che hai alla linea 53?
-
riga 53 : set rst = Conn.Execute (sql)
Che faccio?
-
l'errore potrebbe essere nella query sql, stampala
-
Scusa il ritardo... eccola qui.
<%
sql = "SELECT * FROM annunci WHERE prezzo >= " & request.querystring("down") & " AND prezzo < " & request.querystring("top") & " order by id desc"
set rs= Conn.Execute (sql)
%> <%
i=0
do until i=30 or RST.EOF
i=i+1
%>
-
io intendevo il risultato della query:
Response.write sql
Ciao
-
Forse il problema potrebbe essere risolto utilizzando la clausola BETWEEN del comando SELECT.
Per esempio: SELECT * FROM mia_tabella WHERE prezzo BETWEEN 500 AND 1000.Questo lascierebbe all'utente la liberta di ricercare la fascia di prezzo che preferisce.
ciao.
-
Niente, sempre errore alla riga 53... il response.write è:
<%response.write Left(rst("modello"), 28)%>
-
Potresti usare il debug fermando l'esecuzione dello script dopo aver composto la variabile "SQL" e "postare" il risultato (print SQL)
grazie.
-
Il tuo problema è che hai impostato il prezzo come campo testuale e poi lo usi come numerico, mi spiego meglio.
Quando in sql cerchi un qualcosa con gli operatori, se il campo è numerico usi direttamente *prezzo = 1000 *se invece il campo è testuale cerchi prezzo = '1000', ovvero il valore deve essere immesso tra apici.
Infatti se clicchi su questo link (dove ho inserito gli apici) il tuo sito "funziona", nel senso che non dà errore ma in realtà no nfunziona inquanto se fai il confronto testuale non confronterà realmente i prezzi ma li tratta come stringhe di testo.Quindi pre farlo andare devi:
- Convertire i campi in interi o real, non so come li chiami precisamente l'access
- Filtrare i dati passati tramite querystring per evitare l'sql injection. In realtà nel link che ho postatato sù, ho inserito gli apici, ma potevo inserire qualsiasi cosa, quindi in asp sostituisci questi:
request.querystring("down")
request.querystring("top")
CON
cint(request.querystring("down"))
cint(request.querystring("top"))
in questo modo se i valori passati no nsono numeri interi l'applicazione si blocca e và in errore, ma almeno non consente l'sql injection. Attenzione che se i valori passati sono reali (con la virgola) anzicchè *cint *devi usare *cdbl
Saluti
Antonio.