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

    Ricerca ragioni sociali simili

    Ciao a tutti.
    Ho fatto un po' di esperimenti scoraggianti e alla fine mi sa che ho bisogno del vostro aiuto

    Sto cercando di evitare che gli utenti del gestionale che sto facendo non inseriscano più volte la stessa anagrafica.
    Per far questo faccio dei controlli sul numero di telefono ma mi piacerebbe fare dei controlli anche sulla ragione sociale.
    Vorrei che l'utente scrivendo "mario rossi" riceva un messaggio del tipo:
    "forse l'anagrafica che cercavi di inserire è una di queste?
    - mario rossi srl
    - rossi mario
    - rossi mario e figli"

    Ho provato con similar_text e con levenshtein ma i risultati che ho ottenuto sono più che deludenti...

    qualcuno di voi ha già affrontato un problema simile?

    Grazie
    http://www.divelog.it

  2. #2
    Utente di HTML.it L'avatar di Marcolino's
    Registrato dal
    May 2003
    residenza
    Udine
    Messaggi
    3,606
    No, non l'ho mai affrontato con quei metodi eppoi credo che tu sbagli l'approccio
    Una ragione sociale può essere diversa anche per un punto, se confronti due valori come che so: mario rossi srl e mario.rossi srl rischi di escluderne uno senza sapere se le due sono ragioni sociali differenti, ovvero, due soggetti perfettamente differenti.
    Il metodo migliore resta sempre una combinazione di più dati, come ad esempio il controllo del codice fiscale che come sai è univoco per ognuno di noi e la partita IVA che univoca per ogni ditta, lasciando che il resto dei dati poi ognuno se lo gestisca come vuole

  3. #3
    Concordo sul fatto che sia meglio combinare il controllo di più dati.
    Non pretendo di essere sicuro che non ci siano in assoluto doppioni ma quantomento suggerire i più probabili.
    Quello che vorrei considerare è l'ipotesi che qualcuno inserendo una ragione sociale possa inserire i dati in ordine diverso da come sono inseriti nel db.
    In quel caso vorrei poter suggerire all'utente la possibilità di modificare il contatto già esistente con eventuali informazioni aggiuntive o al limite di inserirlo nuovo nel caso in cui lo ritenga necessario.
    http://www.divelog.it

  4. #4
    Puoi anche specificare alcune colonne con UNIQUE ID in MySQL .
    Il duplicato di un valore in quella colonna ritorna un errore che puoi andare a catchare per far capire all'utente che sta inserendo un doppione.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

  5. #5

    Re: Ricerca ragioni sociali simili

    Originariamente inviato da tommyxxx

    Vorrei che l'utente scrivendo "mario rossi" riceva un messaggio del tipo:
    "forse l'anagrafica che cercavi di inserire è una di queste?
    - mario rossi srl
    - rossi mario
    - rossi mario e figli"
    Grazie
    "Semplicemente" potresti dividere il testo in input in più sottostringhe ed utilizzarle tutte nella ricerca.

    ad esempio:

    input: "mario rossi"

    1. suddivido in varie sottostringe (ad esempio utilizzando lo spazio come separatore):
    ss1: "mario"
    ss2: "rossi"

    2. Effettuo una ricerca sul database
    ad esempio:
    query=
    Select RagioneSociale FROM Clienti
    WHERE RagioneSociale like '%mario%'
    AND RagioneSociale like '%rossi%'

  6. #6
    Non entro nel merito su quali campi o sottostringhe ti convenga controllare. Se però vuoi controllare la ragione sociale per intero, credo che Levenshtein sia la funzione migliore. Restituisce il numero di "errori" che sono stati fatti in stringa2 se si voleva che fosse uguale a stringa1. Gli "errori" sono:
    - un carattere in meno
    - un carattere in più
    - un carattere sbagliato

    Forse il tuo errore è stato considerare il risultato in modo assoluto, mentre dovevi confrontarlo con il numero di caratteri. Esempio: su una stringa di 200 caratteri 4 è un numero basso, ma su una stringa di 4 caratteri significa che le due stringhe sono completamente diverse.

    Spero di esserti stato utile e ti linko un approfondimento casomai te ne freghi qualcosa:
    http://santecaserio.altervista.org/wordpress/?p=63

  7. #7
    Veramente interessante questo intervento, e veramente interessante il link... anche se scritto in VB che personalmente detesto!!!!
    Penso che approfondirò.

    Ad ogni modo, rimango dell'opinione che - se si vuole controllare se un valore è già presente in una determinata colonna del DB, basta mettere UNIQUE ID alla colonna e catchare l'eventuale messaggio di errore.

    <ALCIO />
    Per cortesia: no PVT Tecnici
    ******* LINKS *******
    SRL
    MetalWave

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 © 2024 vBulletin Solutions, Inc. All rights reserved.