Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    7

    problemi con motore di ricerca

    ciao a tutti,
    ho un motore di ricerca in ASP+MYSQL e il problema è questo:
    dopo effettuata la ricerca e per esempio trovate 3 pagine con 25 documenti che appunto soddisfano la ricerca, quando si passa alla pagina 2 o 3 si perde la query e dato che al momento, per prova, ho 70 documenti e impostato il numero di doc per pagina a 10 le pagine passano da 3 a 7 e dice che ha trovato 70 documenti...

    per prova ho fatto stampare la select e il risultato è questo appena effettuata la ricerca su la parola deliberazione:

    codice:
    SELECT COUNT(*) AS temp FROM searchcom WHERE parola_chiave LIKE '%deliberazione%' or massime LIKE '%deliberazione%' Select * From searchcom Where ( parola_chiave like '%deliberazione% 'Or massime like '%deliberazione%' ) LIMIT 0, 1
    e fino a qui tutto ok...

    quando clicco sulla pagina seguente stampa questo:

    codice:
    SELECT COUNT(*) AS temp FROM searchcom WHERE  parola_chiave LIKE '%%'  or massime LIKE '%%' Select * From searchcom Where (parola_chiave like '%%' Or massime like '%%' ) LIMIT 1, 1
    appunto la select è vuota perciò il risultato è che si perdono le 3 pagine perchè tira fuori tutto quello che c'è nel DB e diventano 7

    questa è la select per il conteggio:


    codice:
    sql1 = "SELECT COUNT(*) AS temp FROM searchcom WHERE  parola_chiave LIKE '%" & request.form("search") & "%'  or massime LIKE '%" & request.form("search") & "%' " set rs = cn.execute(sql1) 
    Dim quanti, a, b 
    quanti = CInt(rs("temp")) 
    b = 1 
    a = (pag - 1) * b 
    rs.Close
    e questa è la select per la ricerca:


    codice:
    if len(search) > 0 then 'If quanti > 0 Then 
    Dim sql 
    sql = "Select * From searchcom Where" 
    If request.form("criterio") <> "ext" Then 
    ArrSearch = Split(search)
     x = 0 
    for each Word In ArrSearch 
    sql = sql & " ( parola_chiave like '%" & request.form("word") & "%' Or massime like '%" & request.form("word") & "%' ) "
     If Not x = UBound(ArrSearch) Then sql = sql & " or" ' 
     
    x = x + 1 
    Next
     Else 
    sql = sql & " ( parola_chiave like '%" & request.form("search") & "%'Or massime like '%" & request.form("search") & "%' ) " 
    End If 
    sql = sql & " LIMIT " & a & ", " & b
     rs.CursorType = adOpenDynamic
    rs.Open sql, cn
    ho fatto molte prove, anche cambiare "request.form("word")" in "request.querystring("word")" ma niente di fatto...
    grazie a tutti per l' aiuto che potrete darmi a capire dov'è il problema...
    Rob
    ps se serve tutto il codice lo posto....

  2. #2
    Come passi da una pagina all'altra?
    Se noti, come l'hai scritto, lui inserisce nell'SQL il valore di un campo FORM.
    Ovviamente questo campo form non viene portato tra una pagina e l'altra.
    Perchè non ti salvi in variabili di sessione il valore ricercato?

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    7
    prima di tutto grazie per la risposta...

    ho inserito, nei vari tentatitivi:

    codice:
     session ("search") = request.form ("search")
    e nella paginazione passo la variabile cercata così:

    codice:
    <a title="Vai alla pagina <%=i%>"  href="<%=PageName%>?go=searchcom3&pag=<%=i%>&search=<%=Server.UrlEncode(search)%>">[b]<%=i%></a>
    e infatti quando passo con il cursore sulla paginazione si vede che la passa:
    codice:
    www.default.asp?go=searchcom3&pag=2&search=deliberazione
    e anche sulla barra dell'indirizzo una volta cliccato sulla pagina seguente da lo stesso risultato :

    codice:
    www.default.asp?go=searchcom3&pag=2&search=deliberazione
    in pratica il valore cercato lo passa...
    per questo non riesco a capire dovè il problema......

  4. #4
    Dunque , mi sembra chiaro che tu passi prima il testo ricercato con un POST, ma poi cambi pagina con dei GET, quindi è ovvio che ti perdi quanto cercato per strada.

    Fai una cosa: quando fai il submit del form, salva in sessione.
    Se il request.form <>"" allora la salvi in sessione, altrimenti vuol dire che stai cambiando pagina

    Cambia anche l'SQL inserendo la variabile di sessione e non il request.form

  5. #5
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    7
    ciao,
    allora ho lasciato:
    codice:
     session ("search") = request.form ("search")
    e ho cambiato sia la select Count che la select di ricerca da :
    codice:
    request.form("search")
    a:

    codice:
     Replace(search, "'", "''")
    adesso funziona....


    ultimamente ho fatto il passaggio da Access a Mysql e ho tribolato non poco (non è che sono proprio il mago della programmazione... ) e mi era stato consigliato, appunto il "request.form("search")" e sembrava funzionare però non mi ero accorto del problema di cui stiamo parlando...

    ho cambiato anche :

    codice:
    &search=<%=Server.UrlEncode(search)%>
    nel link in :

    codice:
    &search=<%=search%>
    era questo il passaggio di pagina in GET?


    mi è stato consigliato (ma sembra che funziona) di togliere il Replace dalla Select e metterlo da solo prima così:
    codice:
     
    parola_chiave =  Request.Form("parola_chiave")
    massime =  Request.Form("massime"
    
    parola_chiave=Replace(parola_chiave,"'","''")
    parola_chiave=Replace(parola_chiave\\","\\\\")
    
    massime=Replace(massime,"'","''")
    massime=Replace(massime,"\\","\\\\")
    tu cosa ne dici? funzionerebbe meglio o è la stessa cosa visto, ripeto, che al momento funziona bene?
    ciao e grazie ancora per la dritta

  6. #6
    Si, puoi anche fare così:

    codice:
    function preleva_da_form(campo_form)
    preleva_da_form = request.form(campo_form)
    preleva_da_form = replace(preleva_da_form , "'", "''" )
    preleva_da_form = replace(preleva_da_form , "\\", "\\\\" )
    end function
    
    parola_chiave =  preleva_da_form("parola_chiave")
    massime =  preleva_da_form("massime")
    Io mi faccio sempre una funzione a seconda del tipo di campo, così sono sicuro di non essermi perso qualche controllo per strada.

  7. #7
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    7
    ok proverò!
    ricordati che hai un bel caffè che ti aspetta se passi da Roma....

    Rob

  8. #8
    Ne approfitterò allora! Ogni tanto da Roma si passa... Ciao!

  9. #9
    Utente di HTML.it
    Registrato dal
    Feb 2003
    Messaggi
    7
    approfittta...approfitta...

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 © 2025 vBulletin Solutions, Inc. All rights reserved.