Navigazione

    Privacy - Termini e condizioni
    © 2020 Search On Media Group S.r.l.
    • Registrati
    • Accedi
    • CATEGORIES
    • Discussioni
    • Non letti
    • Recenti
    • Hashtags
    • Popolare
    • Utenti
    • Stream
    • Interest
    • Categories
    1. Home
    2. Categorie
    3. Coding e Sistemistica
    4. Coding
    5. [SQL] Ricerca per fascia di prezzo
    Questa discussione è stata cancellata. Solo gli utenti con diritti di gestione possono vederla.
    • M
      markuz User Attivo • ultima modifica di

      [SQL] Ricerca per fascia di prezzo

      Salve a tutti,
      vorrei implemantare sul mio sito di annunci di auto usate, motoripoint.com la possibilita' di fare una ricerca per fascia di prezzo. Mi sembra un po' complesso , qualcuno puo' aiutarmi?

      Grazie in anticipo!

      0 Miglior Risposta Ringrazia Cita Rispondi

        1 Risposta Ultima Risposta
      • S
        seraphimfoa User Attivo • ultima modifica di

        serve come minimo qualche informazione sul DB, in particolare sulla tabella che contiene le macchine.

        Suggerisco che la suddivisione in fasce di prezzo la stabilisca tu staticamente, quindi fai il tuo blocco "ricerca per fascia di prezzo" che contiene una sequenza di link del tipo:
        100-500 euro
        1000-2000 euro
        etc... etc...

        ovviamente senza lasciare buchi tra le fascie.

        Questi link ti dovranno mandare ad una pagina tipo
        searchprice.asp?top=xxx&down=yyy

        dove xxx è il prezzo massimo della fascia e yyy è quello minimo.

        in questa pagina searchprice devi eseguire la seguente query sul database:

        Supponendo che tu abbia una tabbella tblAutoveicoli che abbia un campo di tipo valuta che si chiama prezzo

        "SELECT * FROM tblAutoveicoli WHERE prezzo >= " & request.querystring("down") & " AND prezzo < " & request.querystring("top")

        il minoreuguale solo da un lato per evitare accavallamenti.

        Fammi sapere se ti va bene o se le specifiche sono differenti.

        0 Miglior Risposta Ringrazia Cita Rispondi

          1 Risposta Ultima Risposta
        • M
          markuz User Attivo • ultima modifica di

          Grazie, elaboro il tutto e ti faccio sapere se funge!

          0 Miglior Risposta Ringrazia Cita Rispondi

            1 Risposta Ultima Risposta
          • M
            markuz User Attivo • ultima modifica di

            mmmm.....Sicuramente ho toppato qualcosa, su http://www.motoripoint.com/ricercaprezzo.asp
            trovi la prova che ho fatto. Che ho sbagliato?

            0 Miglior Risposta Ringrazia Cita Rispondi

              1 Risposta Ultima Risposta
            • S
              seraphimfoa User Attivo • ultima modifica di

              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ì

              0 Miglior Risposta Ringrazia Cita Rispondi

                1 Risposta Ultima Risposta
              • M
                markuz User Attivo • ultima modifica di

                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?

                0 Miglior Risposta Ringrazia Cita Rispondi

                  1 Risposta Ultima Risposta
                • L
                  legolas Moderatore • ultima modifica di

                  ciao, questa pagina resituisce errore :
                  http://www.motoripoint.com/searchprice.asp?top=1000&down=0

                  che hai alla linea 53?

                  0 Miglior Risposta Ringrazia Cita Rispondi

                    1 Risposta Ultima Risposta
                  • M
                    markuz User Attivo • ultima modifica di

                    riga 53 : set rst = Conn.Execute (sql)

                    Che faccio?

                    0 Miglior Risposta Ringrazia Cita Rispondi

                      1 Risposta Ultima Risposta
                    • L
                      legolas Moderatore • ultima modifica di

                      l'errore potrebbe essere nella query sql, stampala

                      0 Miglior Risposta Ringrazia Cita Rispondi

                        1 Risposta Ultima Risposta
                      • M
                        markuz User Attivo • ultima modifica di

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

                        0 Miglior Risposta Ringrazia Cita Rispondi

                          1 Risposta Ultima Risposta
                        • L
                          legolas Moderatore • ultima modifica di

                          io intendevo il risultato della query:

                          Response.write sql

                          Ciao

                          0 Miglior Risposta Ringrazia Cita Rispondi

                            1 Risposta Ultima Risposta
                          • T
                            trykel User • ultima modifica di

                            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.

                            0 Miglior Risposta Ringrazia Cita Rispondi

                              1 Risposta Ultima Risposta
                            • M
                              markuz User Attivo • ultima modifica di

                              Niente, sempre errore alla riga 53... il response.write è:
                              <%response.write Left(rst("modello"), 28)%>

                              0 Miglior Risposta Ringrazia Cita Rispondi

                                1 Risposta Ultima Risposta
                              • T
                                trykel User • ultima modifica di

                                Potresti usare il debug fermando l'esecuzione dello script dopo aver composto la variabile "SQL" e "postare" il risultato (print SQL)
                                grazie.

                                0 Miglior Risposta Ringrazia Cita Rispondi

                                  1 Risposta Ultima Risposta
                                • T
                                  tonyx User Attivo • ultima modifica di

                                  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.

                                  0 Miglior Risposta Ringrazia Cita Rispondi

                                    1 Risposta Ultima Risposta
                                  Caricamento altri post
                                  Rispondi
                                  • Topic risposta
                                  Effettua l'accesso per rispondere
                                  • Da Vecchi a Nuovi
                                  • Da Nuovi a Vecchi
                                  • Più Voti