ricerca in multi select field

Raccoglitore di domande e risposte relative a ScriptCase, il generatore di codice php per lo sviluppo rapido di applicazioni.
Regole del forum
Nel forum è vietato fare pubblicità senza avere l'autorizzazione dello staf di Netspecial.
Rispondi
Sandrol
Messaggi: 70
Iscritto il: 18 ott 2017, 16:39

ricerca in multi select field

Messaggio da Sandrol » 04 ago 2021, 08:57

Salve a tutti, scrivo per un consiglio.

ho usato in alcun form il campo multiselect esempio per i codici utente

ora nel db il campo viene memorizzato con i valori chiave separati dal carattere da me scelto: '-'

2-9-16-19-20-22 ecc..

normalmente prima di usare scriptcase gli stessi valori li memorizzavo in questo modo:
-2-9-16-19-20-22- ecc..

a questo punto come posso far funzionare la ricerca? prima basta un like %-Valore-%

ora l'assenza del carattere di separazione in testa e in coda non mi consente più di usare questo tipo di ricerca
e di contro like %valore% chiaramente fallisce (il valore 2 è presente sia sul primo che sull'ultimo)..............

Vi chiedo qualche suggerimento grazie.

rino
Messaggi: 626
Iscritto il: 18 giu 2015, 15:42
Località: Pinerolo
Contatta:

Re: ricerca in multi select field

Messaggio da rino » 07 ago 2021, 10:14

porta in un array e fai la ricerca li
Rino Lo Turco
Consulente Informatico; Analista e Sviluppatore; ex IT Manager; Cons. Direzionale di Organizzazione; Consulente Tecnico legale; Esperto protezione dati personali; Internet Service Provider
felice utente e fruitore di ScriptCase

Vincenzo
Messaggi: 131
Iscritto il: 11 apr 2014, 11:06

Re: ricerca in multi select field

Messaggio da Vincenzo » 08 ago 2021, 22:34

Sandrol ha scritto: 04 ago 2021, 08:57
2-9-16-19-20-22 ecc..

normalmente prima di usare scriptcase gli stessi valori li memorizzavo in questo modo:
-2-9-16-19-20-22- ecc..

a questo punto come posso far funzionare la ricerca? prima basta un like %-Valore-%
aggiungi delle condizioni, se prima usavi like '%-Valore-%' adesso prova ad usare


( like '%-Valore-%' OR like 'Valore-%' OR like '%-Valore' )

così prendi tutti i casi "in mezzo" e gli eventuali casi in cui il valore sia il primo o l'ultimo.

Verificherei anche cosa viene memorizzato nel campo se si sceglie un unico valore, ed eventualmente aggiungere anche quel caso se non ricadesse in quelli messi prima.

Sandrol
Messaggi: 70
Iscritto il: 18 ott 2017, 16:39

Re: ricerca in multi select field

Messaggio da Sandrol » 10 ago 2021, 08:06

Grazie per le risp, interessante quella di Vincenzo io ho risolto in questo modo:
Ho creato un campo per la ricerca e ho impacchettato la stringa aggiungendo 0 non significativi nell'evento onbiforinsert e onbiforupdate.

$tab_utenti=explode('-',{idClientManager});
for ($i = 0, $n = count($tab_utenti) ; $i < $n ; $i++)
{
$tab_utenti[$i] = sprintf('%05d', $tab_utenti[$i]);
}
{filtro_ClientManager}=implode("-", $tab_utenti);

Comunque la soluzione di Vincenzo mi sembra migliore della mia provo con una verifica per vedere se funziona, quando il campo ha una sola selezione memorizza solo il valore.
Ciao.

Sandrol
Messaggi: 70
Iscritto il: 18 ott 2017, 16:39

Re: ricerca in multi select field

Messaggio da Sandrol » 10 ago 2021, 09:42

Ho effettuato la prova e sembra che funzioni bene discrimina tra i valori 2- e 22- / -2 -22
Ciao

Vincenzo
Messaggi: 131
Iscritto il: 11 apr 2014, 11:06

Re: ricerca in multi select field

Messaggio da Vincenzo » 19 ago 2021, 20:00

Non hai specificato che database usi, ma se usi MYSQL, potresti provare a vedere se fa per te la funzione

FIND_IN_SET(str,strlist)

la funzione cerca un valore, in una stringa di valori separatati da virgole, quindi nel tuo caso prima di questa funzione devi chiamare una funzione di REPLACE per cambiare il carattere separatore, ma almeno resta tutto in una query sul database senza scomodare cicli in PHP.

Sandrol
Messaggi: 70
Iscritto il: 18 ott 2017, 16:39

Re: ricerca in multi select field

Messaggio da Sandrol » 20 ago 2021, 09:29

Ciao Vincenzo, grazie per l'ulteriore suggerimento, provo anche questo ma ritengo valido il tuo primo (anche quello si riduce a una query) il mio dubbio era se distingueva tra i valori "ripetuti" es: 2 e 22 - 5 55 cosa che in effetti avviene risolvendo il problema.
Dimenticavo MYsql......

Vincenzo
Messaggi: 131
Iscritto il: 11 apr 2014, 11:06

Re: ricerca in multi select field

Messaggio da Vincenzo » 20 ago 2021, 15:59

Sandrol ha scritto: 20 ago 2021, 09:29 Ciao Vincenzo, grazie per l'ulteriore suggerimento, provo anche questo ma ritengo valido il tuo primo (anche quello si riduce a una query) il mio dubbio era se distingueva tra i valori "ripetuti" es: 2 e 22 - 5 55 cosa che in effetti avviene risolvendo il problema.
Dimenticavo MYsql......
Non sapendo le dimensioni della tabella da interrogare, mi chiedevo se FIND_IN_SET + REPLACE fosse più performante di tre LIKE, dove probabilmente per numero di record limitati non ci sono apprezzabili differenze nei tempi di risposta.

Sandrol
Messaggi: 70
Iscritto il: 18 ott 2017, 16:39

Re: ricerca in multi select field

Messaggio da Sandrol » 21 ago 2021, 09:26

Si nel mio caso si tratta di una tab con pochi records relativa ai commerciali dell'azienda. pesavo che volendo si può anche evitare il REPLACE modificando il campo di selezione nella form di scriptcase da "-" a "," . Quando ho 5 minuti lo provo Ciao...

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite