Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567

    Motore di ricerca interno mi da errore di sintassi

    Ciao a tutti ho messo un motore di ricerca interno al sito sembra funzionare correttamente, ma quando metto due o più parole sorgoni i problemi.
    Lo spazio inserito nel form tra una parola e l'altra viene identificato con % e questo mi genera un errore di sintassi in SQL, come posso risolvere???

    Grazie

  2. #2
    Prova a fare un replace quando recuperi i dati del form.

  3. #3
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    come lo posso fare correttamente con questo simbolo % in modo che diventi solo uno spazio?

  4. #4
    Originariamente inviato da flash20
    come lo posso fare correttamente con questo simbolo % in modo che diventi solo uno spazio?
    codice:
    Tuo_valore=Request.Form("Tuo_valore")
    Tuo_valore= Replace (Tuo_valore, " ", "%20" )

  5. #5
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Non funziona lo stesso, guardando bene mi sono accorto che forse non era il passaggio della variabile, la selezione sql è:

    codice:
    sql & "(articolo like '%" & arrCerca(i) &"%' OR descrizione1 like '%" & arrCerca(i) &"%')"
    e l'errore che da è:

    codice:
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14'  
    [MySQL][ODBC 3.51 Driver][mysqld-4.0.24-log]You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'AND (articolo like '%gocciolante%' OR descrizione1 like '%gocci  /pagina.asp, line 183
    L'errore c'è solo con più di una parola nella ricerca

  6. #6
    ----------------------------------------------------
    impariamo a fare un po' di debug

    *subito* dopo la composizione della stringa SQL metti

    Response.Write "maGGica SQL...: " & sql
    Response.Flush

    poi posta quello che viene a video
    ----------------------------------------------------

  7. #7
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    E' uscito questo:

    codice:
    maGGica SQL...: SELECT * FROM florsystem WHERE (articolo like '%ala%' OR descrizione1 like '%ala%') LIMIT 0, 10
    Le parole che ho inserito nel form di ricerca sono: ala gocciolante

  8. #8
    sicuro che la LIMIT vada in fondo?

  9. #9
    Utente di HTML.it L'avatar di flash20
    Registrato dal
    Dec 2003
    Messaggi
    567
    Effettivamente togliendo nella selezione sql limit funziona, però ho necessità di usarlo per poter dividere il risultato in più pagine, la stringa che ho usato è:

    codice:
     
     sql = "SELECT * FROM tabella WHERE "
     For i = LBound(arrCerca) To UBound(arrCerca)
      If arrCerca(i)<>"" Then   
    If i> 0 Then _
     sql = sql & " AND "
    sql = sql & "(articolo like '%" & arrCerca(i) &"%' OR descrizione1 like '%" & arrCerca(i) &"%')"&_
          " LIMIT " & (currentPage - 1) * pageSize & ", " & pageSize
       set rs=conn.execute (sql)

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    La LIMIT va in fondo ma la devi aggiungere alla fine, fuori dalla FOR.

    Roby

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.