SQL query con selezione multipla di LIKE

coccobil

Utente Attivo
28 Ott 2005
36
0
6
Ciao a tutti,

sono un principiante nella programmazione in php, cercherò di essere il più chiaro che posso nel porre la mia domanda ringraziando eventuali anime pie :eek: che desiderino darmi una mano.

Dunque ho un database in mysql che praticamente è un indirizziario da cui vengono estratti dei nominativi :

PHP:
$result = @mysql_query("select * from rubrica order by fNome asc");

e fin qui nessun problema, ora però necessito di estrarre solo i nomi delle persone con una o più determinate iniziali, pertanto inserirò un preventivo checkbox a selezione multipla che con un form acquisirà le lettere da selezionare. Se si trattasse di una sola lettera alla volta non sarebbe ovviamente un problema, farei così:

PHP:
$lettera ="A";
$result = @mysql_query("select * from rubrica where fNome LIKE '$lettera%' order by fNome asc");

ma se la selezione è di più lettere, come faccio ad attribuire al LIKE i diversi valori? Immagino aggiungendo un OR ed inserendo la query in un ciclo ma avrei bisogno di un aiuto per la stesura del codice :eek:

Grazie a tutti!
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
metti altri AND o OR
es.
PHP:
<?php
//....
$lettera="A";
$altra="B";
$result = mysql_query("select * from rubrica where fNome LIKE '$lettera%' OR fNome LIKE '$altra%' order by fNome asc");
//....
?>
ricordati poi che
'$lettera%' che termina con lettera
'%$lettera' che inizia con lettera
'%$lettera%' che contiene lettera

poi due piccoli consigli visto che sei agli inizi
non mettere il silent cioè la @ davanti perche fino a che non hai messo tutto a posto è meglio vedere quali errori ti restituisce php
tieni divisa la query (se vuoi dopo puoi riunirla) in questo modo se c'è qualcosa che non va con degli echo o meglio dei var_dump poui capire dove si annida l'errore
es.
PHP:
<?php
//....
$lettera="A";
$altra="B";
$query_str="select * from rubrica where fNome LIKE '$lettera%' OR fNome LIKE '$altra%' order by fNome asc";
//var_dump($query_str);
$result = mysql_query($query_str);
//var_dump($result);
//....
?>
se c'è qualcosa che non va decommentando i var dump hai uno strumento per capire dove potrebbe annidarsi l'errore
 

coccobil

Utente Attivo
28 Ott 2005
36
0
6
Ciao Borgo Italia,
intanto grazie per i tuoi suggerimenti ed interessamento.
In realtà il problema persisteva in quanto a priori io non conosco quali e quante lettere verranno inserite nella query quindi non posso scrivere la stringa direttamente, ma mi serve un modo per crearla diciamo "dinamicamente" con degli OR o AND variabili in numero a seconda delle lettere inserite nell'input ( Come sai sono un principiante, può essere che la tua risposta sottintendesse anche il passo successivo ma io non l'ho inteso ). Ho scritto persisteva perchè come spesso capita in rete prendendo vari spunti e suggerimenti trovi la soluzione :eek:
La posto qui, nel caso possa essere utile a qualcun'altro. Grazie ancora.

PHP:
$lettere = array('A', 'B', 'C', 'D');
$condizioni = '';
foreach($lettere as $lettera)
{
    $condizioni .= " fNome LIKE '$lettera%' OR";
}
$condizioni = substr($condizioni, 0,-3); //tolgo le ultime 3 lettere
$result = mysql_query("select * from rubrica where".$condizioni." order by fNome asc");
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.046
150
63
PR
www.borgo-italia.it
ciao
non capisco cosa stai effettivamente cercando di fare.
l'array $lettere viene generato da un form? non credo che se tu volessi avere 'Z' (es al posto di 'C') tutte le volte vai a modificare lo script
 

coccobil

Utente Attivo
28 Ott 2005
36
0
6
Si esattamente, si tratta di uno script anagrafico con una lista di utenti. Lo script prevedeva fino ad oggi di estrapolare dal database indistintamente tutti gli utenti che hanno registrato un numero di cellulare. Questa nuova versione deve poter scegliere una o più lettere dell'alfabeto tra i nomi di tutti gl'iscritti prima di listarli. Allora ho creato come dicevi tu un form con dei checkbox a selezione multipla che preventivamente permettono la scelta delle lettere, passandole poi via POST allo script e generando un array. Il codice con il ciclo foreach genera la stringa della query "on the fly" sulla base dell'array creato dal form precedente in modo da inserire gli opportuni OR successivi al primo LIKE fino all'esaurimento delle lettere contenute nell'array creando quindi la query ad hoc.
Non so se mi sono spiegato...
 
Discussioni simili
Autore Titolo Forum Risposte Data
M Riportare in tabella HTML dati estratti con query SQL MySQL 0
I Riga tabella HTML creata con cicli PHP e Query Sql che restituisca un campo se si clicca la Riga PHP 4
max1850 Query sql con replace MS Access 0
A Problema con Query SQL Classic ASP 3
S [PHP] Riempire una casella select con query SQL PHP 11
M sintassi query sql (con php) PHP 2
W Query SQL Classic ASP 2
I Fatal error: Query Failed! SQL: SELECT * INTO OUTFILE PHP 1
M [MySQL] CREARE UN LINK SU UN DETERMINATO CAMPO DI UNA TABELLA RISULTATO DI UNA QUERY SQL MySQL 3
S SQL, ACCESS & ASP CLASSIC - QUERY Classic ASP 3
A [PHP] Modifica caratteri di una query Oracle SQL PHP 0
G [PHP] Selezionare OGGI anno precedente per query sql PHP 2
T "Storiella" sul modello logico e concettuale e sulle query SQL MySQL 4
F PHP problema doppi apici all'interno di una query SQL PHP 1
gandalf1959 my sql query, ORDER BY su piu campi MySQL 2
X Problema di sostituzione tramite query sql MySQL 5
S Query SQL PHP 5
A [Sql/Query] Motore di ricerca PHP 1
S codice SQL da access query complessa MS Access 0
N query da file.sql PHP 6
M help query sql Database 3
S Query PHP My sql PHP 31
S query sql in php PHP 4
P Passare una variabile a una query sql Database 0
Z query sql e script php per ordinamento dati tabella PHP 2
D Query SQL Database 0
A Ordinare query sql in base ai risultati di ricerca PHP 1
B Query SQL e maschere MS Access 0
G problema apici in query sql PHP 11
T query sql Database 0
metalgemini Mi correggete una query sql? PHP 2
D [SQL]Decifrare la query PHP 0
E Help Sql somma orari PHP 32
G Importazione file .sql Web Server 0
D data in sql in formato ITA PHP 4
L Studio SQL 2104 o SQL2019 Mac m1 Database 0
otto9due Inserire o aggiornare tabella my sql controllando una coppia di valori PHP 7
D passare valori da database sql a php PHP 1
B Stringa sql per ricerca su più campi Database 1
L Interfaccia grafica per gestire sql server .NET Framework 1
L Front-end SQL server Database 0
R Filtro multiplo di selezione Sql PHP 2
Emix Select concatenate php sql ajax PHP 2
C Estrarre dati stringa Sql Database 1
W Mandare a capo valore di SQL Classic ASP 2
G non riesco a capire quale sia l'errore [SQL] MySQL 2
M modificare un file .XML da database Sql PHP 13
M Update con condizione SQL PHP 7
Alex_70 sql importazione dati MySQL 0
Tommy03 Algoritmo classifica SQL MySQL 0

Discussioni simili