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

    Problema motore ricerca

    ho un problema con il motore di ricerca che sto facendo
    recupero in un array i valori inviati da un form

    <form method="post" action="2.asp">
    <input type="checkbox" name="categoria" value="a">
    <input type="checkbox" name="categoria" value="b">
    <input type="checkbox" name="categoria" value="c">
    <input type="checkbox" name="categoria" value="a">
    <input type="checkbox" name="categoria" value="e">
    <input type="checkbox" name="categoria" value="a">
    <input type="checkbox" name="categoria" value="c">


    <input type="submit" name="invia" value="Invia">
    </form>
    nella pagina 2.asp ho il motore di ricerca dove carico i valori nell'array

    <%
    'connessione al database
    Set Conn = Server.createobject("ADODB.Connection")
    Conn.connectionstring="DRIVER={Microsoft Access Driver (*.mdb)};DBQ="& Server.Mappath("db1.mdb")
    Conn.Open

    'recupero i valori dal form e li carico nell'arrya

    if Request.Form("categoria")<>"" then
    cat= Split(Request.Form("categoria"), ", ")
    for h=LBound(cat) to UBound(cat)
    xx = cat(h)

    set rs = server.CreateObject("ADODB.recordset")
    'cerco i valori che ho scelto nel form
    SQL="SELECT * from categoria where categoria like '%"&xx&"%' ;"
    RS.Open SQL,Conn

    if not rs.EOF then
    %>
    -- <%=rs("id")%><%=rs("categoria")%>

    <%
    end if

    RS.MoveNext
    next
    end if
    %>
    <%
    rs.close
    set re = nothing

    conn.close
    set conn = nothing
    %>

    l'unico problema è che quando estraggo i dati vedo solo il primo valore per ogni categoria

    ad esempi 1 a 3 c e non tutti gli a e i c selezionati

    Come posso fare?
    giro

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    In realtà stai crando tante query quanti sono gli elemnti dell'array ma esegui solo l'ultima, la C appunto.
    Devi creare la base della query
    codice:
    SQL="SELECT * from categoria "
    fuori dal ciclo, e creare i "pezzi" della WHERE dinamicamente in base a quelli selezionati.

    Alla fine dovrai attaccare la parte iniziale della query a questi "pezzi" ed eseguire finalmente una sola query.

    Roby

  3. #3
    io dovrei fare un altro ciclo dove scrorro i dati presenti nell'array e vedere se sono presenti nella tabella "categoria" del db

    quindi un ciclo nel ciclo select o qualcosa del genere
    giro

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il secondo ciclo non l'ho capito...

    Roby

  5. #5
    Il mio problema è far scorrerre l'array e cotrollare che
    i record selezionati siano presenti nella tabella

    es

    a è presente nel primo record nel secondo etcc
    b è presente nel primo record nel secondo ett
    e cosi via

    mi dovrebbe stampare tutti i record che sono stati selezionati

    non solo il primo del db per ogni selezione
    giro

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ma la LIKE allora a che serve?
    Non ci sto capendo nulla...

    Roby

  7. #7
    Scusa mi spiego male

    Like mi serve per cercare nel campo categoria del db se è presente un record che sto cercado

    Questo è il form che vedra l'utente dove puo scegliere cosa cercare
    <form method="post" action="2.asp">
    <input type="checkbox" name="categoria" value="a">
    <input type="checkbox" name="categoria" value="b">
    <input type="checkbox" name="categoria" value="c">
    <input type="submit" name="invia" value="Invia">
    </form>


    qui recupero i valori inviati dal form in un array

    if Request.Form("categoria")<>"" then
    cat= Split(Request.Form("categoria"), ", ")
    for h=LBound(cat) to UBound(cat)
    xx = cat(h)
    Il db è fatto da un campo categoria
    il suo contenuto

    id---categoria
    1-----a
    2-----b
    3-----c
    4-----b
    5-----a
    6-----c



    con l'istruzione
    SQL="SELECT * from categoria where categoria like '%"&xx&"%' ;"

    voglio cercare se a b c etcc contenuti nell'array in quali record della tabella sono
    presenti e stamparli


    Scusa ma mi ero spiegato male
    giro

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    1) Invece di passare il nome della categoria nel form, passa l'ID che è meglio
    2) La LIKE non serve ti basterà una cosa di questo tipo:

    codice:
    categoria = trim(requst.form("categoria"))
    SQL="SELECT * from categoria where id IN ("& categoria &")"
    Stop!

    Roby

  9. #9
    ok grazie mille
    giro

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.