Avatar billede offer Nybegynder
15. januar 2014 - 22:10 Der er 8 kommentarer og
1 løsning

OR i en IF

Hvorfor virker dette ikke skriver aktiv hver gang

De 2 dele virker fint hver for sig

if ($data_liste["aktiv"] != "1" || $data_liste["antal"] != "0") {
    echo "aktiv";
} else {
    echo "ikke aktiv";
}
Avatar billede Slater Ekspert
15. januar 2014 - 22:14 #1
Det virker lidt underligt at den er aktiv hvis $data_liste["aktiv"] IKKE er 1.

Og er du sikker på, du mener || og ikke &&?
Avatar billede offer Nybegynder
15. januar 2014 - 22:23 #2
Det virker måske lidt forkert med hvis den er aktiv står de 0 og hvis den ikke er aktiv står der 1 så det er rigtig.

Der skulle gerne tjekke om varen var aktiv eller der ikke er nogle på lager.
Avatar billede jakobdo Ekspert
15. januar 2014 - 22:23 #3
Prøv at smid en var_dump($data_liste); inden din IF.
Måske du overser noget ?

Jeg ville jo altid tjekke at:

if(isset($data_liste['aktiv']) && $data_liste['aktiv'] != "1"....)
Avatar billede Slettet bruger
16. januar 2014 - 08:29 #4
Jeg ville måske hellere lave tjekket omvendt, du har kun to mulige udfald, enten er den aktiv eller også er den ikke aktiv:


// Som udgangspunkt er den alit aktiv
$strStaus = "aktiv";

// medmindre den er sat til ikke aktiv eller der ikke er flere på lager
if("1" == $data_liste["aktiv"] || "0" == $data_liste["antal"]){
  $strStaus = "ikke aktiv";
}

// Returner status
echo $strStaus;



Derudover vil jeg også foreslå at du som jacobdo nævner, lige tjekker hvad der egentlig kommer ud af $data_liste
16. januar 2014 - 10:31 #5
Naturligvis skriver den 'aktiv' hver gang.  Uanset hvilken værdi du har i $data_liste["aktiv"] vil værdien altid enten være forskellig fra 1 eller forskellig fra 0.  Ikk' 

Du siger, at $data_liste["aktiv"] = 0 er aktiv.  Formentlig er den ikke aktiv hvis $data_liste["aktiv"] er noget andet end 0.  Så kan koden ikke simpelt hen være denne:

if($data_liste["aktiv"] == 0) echo "aktiv";
else echo "ikke aktiv";
Avatar billede Slettet bruger
16. januar 2014 - 10:39 #6
@Christian_Belgien: Han tjekker ikke kun $data_liste["aktiv"]  det andet tjek han foretager er $data_liste["antal"] :)
16. januar 2014 - 13:29 #7
Vil det sige, at man skal læse et indlæg før man kommenterer?  Øv, jeg troede lige jeg havde en god en.  Men i så fald har jeg næppe noget at tilføje til ovenstående indlæg.  Jeg prøver lige at læse indlægget:

Du siger, tror jeg, at følgende kode vil give 'aktiv' hvis $data_liste["aktiv"] er 0 og 'ikke aktiv' hvis $data_liste["aktiv"] er 1.

if ($data_liste["aktiv"] != "1" {
    echo "aktiv";
} else {
    echo "ikke aktiv";
}

endvidere siger du, at følgende kode vil give 'aktiv' hvis $data_liste["antal"] er for eksempel 5 og 'ikke aktiv' hvis $data_liste["antal"] er 0:

if ($data_liste["antal"] != "0") {
    echo "aktiv";
} else {
    echo "ikke aktiv";
}

Men hvis i koden i spørgsmål $data_liste["aktiv"] er 1 og $data_liste["antal"] er 5, så får du alligevel 'aktiv'.

Ja, det lyder mystisk.  Som #3 allerede har været inde på, hvorfra kender du værdierne i $data_liste["aktiv"] og  $data_liste["antal"] ?  Så jeg støtter forslaget med var_dump.  (Yderligere forekommer det mig pudsigt, at du ikke tester direkte for $data_liste["aktiv"] == 0 i stedet for $data_liste["aktiv"] != 1.)
Avatar billede offer Nybegynder
16. januar 2014 - 14:20 #8
jakobdo: Jeg prøve at tjekke men fik det rigtige

DennisMC: Jeg prøve at vende der lige som du skrev og nu virker det, kom med et svar så er der point :-)

Christian_Belgien: Ja jeg syndes også det var mærklig. Hvorfor geg brugte != istedet for == ved jeg ikke, men det er vel det samme om en glas er halvt fyldt eller halvt tomt :-)
Avatar billede Slettet bruger
16. januar 2014 - 14:26 #9
Er glad for at høre du fik det til at virke :)
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