Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    Problemi con una ricerca su più campi

    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
    Codice 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 
    0 to uBound(theValue)
          
    tmpSQL tmpSQL theField " LIKE '%" theValue(i) & "%' "
            
    if uBound(TheValuethen 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 SQLconnadOpenKeyset,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 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 5000

    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
    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  2. #2
    up up
    su su un piccolo aiutino..

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

  3. #3


    sembra di aver risolto
    grazie lo stesso

    la verità non è una meretrice che si getta al collo di chi non la vuole ma anzi essa è dotata di una così altera bellezza che anche chi sacrifica tutto per ottenerla non è sicuro di averla raggiunta !

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.