Newsgroup: it.comp.www.php
Titolo: WHERE provincia='$prov'...come faccio per "TUTTE" ??

domandina veloce veloce...se ho una variabile $prov che mi viene da una
option di una select e faccio...
"SELECT *
FROM users
WHERE provincia='$prov' AND......
ORDER BY nome_locale";
ovviamente funziona se metto una provincia, ma se volessi intendere TUTTE le
province...che valore deve avere <option value="xxx"> TUTTE</option> ????
Thanks!...dai che l'ho quasi finito...poi vi mando l'URL!

 ORDER BY nome_locale";
$prov = "%";


Prova con il "%"
ciao Marco
"m@rco" <fake...@fake.mail> ha scritto nel messaggio
news:2m4gt0F...@uni-berlin.de...


 province...che valore deve avere <option value="xxx"> TUTTE</option> ????
Brutalmente, non faresti prima ad evitare direttamente la condizione, in
quel caso? Se la variabile $prov e' impostata, vuol dire che desideri una
particolare provincia, ma se non e' impostata (o ha valore nullo), allora
intendi "tutte" le province.
Un paio di approcci:
if (empty($prov)){
	/* esegui: SELECT * FROM users WHERE ..... ORDER BY nome_locale; */
}else{
	/* esegui: SELECT * FROM users WHERE provincia='$prov' AND .... ORDER BY
nome_locale; */
}
oppure:
prov$=empty($prov)?"":"provincia='$prov' AND";
/* esegui: SELECT * FROM users WHERE $prov .... ORDER BY nome_locale */
Giusto per fornirti un paio di spunti. Sicuramente ci sono approcci
migliori, soprattutto per la costruzione di statement SQL dinamici; ma
molto dipende da come e' impostato tutto il codice.
-- 
ZER0://coder.gfxer.web-designer/
~ "Problemi" e' il nome che gli informatici danno a quelli che
comunemente verrebbero definiti "disastri"; altrimenti si chiamano
"features".

> Prova con il "%"
non funge... in option value ho messo "%" per TUTTE... ma l'SQL non mi
prende nessuna riga, se invece faccio tutti if...else if....else, funziona
bene...ovviamente, ma sono parecchie righe in + !

 Thanks!...dai che l'ho quasi finito...poi vi mando l'URL!
Tocca rivedere il codice. Se usi il suggerimento che ti hanno dato altri 
(%) il codice diventa:
WHERE provincia LIKE '".addslashes($prov)."' AND......
Personalmente ti consiglierei di rivedere un po' il codice, piuttosto.
$prov=$_REQUEST['prov'];
if ($prov="tutte"){
	$whereprov='';
} else {
	$whereprov="provincia='".addslashes($prov)."' AND ";
};
$query="SELECT * FROM users WHERE $whereprov ........ ORDER BY 
nome_locale";
Tac

 $query="SELECT * FROM users WHERE $whereprov ........ ORDER BY
ma anche in questo caso $whereprov non vale comunque qualcosa e SQL cerca
questo qualcosa e non "tutte" ??

> Prova con il "%"
Oddio, ma se poi le province le vuoi TUTTE, tanto vale LEVARLA del tutto 
la clausola che le riguarda !
Ovvero, se $prov vale '%' - o un qualsiasi valore scelto AD HOC (FALSE, 
NULL, 'TUTTE', ...) - la query diventa "SELECT * FROM `nometabella`; se 
invece $prov vale qualcosa, aggiungi la clausola WHERE appropriata.


, fake...@fake.mail says...

In questo caso quando passi il valore 'tutte' il whereprov viene 
svuotato e non viene quindi inclusa la provincia nella clausola where.
Tac

 svuotato e non viene quindi inclusa la provincia nella clausola where.
In questo caso $whereprov viene sempre svuotato.
Nel primo if, hai fatto un'assegnazione, non una comparazione, di
conseguenza la condizione risulta sempre vera.
-- 
ZER0://coder.gfxer.web-designer/
~ Deformazione professionale č:
Quando in ascensore senti la ragazza accanto che tira fuori il cellulare,
e ti volti per capire se e' un modello sul quale puoi sviluppare in J2ME.

"m@rco" <fake...@fake.mail> wrote in message
news:2m4gt0F...@uni-berlin.de

Io ho risolto una situazione tale facendo formulare a PHP la stringa
della query...
e mi sa che è l'unica!
Sulla combo metti una voce "tutte" e in PHP gliela fai interpretare, nel
senso che se gli arivasse tutte fai in modo che
il criterio relativo alle province non venga incluso nella stringa SQL
 es:
if($prov=="tutte"){
  $criterio="";
}else{
  $criterio="provincia='$prov' AND";
}
"SELECT *
FROM users
WHERE $criterio ......
ORDER BY nome_locale";
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 
La fretta. :-)
Tac

m@rco wrote:

semplice e diretto.. (naturalmente nel valore di 'TUTTE' ci va 'ALL')
if($prov != 'ALL') $prov = "provincia='$prov'";
else $prov = 1;
mysql_query("SELECT * FROM users WHERE $prov AND...... ORDER BY
nome_locale");
provalo vedrai che dovrebbe funzionare..
-- 
www.iuz-lab.info

Voglioi avere la lista degli utenti in una determinata categoria e che siano
attivati (c'è un campo enum che puo assumere 0 o 1)
"SELECT *
FROM users
WHERE categoria='$categoria' AND activated=1
ORDER BY nome_locale";
Se la eseguo mi da l'opposto di quello che voglio...gli utenti in una
determinata categoria e DISATTIVATI (activated=0)!...come è possibile ??



Non so per quale motivo 5 minuti fa questo post si è accodato al mio
precedente...Chiedo scusa per il server, lo ripropongo.

 ORDER BY nome_locale";
Se metto activated != 1 mi da il risultato giusto!...è impossibile!

 determinata categoria e DISATTIVATI (activated=0)!...come č possibile ??
Il campo ENUM č un elenco di valori. Un array per cosě dire.
Quando scrivi  activated=1  stai chiedendo i record in cui il campo
activated sia uguale al termine di enum di posizione 1 (ossia il secondo, si
parte da 0).
Non stai chiedendo quelle che ha valore "1".
Ciao
Marco

 ORDER BY nome_locale";
=> activated = '1';
                ^^^


o porc.....modifico subito e vi faccio sapere...