Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461

    query ricerca complicata

    allora ho un problema moolto complicato (per me)
    allora sto creando una pagina con un form di ricerca,
    il risultato deve poter assomigliare a questo procedimento presente in questo sito web:
    http://www.cambiocasa.it/i.php (naturalmente il mio deve essere in ASP)
    sono riuscito a creare form e pagina di risposta ma ho problemi con la query di ricerca in quanto sono vincolato a dover compliare tutto il form per poter visualizzare(in caso siano presenti)
    gli immobili.
    invece l'idea è quella di una ricerca piu libera,tipo il sito appena linkato che in base a quello che scelgo(non perforzxa quindi devo scegliere tutto quello che propone il for)mi rimanda dei risultati che variuano a seconda del filtro che scelgo

    la mia query è cosi strutturata:

    sql="SELECT * FROM IMMOBILI WHERE TIPO ='"&tipo&"' AND CITTA ='"&citta&"' AND PROVINCIA ='"&provincia&"' AND REGIONE ='"&regione&"' AND CONTRATTO ='"&contratto&"' AND PROMOZIONE ='"&promozione&"' "

    pero non mi da il risultato che desidero in quanto sono,come ho detto sopra,vincolato alla compilazione di tutti i campi del form

  2. #2
    Utente di HTML.it L'avatar di viki1967
    Registrato dal
    Feb 2003
    Messaggi
    1,757
    Cerca sul forum per operatore LIKE.
    A S P : tutto il resto è noia...
    L I N U X : forse mi "converto"...

  3. #3
    Piu che il LIKE mi sa' che e' questo quello che vuoi sapere.

    Dato che parli del fatto che per ottenere dei risultati devi impostare tutti i filtri, forse dovresti costruire la query in base ai parametri passati dal form.

    Mi spiego.
    il codice che segue e' stato rivisto e corretto
    codice:
    <%
    sql = "select * from mytable"
    
    opzione1 = request.form("opzione1")
    
    '  presupponiamo che l'opzione1 e' testo:
    if  opzione1 <> "" then sql2 = " where opzione1='" & opzione1 & "'"
    
    
    opzione2 = request.form("opzione2")
    
    '  immaginiamo che opzione2 sia un numero, magari proveniente da un select,
    '  imposti il default vuoto come 0 e di conseguenza:
    if int(opzione2) > 0 then
        if len(sql2) = 0 then sql2 = " where" else sql2 = sql2 & " and"
        sql2 = sql2 & " opzione2=" & opzione2
    end if
    
    opzione3 = request.form("opzione2")
    
    if int(opzione3) > 0 then
        if len(sql2) = 0 then sql2 = " where" else sql2 = sql2 & " and"
        sql2 = sql2 & " opzione3=" & opzione3
    end if
    
    '  e via discorrendo per le altre opzioni.
    '  ......
    '  al termine aggiungi tutta la stringa sql2 con le opzioni della query alla query iniziale
    
    sql = sql & sql2
    
    %>
    "Perche al Cavaliere Nero non gli dovete cagare il cazzo."
    Blog
    Like pizza?
    Get Pizza!

  4. #4
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    ecco!
    è quello che piu o meno o pensato anchio!
    praticamente la query si crea in base alle scelte che l'utente fa...
    di conseguenza io avendo sei select dalle quali l'utente sceglie le varie cose in base alle sue scelte la query si deve modellare in diversi modi!
    io inizialmente avevo pensato ad una lunga scala di if then else if...ma mi sono incartato adesso vedo il tuo ragionamento!
    comunuqe grazie!

  5. #5
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    <%
    apriconn ("mySQLdb")
    if request("Button")="Cerca" then
    parola=request("lettere")

    sql="SELECT * FROM IMMOBILI "

    tipo=request("tipo")

    if tipo<>"" then
    sql2="WHERE TIPO ='"&tipo&"'"
    end if

    citta=request("citta")

    if int(citta)<>"" then
    if len(sql2) = 0 then sql2 = " WHERE" else sql2 = sql2 & " AND"
    sql2 = sql2 & " CITTA=" & citta
    end if

    provincia=request("provincia")

    if int(provincia)<>"" then
    if len(sql2) = 0 then sql2 = " WHERE" else sql2 = sql2 & " AND"
    sql2 = sql2 & " PROVINCIA=" & provincia
    end if


    regione=request("regione")

    if int(regione)<>"" then
    if len(sql2) = 0 then sql2 = " WHERE" else sql2 = sql2 & " AND"
    sql2 = sql2 & " REGIONE=" & regione
    end if


    promozione=request("promozione")

    if int(promozione)<>"" then
    if len(sql2) = 0 then sql2 = " WHERE" else sql2 = sql2 & " AND"
    sql2 = sql2 & " PROMOZIONE=" & promozione
    end if

    contratto=request("contratto")

    if int(contratto)<>"" then
    if len(sql2) = 0 then sql2 = " WHERE" else sql2 = sql2 & " AND"
    sql2 = sql2 & " CONTRATTO=" & contratto
    end if

    sql=sql & sql2
    response.Write(sql)
    end if
    %>

    lo provo per stampare la query ma mi da questo errore:

    Microsoft VBScript runtime error '800a000d'

    Type mismatch: '[string: "Como"]'

    /Admin/cerca.asp, line 134

  6. #6
    se usi int(variabile) non puoi confrontarlo con una stringa
    if int(citta)<>"" then
    Meglio magari
    codice:
    if int(citta) > 0 then
    Ovviamente il select da cui proviene la variabile citta sara' strutturato tipo:
    codice:
    <select name="citta">
       <option value="0">----</option>
       <option value="1">Milano</option>
       <option value="2">Roma</option>
       <option value="3">Napoli</option>
       <option value="4">Palermo</option>
    </select>
    "Perche al Cavaliere Nero non gli dovete cagare il cazzo."
    Blog
    Like pizza?
    Get Pizza!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    infatti è cosi!
    adesso funziona!
    grazie mille sei il mio salvatore!!!
    gia che son qui volevo chiedere se è possibile fare questo:
    io scelgo tra le mie select i filtri che mi interessano, mettiamo che ne scelgo uno o 2 ma non tutti, quando carico la pagina di ricerca poi decido di cercare nella ricerca appena fatta aggiungendo un'altro filtro quindi scelgo un'altra select(come il sito che ho linkato sopra)
    esempio:
    scelgo tutti gli immobili di como,clicco il pulsante cerca e mi stampa i risultati di tutti gli immobili di como.pero poi voglio vedere solo i bilocali di como e quindi scelgo nella select TIPO il tipo di immobile "bilocale" allora al risultato della ricerca mi fa un'altra ricerca

  8. #8
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    ca..o

    la query stampata è cosi:
    SELECT * FROM IMMOBILI WHERE TIPO='- - - - - - - - - -'' AND CITTA='Brenna' AND PROVINCIA='- - - - - - - -' AND REGIONE='- - - - - - - -' AND PROMOZIONE='- - - - -' AND CONTRATTO='- - - - - - -

    pero quando la eseguo per farmi stampare i rislutati mi da errore:

    Microsoft OLE DB Provider for ODBC Drivers error '80040e21'

    ODBC driver does not support the requested properties.

    /Admin/funzioni.asp, line 11

    che mooolto probabilmente fa riferimento alla sintassi della query visto che spesso mi rompeva le p... perche con database mySQL devo seguire una precisa sintassi!

    il problema adesso è come deve essere scritta la query!

  9. #9
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    tutto ok ho sistemato il problema della sintassi della query!

    pero cè sempre il discorso della ricerca nella ricerca che non so come fare..

  10. #10
    Utente di HTML.it
    Registrato dal
    Jun 2007
    Messaggi
    461
    ho pensato e se metto la query che si crea la prima volta che l'utente effettua la ricerca in una variabile sessione:

    ...
    sql=sql&sql2
    session("sql")=sql

    si puo'?

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.