Newsgroup: it.comp.www.php
Titolo: non funzionano? me tapino..

Salve a tutto il ng, ho un bel problema.
Quando setto una variabile con un valore numerico (es.$var=1;) e poi la 
passo tramite GET ad un'altra pagina vado per controllare che il valore non 
sia una stringa ma un numero e la funzione is_string non va!
Cioč non funziona a dovere!
Questo č il codice per esempio:
if is_string($var)
{
print "stringa";
}else{
print "numero";
}
mi da sempre "numero" come risultato, e lo stesso malfunzionamento me lo fa 
se uso is_int o empty()!
Che sia qualche impostazione lato server disabilitata?
Dottore č grave?
ciao a tutti! 

 }
mi correggo scusate, volevo dire che mi da sempre "stringa" come risultato, 
anche se il valore è numerico.

> }
prova
if  (!is_numeric($var))
{
 print "stringa";
 }else{
 print "numero";
}
ciao 

I_bonbon_di_lylly ha scritto:
[cut]
chessoio per i numeri non devi mai  mettere ''   cioe'   $var = 2;  con
anche gli spazi. mentre string devi mettere "" e senza spazi.
if (is_numeric($var))
{
print "numero";
}else{
print "string";
} 
prova cossi e poi mi dici

 ciao
ciao, come hai scritto tu sembrava funzionare ma a livello logico mi sono 
chiesto "quel ! non indica che NONdeve essere una stringa?"
Illuminami/temi...
per synko: provo dopo la tua dritta e ti faccio sapere. 

 anche se il valore è numerico.
le variabili post e get sono sempre stringhe, fai il cast esplicito

 ha scritto nel messaggio 
news:ef35pj$em6$1...@area.cu.mi.it...

cosa intendi per cast esplicito?
Grazie. 

I_bonbon_di_lylly ha scritto:

http://www.php.net/manual/en/language.types.type-juggling.php#language.types.typecasting
ti consiglio di dare un'occhiata al manuale prima di cominciare a scrivere codice

 codice
quindi intendi che occorre definirle a priori, giusto?
grazie ancora provo più tardi.
ciao 

 Illuminami/temi...
cioč, controlla se č un numero( cioč contiene i "caratteri" da 0 a 9) 
altrimenti ti dice che č una stringa, perchč qualsiasi combinazione di 
lettere č una stringa(o no :-) )
facendo a passaggi: $var="ciao"
nell'if controlla se č un numero -> no, lo nega quindi la condizione diventa 
vera e entra subito e ti stampa stringa
idem se hai in $var il valore 0125a
con $var="10324"
nell'if controlla se č un numero -> si, lo nega quindi la condizione diventa 
falsa e entra nel secondo e ti stampa numero
se sei piu comodo puoi scrivere anche
 if  (is_numeric($var))
 {
 print "numero";
 }else{
 print "stringa";
 }
tanto sono uguali.
ciao

 chiesto "quel ! non indica che NONdeve essere una stringa?"
in realta dice che NON deve essere un numero.
(mi sono dimenticato di scrivertelo prima) 

 con $var="10324"
sono andato in confusione...
ma se tu digiti 
$var = 12;
e' per forza un numero, no?

 ha scritto nel messaggio 
news:1159008622....@h48g2000cwc.googlegroups.com...

fungono entrambi i metodi che mi avete indicato tu e cicciolino, thanks 
mille.
per considerare anche l'ipotesi in cui l'utente cerchi di inserire un valore 
vuoto, un valore superiore alle 5 voci di menu o che inserisca un path dalla 
barra indirizzi ho pensato a questo:
if (!is_numeric($var) or (empty($var) or $var>5))
{
 print "valore irregolare";
 }else{
 print "valore ok";
}
dite che va bene o dovrei aggiungere qualche altra condizione?

 ciao a tutti!
http://php.net/is_int
 - non va bene poiche' cio' che si trova in _GET
e'sempre una stringa
http://php.net/is_numeric
 - non va bene perche' restituisce TRUE anche con
numeri segnati e/o con parte decimale e/o esponenziale e con numeri
esadecimali
http://php.net/pcre
 - va bene ma dovresti conoscere le regex
http://php.net/ctype_digit
 - va bene ma bisogna vedere se intendi ottenere
il risultato che io ho inteso
non usare REGISTER_GLOBALS..
-- 
www.iuz-lab.info