/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
tal gemt som text i DB ønskes som tal...
Fra : MooreHojer


Dato : 22-01-08 18:46

Hej NG

Jeg har i forbindelse med et bannersystem, et felt i min mySql-db der
indeholder en linksti.
Dette link kan være en fuld URL til en ekstern side eller et tal som peger
på en intern side. For at kunne indeholde begge muligheder er feltet af
typen 'text'.

Når jeg så henter værdien ud igen ønsker jeg at tjekke hvilken type der er
tale om og bruger derfor is_int(), men selv om det er et tal jeg tjekker på
siger den at det er et tal.

Hvordan får jeg den til at se at det er et tal?

Her den kode som behandler min variabels vej fra db til test

<-----START----->

//PULL FROM DB
$sql_query = "SELECT * FROM banner_frontpage_right WHERE priority = 2 AND
lang = '" . $language . "'";
$sql_result = mysql_query($sql_query);
$sql_result_array = mysql_fetch_array($sql_result);

//ASSIGN TO ARRAY
$minVar[] = $sql_result_array['link'];

//TRANSFER RANDOM ENTRY FROM ONE ARRAY TO A NEW
$rand = rand(0, (count($minVar) - 1));
$final_array[] = $minVar[$rand];

//RUNS THROUGH ARRAY AND TEST ENTRIES
for($i = 0; $i <= (count($final_array) - 1); $i++)
{
if(is_int($final_array[$i]))
{
echo "TAL";
}
else
{
echo "IKKE TAL";
}
}

<-----SLUT----->


Hvis der er nogen der ved hvad jeg gør galt eller kan se en smartere måde at
gøre det på vil være taknemmelig

På Forhånd Tak!

--
MooreHojer




 
 
MooreHojer (22-01-2008)
Kommentar
Fra : MooreHojer


Dato : 22-01-08 18:51

> Når jeg så henter værdien ud igen ønsker jeg at tjekke hvilken type der er
> tale om og bruger derfor is_int(), men selv om det er et tal jeg tjekker
> på
> siger den at det er et tal.

Den siger selvfølgelig at det *ikke* er et tal og ikke som jeg skrev det er
et tal... ellers ville der jo ikke være noget problem

> if(is_int($final_array[$i]))
> {
> echo "TAL";
> }
> else
> {
> echo "IKKE TAL";
> }

Bare for en god ordens skyld så er outputtet 'IKKE TAL'

--
MooreHojer



Martin (22-01-2008)
Kommentar
Fra : Martin


Dato : 22-01-08 20:06

MooreHojer wrote:
>> Når jeg så henter værdien ud igen ønsker jeg at tjekke hvilken type der er
>> tale om og bruger derfor is_int(), men selv om det er et tal jeg tjekker
>> på
>> siger den at det er et tal.
>
> Den siger selvfølgelig at det *ikke* er et tal og ikke som jeg skrev det er
> et tal... ellers ville der jo ikke være noget problem
>
>> if(is_int($final_array[$i]))

Grunden er at det ikke er en integer, men en streng med tal i.
int skrives fx som
$var = 24; // true
$var = '24'; // false
$var = (int) '24'; // true (24)
$var = (int) 'abc'; // true (0)
$var = (int) 'abc1abc'; // true (1)

Det var lige hvad jeg kunne finde på :)

I dit eksempel kan du bruge en af følgende 2 metoder
is_numeric($final_array[$i])
preg_match('/^[0-9]{1,}$/',$final_array[$i])

(regexp'en er IKKE testet, er ikke skide god til regexp, men den skulle
være rimelig tæt på)

MooreHojer (22-01-2008)
Kommentar
Fra : MooreHojer


Dato : 22-01-08 20:28

> Grunden er at det ikke er en integer, men en streng med tal i.

Nemlig, troede bare at is_int() kunne "se igennem" med det....

> I dit eksempel kan du bruge en af følgende 2 metoder
> is_numeric($final_array[$i])

Takker, lige præcis den jeg skulle bruge

--
MooreHojer



Bertel Lund Hansen (22-01-2008)
Kommentar
Fra : Bertel Lund Hansen


Dato : 22-01-08 20:25

MooreHojer skrev:

> Hvordan får jeg den til at se at det er et tal?

Prøv med:

   $final_array[$i]+=0;

--
Bertel
http://bertel.lundhansen.dk/   FIDUSO: http://fiduso.dk/

MooreHojer (22-01-2008)
Kommentar
Fra : MooreHojer


Dato : 22-01-08 20:30

>> Hvordan får jeg den til at se at det er et tal?
>
> Prøv med:
>
> $final_array[$i]+=0;

jep, virker også

--
MooreHojer



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste