PDA

View Full Version : [php] help per una query...


Brostin
03-05-2007, 13:40
Salve gente,

ho la necessità di estrapolare dal mio db tutti i record dove il valore 3 sia presente all'interno di un
determinato campo, qualunque sia la sua posizione rispetto ad altri numeri, potenzialmente presenti anch'essi
nelle forme sottoelencate. Ad esempio:


rec1 -> valore del campo : 3 .................. ( deve essere visualizzato il record )
rec2 -> valore del campo : 1,3................. ( deve essere visualizzato il record )
rec3 -> valore del campo : 3,5,9 .............. ( deve essere visualizzato il record )
rec4 -> valore del campo : 1,2,3,9 ............ ( deve essere visualizzato il record )
rec5 -> valore del campo : 2 .................. ( non deve essere visualizzato il record )
ecc..

Ecco la query che ho costruito :

define("ewSqlWhere", "(proto.estensione LIKE '3' or proto.estensione LIKE '%,3' or proto.estensione LIKE '%,3,%' or proto.estensione LIKE '3,%' )", true);

Nell'invitarvi ad analizzarla vi chiedo se puo' ritenersi corretta, questo a prescindere dal fatto che funzioni.
In ogni caso, suppenendo che lo sia, ecco il vero punto di domanda:

Vorrei sostanzialmente che il valore 3, da me in questo caso digitato direttamente nella query, fosse in realtà
sostituito dal valore di una variabile presente nel file login.php, che il mio database esegue nella fase di
apertura.

La variabile è %username e la stessa puo' assumere valore 1,2,3,4,5,ecc.

Concludendo quindi suppongo che dovrei far "migrare" il valore assunto dalla variabile nel file php iniziale, all'interno del file php successivo
( chiamato estensione.php ) e fare in modo che valorizzi la mia query.

Spero di essere stato chiaro, un ringraziamento a tutti, Brostin

andbin
03-05-2007, 14:06
Ecco la query che ho costruito :

define("ewSqlWhere", "(proto.estensione LIKE '3' or proto.estensione LIKE '%,3' or proto.estensione LIKE '%,3,%' or proto.estensione LIKE '3,%' )", true);Beh, questa è solo la parte per la clausola where, immagino. Mi sembra corretta, hai testato i vari casi in cui si può trovare il numero. Comunque questa è una stringa che hai definito come costante.

Vorrei sostanzialmente che il valore 3, da me in questo caso digitato direttamente nella query, fosse in realtà
sostituito dal valore di una variabile presente nel file login.php, che il mio database esegue nella fase di
apertura.Allora innanzitutto non devi definire la stringa sopra come una costante.

Dovrai "comporre" la query in questo modo:

$query = "SELECT ......blabla WHERE proto.estensione LIKE '" . $num . "' or proto.estensione .....blabla";

Comunque, se stai usando MySQL, visto che i numeri sono separati da ',' puoi anche usare la funzione FIND_IN_SET, invece di testare tutte le varie possibilità. Esempio:

SELECT ....blabla WHERE FIND_IN_SET('3',proto.estensione)