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

    Come si scrive questa query?

    Ciao ragazzi,
    ho un file di testo che dovrò usare come filtro con all'interno una serie di parole del tipo: parola1, parola2, parola3, e cosi via.

    Mi serve una mano per creare una query che mi individui una o più parola all'interno del file di testo.

    Con questa query cerco solo le parole che si trovano in un unica riga e che funziona attraverso la variabile $my_text.
    Codice PHP:
    $query "SELECT ID FROM wp_posts WHERE post_content LIKE '%$my_text%'"
    Ma per cercare una o più parole all'interno di un file di testo come devo fare?
    Grazie

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    è la prima volta che faccio una cosa del genere,ma per fare una ricerca da file dovresti scrivere qualcosa tipo:
    Codice PHP:
    $cerca="parola da cercare";
    $var=fopen("nome_file.txt","r");
    $leggi=fread($var,filesize("nome_file.txt"));
    $sss=nl2br($leggi);
    $pos=strpos($sss$cerca);
    if(
    $pos!=""){echo "la parola" $cerca "si trova in posizione: " $pos;}
    else{echo
    "la parola non esiste";}
    fclose($var); 
    premetto che non l'ho provato ma di certo Questo ti tornerà utile

  3. #3
    Ciao e grazie per la risposta.
    Mi spiego meglio a cosa mi serve la query e forse pensandoci meglio non servirebbe neanche un file di testo.
    Comunque: Ho un sito che funzionera in maniera molto simile a digg e vorrei che per ogni articolo inserito, in base ad una serie di parole chiavi che preimposterò io (possono essere una o più parole), gli articoli in questione vengano inseriti nella sezione appropriata.
    Ora, avevo pensato ad un file di testo per semplicità ma mi rendo anche conto che forse basterebbe una tabella db con all'interno tutte le parole chiavi.

    Che ne dici? Un esempio per db riesci a farmelo?
    Grazie ancora

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    mmm... ti spiego come fare, non sapendo le tue conoscenze, se non riesci più tardi provo a farlo... prova così comunque... crei il tuo form dove far inserire l'articolo all'utente, poi quando preme invia, tu gli dirai a che pagina rimandare, anche alla stessa volendo, se la programmi nel modo giusto, poi prelevi il contenuto del testo con la variabile $_POST e sempre con la funzione strpos puoi vedere puoi vedere se la parola è presente (che tu potrai prelevre da db con una select o settando delle variabili a inizio pagina, io farei la seconda) però strpos dice solo la posizione di una parola in ua stringa, se per esempio hai più parole e vuoi vedere la parola che ha la maggioranza dovresti scorrere la variabile post, non so se si può fare una cosa del genere
    Codice PHP:
    $testo=$_POST['testo'];
    $conta1=0;
    $conta2=0;
    for(
    $i=0;$i<strlen($testo);$i++){
    if(
    $testo[$i]=="p" && $testo[$i+1]=="a" && $testo[$i+2]=="r" && $testo[$i+3]=="o" && $testo[$i+4]=="l" && $testo[$i+5]=="a"){$conta1++;}

    if(
    $testo[$i]=="c" && $testo[$i+1]=="h" && $testo[$i+2]=="i" && $testo[$i+3]=="a" && $testo[$i+4]=="v" && $testo[$i+5]=="e"){$conta2++;}
    }

    echo
    "la parola 1 è presente " $conta1 "volte e la parola 2" $conta2 "volte"
    anche questo non l'ho testato e facendo un pò di prove magari lo si può anche ottimizzare ma magari come idea può essere funzionale... poi in base al numero di volte che son presenti le parole puoi decidere la categoria e nel db puoi fare un insert into dove inserisci il testo e la tipologia

  5. #5
    Grazie ancora per il tempo che stai spendendo per me.
    Io avevo pensato ad una funzione che leggendo le parole (facciamo in una tabella db e lasciando da parte il file di testo) ad es. parola1, parola2, parola3, parola4, ecc. le inserisca in un array e poi tramite la query al db verifichi se in un altra tabella esistano una o più di queste parole.
    E' qui che mi blocco, nel fare in modo che venga verificato se le parole presenti nella prima tabella esistano anche nell'articolo della seconda.

  6. #6
    io farei così:

    1. esplodo il testo della ricerca
    $array_parole = explode(" ", $mio_testo);

    2. per ogni parola, cerco nel db
    foreach($array_parole as $parola)
    {
    $query = mysql_query("select col1, col2, col3 from TABELLA
    WHERE customers_firm_name
    LIKE '%" . $parola . "%'");
    if($query) {
    while ($result = lev_db_fetch_array($query)) {
    // qui puoi popolare un array con i risultati man mano che vengono
    }
    }

    }

    spero d'esserti stato d'aiuto

    ciao

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    sta sera magari provo, comunque, il mio metodo controlla l'esistenza di parole appena dopo essere state scritte nell'area del form e poi le inserisce nel db, se tu vuoi prima inserire nel db e poi controllare si può fare... basta che scorri la tabella e poi fai lo stesso mestiere con i vari if, estrai una parola e la controlli, ne estrai un altra e la controlli... la logica è quella, magari se sta sera non sono stanco la faccio prova intanto, magari ti viene prima a te!

    Prova anche con il metodo di Phunx20 che sembra più funzionale del mio

  8. #8
    Ma no dai ti ringrazio, non prenderti impegni.
    Del resto con l'ultimo consiglio mi hai dato un ottimo spunto qul quale lavorare e vedrai che ne vengo a capo.
    Per il momento ti ringrazio davvero moltissimo e semmai avrò necessità ti disturberò io, per ora hai già fatto molto.
    Grazie ancora

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    1,683
    di niente! è un forum siamo qua apposta!
    se hai problemi fammi sapere!

  10. #10
    ...spero d'esserti stato d'aiuto
    ciao
    Tantissimo grazie!

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.