Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Query di ricerca sulle singole parole di un campo

    Ciao a tutti,
    domanda, devo effettuare una ricerca all'interno di un campo composto da x numero di parole. Ciò che voglio fare è effettuare la ricerca sulle singole parole, partendo esclusivamente dall'inizio della parola stessa.
    Es.

    campo database = ciao cicogna come va la vitaccia?
    parola di ricerca = ci

    La ricerca me la deve fare su ogni parola che inizia per "ci", senza ovviamente trovarmi le parole che contengono la parola "ci" (nell'esempio non deve restituire la parola vitaccia).

    Idee?

  2. #2
    La prima cosa che mi viene in mente è quella di utilizzare la funzione explode() per scomporre la stringa in parole ed a questo punto scorrere l'array risultante alla ricerca delle eventuali parole che inizino con la stringa di ricerca.
    Un alternativa potrebbero essere le espressioni regolari.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  3. #3
    fammi capire, tramite una casella di testo quando si premono le lettere "ci" vuoi che si faccia una ricerca sul database in cui si trovino solo le corrispondenze alle prime parole trovate nelle frasi giusto?

    se è così devi pensare ad un approccio Ajax, in cui per ogni evento javascript OnKeyUp si forma una richiesta http al server, il quale ciclicamente dovrà controllare ad ogni richiesta la corrispondenza sul database della lettera premuta, una dopo l'altra... Il discorso è più articolato di quel che sembra, ti consiglio qualche studio su Ajax..
    Perpetual Ribellion With Absolutely No Cause

  4. #4
    guardate che mi sa che il problema ce l'abbia nel database non nel php... anche perchè, satifal, non è che uno si scarica tutto il db in php e poi fa l'explode sulle parole...

    prova a vedere se questo ti ispira, soprattutto per le funzioni nel db dando un occhio a http://dev.mysql.com/doc/refman/5.5/...xt-search.html se usi mysql
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Originariamente inviato da Santino83_02
    guardate che mi sa che il problema ce l'abbia nel database non nel php... anche perchè, satifal, non è che uno si scarica tutto il db in php e poi fa l'explode sulle parole...

    prova a vedere se questo ti ispira, soprattutto per le funzioni nel db dando un occhio a http://dev.mysql.com/doc/refman/5.5/...xt-search.html se usi mysql
    Infatti hai ragione, da una lettura veloce del post non ho intuito che si riferisse a ricerche su dati salvati su DB, ma credevo fossero delle semplici stringhe.
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  6. #6
    Ho buttato giù una function che dovrebbe fare quello che chiedi anche se l'ho testata solo molto superficialmente:

    codice:
    CREATE FUNCTION my_find(
      x VARCHAR(255),
      delim VARCHAR(12),
      find VARCHAR(255)
    )
    RETURNS VARCHAR(255)
    BEGIN
      DECLARE res VARCHAR(255);
      DECLARE tmp VARCHAR(255);
      DECLARE tmp2 VARCHAR(255);
      DECLARE str VARCHAR(255);
      SET tmp = '';
      SELECT colonna FROM tabella INTO str;
      REPEAT
        SELECT SUBSTRING_INDEX(str, ' ', 1) INTO tmp2;
        IF STRCMP(SUBSTRING(tmp2, 1, LENGTH(find)), find) = 0 THEN 
          SET tmp = CONCAT(tmp, tmp2, ' ');
        END IF;
        SET str = SUBSTRING(str, LENGTH(tmp2) + 2);
      UNTIL str = ''
      END REPEAT;
      RETURN tmp;
    END
    che puoi invocare così:

    codice:
    SELECT my_find(colonna, ' ', 'stringa_di_ricerca') as risultato FROM tabella;
    in cui a colonna, tabella e stringa_di_ricerca sostituirai i giusti valori.

    Nel caso:
    colonna contiene: pluto pippo paperino paperoga paperone poldo
    stringa_di_ricerca: 'pa'

    restituisce:
    paperino paperoga paperone
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  7. #7
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    qui la si sta facendo 2000 volte più difficile di quanto realmente non sia...
    basta usare un LIKE nella query con una wildcard
    sometimes it's just like teaching pigs how to fly

  8. #8
    Originariamente inviato da nickcv
    qui la si sta facendo 2000 volte più difficile di quanto realmente non sia...
    basta usare un LIKE nella query con una wildcard
    Tutte le soluzioni più ottimali sono bene accette. Come lo faresti col LIKE?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

  9. #9
    Utente di HTML.it
    Registrato dal
    Sep 2010
    Messaggi
    570
    sometimes it's just like teaching pigs how to fly

  10. #10
    Conosco benissimo la funzione LIKE, ma non hai risposto alla mia domanda...come la applicheresti nel caso specifico?
    "Mai discutere con un idiota. Ti trascina al suo livello e ti batte con l'esperienza." (Oscar Wilde)

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.