$_GET['part'] i PHP int eller varchar?

Permalänk
Medlem

$_GET['part'] i PHP int eller varchar?

Hej, jag undrar om man i php kan ta reda på om en variabel sätts till int eller varchar?

Jag har följande kod...

$produkttyp = $_GET['part'];

Varför jag vill kunna skillja på int och varchar är för att jag vill kunna visa olika
sidinnehåll på min hemsida beroende på om den sätts till int eller inte.

Jag vill alltså göra något liknande...

<? if ($_GET['part'] == <int>) { ?> Visa detta <? } elseif ($_GET['part'] == <varchar>) { ?> Visa detta <? } ?>

Någon som har en bra lösning?

Visa signatur

Thermaltake | Silverstone SST-ST30NF Fanless |Intel Celeron 2.8 gHz | Asus P4P800-E Deluxe | PowerColor Radeon 9800 PE | Terratec cinergy 600 TV | Seagate 160 Gb & Seagate 200GB | 1024 Mb DDR

Permalänk
Medlem

såhär kanske om du vet att den sätts:

if(is_numeric($_GET['part']){ kod .. }else{ kod.. }

Permalänk

Rätta mig om jag har fel någon, men alla värden som kommar via $_GET är väl strängar tills man gör dom till något annat?

Med nån trevlig regexp kan man säkert kolla om det är en siffra eller inte.

Visa signatur

/Mvh Stefan

Permalänk
Medlem

från: http://se2.php.net/manual/sv/function.is-numeric.php
"is_numeric -- Finds whether a variable is a number or a numeric string"
så tycker det borde funka...

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av mac7
såhär kanske om du vet att den sätts:

if(is_numeric($_GET['part']){ kod .. }else{ kod.. }

Tack för snabbt svar, ska prova det.

Edit: Guru Meditation, ska prova den där is_numeric till att börja med.

Edit: Funkade galet bra med is_numeric, TACKAR

Visa signatur

Thermaltake | Silverstone SST-ST30NF Fanless |Intel Celeron 2.8 gHz | Asus P4P800-E Deluxe | PowerColor Radeon 9800 PE | Terratec cinergy 600 TV | Seagate 160 Gb & Seagate 200GB | 1024 Mb DDR

Permalänk
Medlem

Glöm inte att sätta mini och max värden för den get requesten.

Visa signatur

Intel i7 6700K @ 4,4 Ghz | MSI Z170 KRAIT GAMING 3X | be quiet! Dark Rock 4 | 16 GB Kingston HyperX Fury 2133 Mhz | Asus RTX 3060 OC | PNY XLR8 CS3030 500 GB | Samsung 860 QVO 1 TB

Permalänk
Medlem

Du kan använda operatorerna === och !==.

Visa signatur

"'We're pro-life.' Eww, you look it! You look like you're filled with life."
UNIX man pages online, GNU/Linux-schemaprogram för LiU

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Pilt
Du kan använda operatorerna === och !==.

Då kommer den ju faktiskt jämföra typ också, då blir det väl fel eftersom allt från GET är string. Erkännas skall, att jag inte orkar testa, det är bara vad jag har för mig.

Visa signatur

Brass knuckles and a 2x4

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av jonasc
Då kommer den ju faktiskt jämföra typ också, då blir det väl fel eftersom allt från GET är string. Erkännas skall, att jag inte orkar testa, det är bara vad jag har för mig.

Helt rätt många gånger om.

<pre><?php var_dump( $_GET ); if ( isset( $_GET['id'] ) ) { echo "\n\n\$_GET['id'] == 5 är " . ( ( $_GET['id'] == 5 ) ? 'true' : 'false' ); echo "\n\n\$_GET['id'] === 5 är " . ( ( $_GET['id'] === 5 ) ? 'true' : 'false' ); echo "\n\nis_numeric(\$_GET['id']) är " . ( ( is_numeric( $_GET['id'] ) ) ? 'true' : 'false' ); echo "\n\nintval(\$_GET['id']) == 5 är " . ( ( intval( $_GET['id'] ) == 5 ) ? 'true' : 'false' ); } else { echo 'Set $_GET[\'id\'] to something...'; } ?></pre>

Citat:

array(1) {
["id"]=>
string(1) "5"
}

$_GET['id'] == 5 är true

$_GET['id'] === 5 är false

is_numeric($_GET['id']) är true

intval($_GET['id']) == 5 är true

edit: Massor \ framför ' försvinner =/.