Avatar billede Slettet bruger
24. januar 2003 - 15:43 Der er 20 kommentarer og
3 løsninger

IF og AND samtidig?

Hejsa..

Jeg har en if sætning som jeg skal ha til at tjekke noget AND også.. Hvordan gør jeg det?

jeg har prøvet med

if(!$title OR !$group_type OR ($group_type == 'Varegruppe' AND $category_id > 0))

men den tjekker ikke det i den sidste parentes?
Avatar billede ztyxx Nybegynder
24. januar 2003 - 15:44 #1
and hedder &&
or hedder ||
Avatar billede totaliorden Nybegynder
24. januar 2003 - 15:45 #2
&& = og
|| = eller
Avatar billede arnvig Nybegynder
24. januar 2003 - 15:45 #3
du mangler vist nogen værdier at sammenligne med

if(!$title =='?' OR !$group_type =='?' OR ($group_type == 'Varegruppe' AND $category_id > 0))
Avatar billede alrua Nybegynder
24. januar 2003 - 15:45 #4
man kan sagtens bruge AND og OR på den måde der :)

Det burde sådan set virke som det skal...sikker på at det ikke bare er fordi værdierne i de variabler er forkerte?
Avatar billede ztyxx Nybegynder
24. januar 2003 - 15:46 #5
if(!$title || !$group_type || ($group_type == 'Varegruppe') && ($category_id > 0))
Avatar billede alrua Nybegynder
24. januar 2003 - 15:46 #6
arnvig: man kan sagtens gøre sådan der...

if(!$title) vil returnere false hvis $title er true og omvendt...
Avatar billede ztyxx Nybegynder
24. januar 2003 - 15:46 #7
eller
if(!$title || !$group_type || (($group_type == 'Varegruppe') && ($category_id > 0)))
Avatar billede arnvig Nybegynder
24. januar 2003 - 15:46 #8
Ups, sorry, jeg var lidt for hurtig med et forkert svar
Avatar billede arnvig Nybegynder
24. januar 2003 - 15:47 #9
Arua, Yeps  , min fejl
Avatar billede tipsen Nybegynder
24. januar 2003 - 15:50 #10
Man kan bruge både:

AND eller &&
OR eller ||

Man skal dog være opmærksom på at de ikke har samme præcedens (~prioritet) jvf: http://dk.php.net/manual/en/language.operators.php#language.operators.precedence


Eksempelvis har || højere præcedens end AND, hvilket nok kan forvirre de fleste!!!
Avatar billede Slettet bruger
24. januar 2003 - 15:50 #11
if(!$title OR !$group_type OR (($group_type == 'Varegruppe') AND ($category_id > 0)))

Virker ikke... Kan det være for at jeg i min AND har både == og > ?
Avatar billede tipsen Nybegynder
24. januar 2003 - 15:51 #12
Dvs det vil være en dårlig ide at blande de to metoder, da det kan give overraskende resultater!!
Avatar billede tefcke Nybegynder
24. januar 2003 - 15:53 #13
Der er en lille "smart" ting med OR (eller ||), og det er så snart en af betingelserne er opfyldt (evaluerer SAND), så tjekker den ikke resten af betingelserne i din if, for de har ikke indflydelse på den endelige boolske værdi som er SAND!.

Det kan være at $title eller $group_type er sat, og derfor stopper den med at tjekke den sidste OR betingelse inden du når ind i den sidste parentes.

Lav noget debugging kode lige før tjekket, f.eks:
isset( $title ) : print('<p>$title er sat!'); ? print('<p>$title er ikke sat!');
isset( $group_type ) : print('<p>$group_type er sat!'); ? print('<p>$group_type er ikke sat!');
Avatar billede Slettet bruger
24. januar 2003 - 15:55 #14
Hmm.. Hvis du kun har OR's, så kan du ha mange... ex:

if(!$title OR !$group_type OR !$title1 OR !$group_type1

Det kan du godt, men det gik galt da den lige pludselig skulle sætte en OR og AND sammen...
Avatar billede totaliorden Nybegynder
24. januar 2003 - 16:23 #15
Prøv:

if((!$title || !$group_type) || ($group_type == "Varegruppe" && $category_id > 0))
Avatar billede Slettet bruger
24. januar 2003 - 16:28 #16
Virker heller ikke... Er det fordi jeg blander INT og STRING variabler i den sidste del? det burde da være ligemeget?
Avatar billede totaliorden Nybegynder
24. januar 2003 - 16:34 #17
jamen ... hvorfor ... jeg fatter nix af den kode...
I den sidste del er der jo rod som ikke høre til der.. Nu kender jeg ikke resten af din kode, men for at den tjekker noget, skal det jo være alla det her:

$group_type == "Varegruppe"
$category_id > 0
if((!$title || !$group_type && $category_id > 0)){
echo "Mindre end 0";
}else{
echo "Større en 0";
}
Avatar billede totaliorden Nybegynder
24. januar 2003 - 16:35 #18
ja jeg roder nu ... sådan her:

$group_type == "Varegruppe";
if((!$title || !$group_type && $category_id > 0)){
echo "Mindre end 0";
}else{
echo "Større en 0";
}
Avatar billede totaliorden Nybegynder
24. januar 2003 - 16:36 #19
glem de 2 der :) ... sådan her, sidste gang nu :

$group_type == "Varegruppe";
if((!$title || !$group_type) && ($category_id > 0)){
echo "Mindre end 0";
}else{
echo "Større en 0";
}
Avatar billede Slettet bruger
24. januar 2003 - 16:37 #20
Ok.. Godt det er fredag... Sprøg mig ikke hvorfor, men skidtet virker nu...

Der står:

if(!$title OR !$group_type OR ($group_type == "Varegruppe" && $category_id == '0'))

Men mange mange tak til alle.. Håber i kommer over forvirringen... hehe.. og GOD WEEKEND!
Avatar billede totaliorden Nybegynder
24. januar 2003 - 16:39 #21
heh, jeg er også ved at være halv bedugget, sååå det er nok derfor jeg fatter nada..

Go' weekend!
Avatar billede tefcke Nybegynder
24. januar 2003 - 16:47 #22
Den eneste ændring du har lavet i forhold til din indledende if, er tjekker du tilsidst tjekker ($category_id > '0') istedet for ($category_id > 0)
Avatar billede arnvig Nybegynder
24. januar 2003 - 17:39 #23
Obs Jeg skal ikke have point.
Hvis der er nogen som vil have dem, så smid lige et indlæg
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