webForumDet fria alternativet

fel på ifsats?

PHP

4 svar · 255 visningar · startad av Prime_66

Medlem sedan aug. 2004290 inlägg
Frågan#1

Vet inte vad felet är här..if-satsen fungerar med enbart det första villkoret, men inte när jag lägger till det andra (ifrån "or"). Det funkar även när jag enbart kör det andra villkoret. Är det något fel i syntaxen?

$filtype1 = explode(".",$_FILES['file1']['name']);
	$elemetsinarray=count($filtype1)-1;
		if ($filtype1[$elemetsinarray]!="MP3" || $filtype1[$elemetsinarray]!="mp3"){
		$error = "Du har valt en fil i felaktigt format. Mp3-filer är det enda som accepteras."; 
		header('location:laddaupp4.php?error='.$error.''); break;
		}
Medlem sedan maj 20018 027 inlägg
#2

Pröva att lägga till några parenteser runt delvillkoren, så att du verkligen vet vad if-satsen testar.

Medlem sedan aug. 2004290 inlägg
#3

testade:


if (($filtype1[$elemetsinarray]!="MP3") || ($filtype1[$elemetsinarray]!="mp3")){
		$error = "Du har valt en fil i felaktigt format. Mp3-filer äwr det enda som accepteras."; 
		header('location:laddaupp4.php?error='.$error.''); break;
		}

Men funkade inte :/

Medlem sedan maj 20018 027 inlägg
#4

Nu ser jag vad du har gjort för fel; om filsuffixet är "MP3", då kommer ju det första villkoret bli falskt. Men eftersom du har ditt "or"-villkor, testar den även det andra villkoret. Och där faller det ut annorlunda, eftersom filsuffixet faktiskt inte är ="mp3". Alltså kommer du alltid få resultatet att filsuffixet är fel.

Du borde snarare testa:

if ((suffix=="mp3") || (suffix=="MP3"))
{
}
else
{
klaga på filformat;
}
Medlem sedan aug. 2004290 inlägg
#5

Ahh...typiskt. Du har så rätt. thanx :OO

249 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
125 ms — hämta tråd, inlägg och bilagor (db)
120 ms — ändringar (db)