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

    [sql] Ricerca di una stringa nei testi dei soli "amici"

    Salve...

    Ho un problema riguardo a una funzione di ricerca che vorrei fare in php.
    Sono alle prime armi con php, sto tentando di costruire una semplice comunità di scambio testi, sul modello d'una rete sociale.
    con la possibilità di creare "Amicizie" tra gli utenti, di rendere alcuni contenuti visibili "solo agli amici".

    Voglio inserire una funzione che mi permetta di ricercare una parola: ovviamente tale ricerca è da effettuarsi su tutti i contenuti marcati come "pubblici" e sui contenuti "visibili agli amici", di quegli utenti di cui sono amico... Non so se mi sono spiegato...

    Il database è composto in questa maniera:

    Database Amici
    IdAmicizia IDutente IDAmico Accettata (1 sì - 0 no)
    1 32 27 1
    2 27 31 0
    3 33 37 1
    ecc..

    Dove: IDutente e IDamico sono chiave esterna che punta agli username ed "Accetta" indica se la richiesta d'amicizia è stata accettata o è in pendenza.

    Testi:

    ID Titolo Testo Autore Visibilità

    Dove:
    nel campo autore c'è la chiave esterna al solito username
    nel campo Visibilità si alterna la stringa "Tutti" o "SoloAmici" (avrei potuto mettere un numero, lo so, ma ormai :-p), che specifica le categorie di utenti che possono accedere a quei testi.

    Sinceramente è da un po' che ci provo e mi sto incasinando tra i Join i Like e le Union... :-S

    Devo forse fare una ricerca in due tempi?
    Prima cercare tra quelli pubblici (e mettere il risultato in una variabile), poi cercare la stringa voluta tra i testi privati delle persone a cui sono amico...
    ma mi sembra un po' complesso...

  2. #2
    Utente di HTML.it L'avatar di DjBart
    Registrato dal
    Jan 2009
    Messaggi
    346
    In poche parole vuoi uno script che avendo 2 id (il mio e tuo ) vede se sono amici e prendere il testo ?

  3. #3
    ....umhh...
    piuttosto uno script che ricerchi una parola data in tutti i testi contenuti nel database che io ho i diritti per vedere (o perché son pubblici o perché sono privati ma appartengono ad amici).

    Se trova la chiave cercata in un testo visibile ai soli amici, ed io però non sono amico di quella data persona, non lo include nei risultati.

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2003
    Messaggi
    591
    ciao,

    prova con un sql tipo

    Codice PHP:
    select b.id_testo
    from dbamici a
    testi b
    where a
    .idutente='UTENTE'
    and a.accettata=1
    and b.autore=a.idamico
    and (b.visibilità="Tutti" or b.visibilità="SoloAmici" )
    and 
    b.testo like "TESTO DA CERCARE" 

  5. #5
    provala...
    Codice PHP:
    $id_utente_che_effettua_la_ricerca 
    $parola_da_ricercare

        SELECT 
            testi
    .id_testo
        FROM
            testi
        LEFT OUTER JOIN
            dbamici 
            ON 
                dbamici
    .IDutente='".$id_utente_che_effettua_la_ricerca."' 
                
    OR 
                
    dbamici.IDAmico='".$id_utente_che_effettua_la_ricerca."'
        
    WHERE
            
    (
                
    testi.visibilità='Tutti'
                
    OR
                (
    testi.visibilità='SoloAmici' AND dbamici.accettata=1)
            )
            AND
                
    testi.testo LIKE '%".$parola_da_ricercare."%' 

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.