Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    131

    MOTORE DI RICERCA IN DB

    Ciao a tutti,

    ho un problema probabilmente semplice per voi ma incredibilmente complesso per me

    Dunque ho uno script che mi mostra degli articoli di una determinata categoria con il semplice articoli.asp?categoria=sport
    dove mi prende tutti gli articoli che hanno nel campo X del database la parola sport e me li mostra a video.

    Peccato che un articolo puo' appartenere a piu' categorie e quindi ho creato 5 campi (cat1, cat2 ecc...)

    ES:
    ARTICOLO 1 CAT1=SPORT CAT2=CALCIO
    ARTICOLI 2 CAT1=CALCIO CAT2=SQUADRA
    ma come posso combinare in qs caso la cat2 dell'articolo1 con la cat1 dell'articolo 2?

    Quello che ho pensato e' di inserire un campo solo contenente tutte le parole contenute ore nelle 5 categorie
    ES: CATUNICA=SPORT,CALCIO,SQUADRA
    e avere uno script che mi ricerchi all'interno dell'unico campo la parola scelta (articolo.asp?catunica=sport)e mi restituisca solo gli articoli che hanno quella parola. in questo caso con la parola sport mi restituisce entrambi gli articoli ma con squadra solo l'articolo 2.


    Qualcuno di voi mi sa aiutare??

    per favoreee!!



    grazie mille

    ciao

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Ti servirebbe in realtà una tabella collegata dove per ogni articoli vai ad indicare gli id delle categorie alle quali è relazionato.
    Tralasciando questo metodo puoi mettere tutte le categorie in un solo campo e saparate dalla virgola.

    Nella query userai la LIKE

    codice:
    SELECT * FROM tabella WHERE CATUNICA LIKE '%"& categoria &"%'"
    Roby

  3. #3
    Originariamente inviato da Roby_72
    Ti servirebbe in realtà una tabella collegata dove per ogni articoli vai ad indicare gli id delle categorie alle quali è relazionato.
    Tralasciando questo metodo puoi mettere tutte le categorie in un solo campo e saparate dalla virgola.

    Nella query userai la LIKE

    codice:
    SELECT * FROM tabella WHERE CATUNICA LIKE '%"& categoria &"%'"
    confermo prima metti in relazione le tabbelle e poi con la funzione LIKE crei il motore di ricerca interno al sito...

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Se usi la LIKE non ti serve la relazione con nessuna tabella.

    Roby

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    131
    PRIMA DI TUTTO GRAZIE, GRAZIE

    Potrei assegnare un ID ad ogni categoria ma poi il discorso non sarebbe uguale? Avendo articoli che appartengono a piu' categorie come farei a richiamarne 2 insieme?

    Ho provato poi a usare il LIKE ma non riesco a farlo funzionare

    vi posto il codice e se avete voglia di aiutarmi mi farebbe piacere:


    <%
    categoria = request.querystring("categoria")
    categoria2 = request.querystring("categoria2")
    if categoria="" and categoria2="" then
    categoria="TUTTI"
    end if
    %>
    <%
    Dim Conn
    Set Conn = Server.CreateObject("ADODB.Connection")
    conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("../mdb-database/db.mdb")
    Dim rs
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open "select * from ARTICOLI WHERE listpublic=-1 AND categoria='" & categoria & "' OR categoria2='"& categoria2 & "' order by ID DESC", conn

    Do while NOT RS.EOF
    %>
    <%
    Dim id
    Dim ARTICOLI
    Dim description
    Dim listpublic
    Dim categoria
    Dim categoria2
    Dim img

    do while not rs.EOF
    Response.write ("<td><table align=""center""></td>")
    Response.write ("<TABLE height=""128"" cellSpacing=""0"" cellPadding=""0"" width=""183"" bgColor=#ffffff border=""0"" align=""center"">")
    Response.write ("<TBODY>")
    ECC...

    COME POSSO USARE QUI IL LIKE?

    GRAZIE MILLE

    CIAO

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    <% 
    categoria = request.querystring("categoria") 
    categoria2 = request.querystring("categoria2") 
    if categoria="" and categoria2="" then 
    str_categoria="TUTTI" 
    else
    str_categoria=categoria &","& categoria2
    end if 
    
    Dim Conn 
    Set Conn = Server.CreateObject("ADODB.Connection") 
    conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("../mdb-database/db.mdb") 
    Dim rs 
    Set rs = Server.CreateObject("ADODB.Recordset") 
    strSQL = ""
    strSQL = strSQL &"select * from ARTICOLI WHERE listpublic=-1"
    if str_cat<>"TUTTI" then
    strSQL = strSQL &" AND categoria LIKE '"& str_categoria &"'"
    end if
    strSQL = strSQL &" ORDER BY ID DESC"
    
    rs.Open strSQL,conn 
    Do while NOT RS.EOF 
    ...
    ...
    %>

    Roby

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    131
    Grazie ROBY.

    La pagina si carica. mi restituisce di default tutti gli articoli (TUTTI)
    Se provo a scrivere nel browser articoli.asp?like=sport mi restituisce sempre TUTTI

    Se ho capito bene con qs istruzione lui mi recupera le parole (eventualmente separate da una virgola) che si trovano nel campo CATEGORIA E/O CATEGORIA2

    Ma come mai non funziona?

    grazie ciao

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    No, recupera, come hai scritto tu, le due categorie che provengono dal form.
    I "name" del form devono chiamarsi "categoria" e "categoria2".
    Se il form lo lasci vuoto tira fuori tutto dal db.

    Roby

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    131
    in verità non ho un form e quindi nemmeno i name...
    Ho dei link sui quali imposto dei collegamenti tipo:

    <a href="articoli.asp?like=sport>sport</a>

    e mi restituisce gli articoli di sport

    ma per capire visto che nn riesco ad andare avanti:

    a quanto ho capito mi posso tenere solo 1 campo diciamo CATEGORIA dove all'interno inserisco le categorie separate da una virgola (calcio,sport,tennis).
    A quel punto interrogando il db con il link scritto sopra mi dovrebbe riconoscere tutti gli articoli che hanno al loro interno la parola sport separata dalla virgola. In qs modo posso inserire tutte le categorie che voglio...

    Giusto? Pero' non riesco a farlo funzionare
    CIoe' se nel campo categoria inserisco piu' parole non me le risconosce

    Come si fa? scusa se ti tedio e ancora grazie

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    <a href="articoli.asp?categoria=sport>sport</a>
    <a href="articoli.asp?categoria2=cinema>cinema</a>
    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 © 2025 vBulletin Solutions, Inc. All rights reserved.