Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di legal-x
    Registrato dal
    Nov 2000
    Messaggi
    628

    News dinamiche con link a keyword

    Salve a tutti,

    vorrei capire se e come posso risolvere questo problema.
    Ho un database prodotti, con nome, descrizione, ecc...

    Ho un altro database con delle news inserite.

    Vorrei che, quando vado a visualizzare le notizie inserite, se nel testo della notizia parlo, o meglio, cito esattamente un nome di un prodotto, questo diventi un link alla skeda del prodotto.

    Quindi credo ci sia da comparare tutte le parole della notizie, e vedere se una o più di queste, coincidono con l'elenco dei nomi dei prodotti, ma mi sembra un processo che potrebbe essere molto pesante ...esiste qualche metodo alternativo ? consigli ? suggerimenti ?

    Grazie.
    Webplease.it WebAgency
    www.webplease.it

  2. #2
    Utente di HTML.it L'avatar di legal-x
    Registrato dal
    Nov 2000
    Messaggi
    628
    un pò di uppete ?
    Webplease.it WebAgency
    www.webplease.it

  3. #3
    per alleggerire potresti fare una cosa del genere:

    connettiti al db dei prodotti e fai un loop per ogni record:

    codice:
    testo_news = lcase(testo_news)
    
    i = 1
    
    Do While Not RS.EOF
    
       prodotto = RS("nome_prodotto")
      
       If InStr(testo_news,prodotto) > 0 Then
          testo_link(i) = prodotto
          dati_link(i) = RS("id_prodotto")
          i = i + 1
       End If
    
       RS.MoveNext
    
    Loop
    
    TotaleLinks = i
    'scrivi la news;

    'testo_news

    codice:
    For j = 1 To TotaleLinks
    
        istr = "<a href='scheda_prodotto.asp?id_prodotto=" & dati_link(j)
        istr = istr & "'>" & testo_link(j) & "</a>
    "
        Response.Write(istr)
    
    Next
    la questione è che tutti i controlli sui db li fa solo per le news visualizzate; quindi, se in una pagina non fai vedere tutte le news del db ma solo un certo numero di news per pagina, il numero di accessi e controlli sul db rimane comunque limitato!


  4. #4
    Utente di HTML.it L'avatar di legal-x
    Registrato dal
    Nov 2000
    Messaggi
    628
    perfetto, a logica mi sembra funzionare,
    l'ho appena compilato nel cervello

    grazie mille, faccio sapere.
    Webplease.it WebAgency
    www.webplease.it

  5. #5
    Utente di HTML.it L'avatar di legal-x
    Registrato dal
    Nov 2000
    Messaggi
    628
    compilato male

    allora, fin quì ci sono:

    testo_news = lcase(testo_news)

    i = 1

    Do While Not RS.EOF

    prodotto = RS("nome_prodotto")

    If InStr(testo_news,prodotto) > 0 Then
    testo_link(i) = prodotto
    dati_link(i) = RS("id_prodotto")
    i = i + 1
    End If

    RS.MoveNext

    Loop

    TotaleLinks = i

    Se ho ben capito tu compari dal RS(Prodotti) il nome se è presente nel testo_news... il totalelinks a che serve ?

    Poi ...qui cosa fai ?


    For j = 1 To TotaleLinks

    istr = "<a href='scheda_prodotto.asp?id=" & dati_link(j)
    istr = istr & "'>" & testo_link(j) & "</a>
    "
    Response.Write(istr)

    Next

    A me dà errore di Type mismatch: 'dati_link' ...cosa potrebbe essere ?
    Se non ho capito male però, io stampo il testo_news, e poi stampo i link a parte ? ..io vorrei invece integrarli nella news stessa, proprio quando vengono citati i nomi dei prodotti...ti faccio un esempio:

    http://www.inter.it/aas/news/reader?N=25572&L=it

    qui trovi linkato "Favalli" e "Mancini" e "Serie A" ...voglio fare la stessa cosa !
    Webplease.it WebAgency
    www.webplease.it

  6. #6
    1. dati_link e testo_link sono array, quindi devi dichiararli prima di usarli (non l'ho messo perchè supponevo fosse sottointeso):

    dim dati_link(100)
    dim testo_link(100)

    100 = dimensione massima array; modificalo come credi

    2. ho messo i link a parte proprio per risolvere il problema che dicevi, cioè fare un algoritmo non troppo pesante; se dovessi fare uno script che cerca nella stringa il nome del prodotto e poi modifica (per ogni prodotto) il testo della news aggiungendo il link... bè, allora si che sarebbe pesantuccio

    3. TotaleLinks serve per capire quanti links ha trovato nella news e quindi per gestire il loop di For...Next

  7. #7
    Utente di HTML.it L'avatar di legal-x
    Registrato dal
    Nov 2000
    Messaggi
    628
    ok mi funziona e va bene così...tranne x un piccolo caso


    nel caso in cui il prodotto è formato da 2 o più parole ? niente !
    offiamente il ciclo confronta una parola alla volta

    suggerimenti ?
    Webplease.it WebAgency
    www.webplease.it

  8. #8
    1. ad essere precisi il ciclo confronta delle variabili stringa e, dato che lo spazio è un carattere alfanumerico, se cerchi "auricolare per telefonino legal-x 2310" lui cercherà esattamente la stringa; certo è che se hai "auricolare per telefonino legal-x2310" lui non trova niente! bisognerebbe dotare lo script di un algoritmo più raffinato...

    2. se vuoi uno script che aagiunga il link sulla parola nel testo si può fare così: nvece di applicare l'algoritmo ogni volta che visualizzi la news, lo applichi 1 sola volta all'atto di inserimento della news nel db, così quando la richiami non hai problemi di attesa perchè lo script è già tutto pronto; ma c'è un problema: una volta inserito e 'manipolato' il testo della news, se vuoi modificare il testo della news, oppure se cambia qualcosa nel db dei prodotti (è cambiato il nome di un prodotto, hai aggiunto prodotti nel db che erano presenti nella news e che non erano stati riconosciuti, elimini un prodotto...), devi preoccuparti di rilanciare lo script, ma non sul testo 'manipolato', bensì sul testo originale, altrimenti è un casino! tento di spiegare velocemente:

    esempio testo originale:
    ...è possibile acquistare la televisione legal-x 16:9 al prezzo di...

    l'algoritmo trova la coincidenza con la stringa:
    televisione legal-x 16:9

    e modifica il testo come:

    codice:
    ...è possibile acquistare la televisione legal-x 16:9 al prezzo di...
    supponi il caso che 1 giorni modifichi il nome del prodotto televisione legal-x 16:9 in televisione legal-x; se riapplichi lo stesso algoritmo come risultato avrai:

    codice:
    ...è possibile acquistare la <a href='scheda_prodotto.aspid_prodotto=23'>televisione legal-x 16:9</a> al prezzo di...
    hai inteso? non è bello!

    quindi io suggerisco di mettere nel db delle news 2 campi:
    1. testo originale
    2. testo manipolato dall'algoritmo ricerca prodotti

    così conservi sempre l'originale su cui poter mettere le 'mani' quando hai modifiche; attenzione: l'algoritmo va riapplicato al testo originale ad ogni modifica della news e ad ogni modifica del db prodotti (inserimento o elinimazione di records o modifica del campo nome_prodotto di un record esistente)

    mentre visualizzi sempre e solo il testo 'manipolato'

    tutto chiaro?? fammi sapere, perchè la cosa non è difficile e abbastanza... divertente da fare!!

  9. #9
    Utente di HTML.it L'avatar di legal-x
    Registrato dal
    Nov 2000
    Messaggi
    628
    gentilissimo come al solito

    grazie, passerò le vacanze di natale su codesto script

    ps: magari nel global.asa lanciare lo script per verificare ? che ne pensi ?
    Webplease.it WebAgency
    www.webplease.it

  10. #10
    direi di no! piuttosto nei file utilizzati per inserire i dati nei relativi db metti un include al file asp con l'algoritmo di controllo; così se fai delle modifiche al condice dell'algoritmo non devi mettere mano a tutti i file! esempio:

    inserisci nuovo record prodotto
    chiudi db prodotti
    include file con algoritmo che si passa tutte le news nel db news e controlla che ci siano riferimenti per il nuovo prodotto inserito (idem su modifica nome prodotto)

    inserisci nuova news
    chiudi db news
    include file con algoritmo che, per tutti i record del db prodotti, fa il controllo di corrispondenza del nome prodotto con il testo della news appena inserita
    (idem su modifica testo news)

    in sostanza hai 2 file.inc (corrispondenti ai 2 tipi di algoritmi) da includere in 4 file (a 2 a 2); include file1.inc in inserisci/modifica prodotto e include file2.inc in inserisci/modifica news

    buon natale! (in realtà io non vado in ferie quindi... mi trovi sempre!! )

    ciao,

    Marco

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.