Avatar billede phliplip Nybegynder
20. maj 2004 - 17:01 Der er 4 kommentarer og
2 løsninger

Forstås tinyint field som true/false ?

Hej Exp!

Jeg læste her på Exp at TINYINT i MySQL, og værdierne 0/1 bruges som true/false !

Vil det sige at hvis jeg har felt "online='0'" forstås som false !?

fx.
if(!$user[online]) {
  // Ikke online
} else {
  // Online
}

eller hvad hvis jeg sætter felt typen til ENUM('true','false') - Vil ovenstående så kunne bruges ?
Avatar billede x4all_dk Nybegynder
20. maj 2004 - 17:13 #1
Du kan bruge hvad som helst (næsten) til at indikerer om noget
er true/false.

Så ja - men.. rent plads mæssigt bør du bruge en "Boolean" som ikke
fylder så meget i hukommelsen. - det er god programmerings skik!!
Avatar billede fangel Nybegynder
20. maj 2004 - 17:27 #2
PHP.net om 'Boolean'

---
When converting to boolean, the following values are considered FALSE:

    *  the boolean FALSE itself
    *  the integer 0 (zero)
    *  the float 0.0 (zero)
    *  the empty string, and the string "0"
    *  an array with zero elements
    *  an object with zero member variables
    *  the special type NULL (including unset variables)

Every other value is considered TRUE (including any resource).

Warning:
    -1 is considered TRUE, like any other non-zero (whether negative or positive) number!
---

Se også:
http://php.net/manual/en/types.comparisons.php

Morten
Avatar billede phliplip Nybegynder
20. maj 2004 - 19:53 #3
Ok tak ;) til begge... fangel smider du lige et svar, i får lov til at dele !
Avatar billede fangel Nybegynder
20. maj 2004 - 20:33 #4
jepp'ar

Morten
Avatar billede phliplip Nybegynder
23. maj 2004 - 17:16 #5
Undskyld jeg lige forstyrrer igen... men har nu et felt med enum('true','false')

Og i PHP har jeg variabel:

$boolean = true;

Men den sætter ikke til true (ikke noget overhovedet) i db'en...

Er det fordi at enum()-værdierne er strings !? Og der derfor er nogen typecast probs !?
Avatar billede Slettet bruger
23. maj 2004 - 18:05 #6
Ja, et enum-felt optæder som en streng. Jeg plejer at bruge noget i denne stil:

$user['online']=($row['online']=='true');

og når jeg skal gemme:

$sql="UPDATE tabel SET ";

if($boolean){
  $sql.="online='true' ";
} else {
  $sql.="online='false' ";
}

Nogle gange bruger jeg ?:-notationen, som gør det samme, men har en lidt mere kompakt syntaks:

$sql.=$boolean?"online='true' ":"online='false' ";
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester