Isset()

Papenburger

Erfahrenes Mitglied
Hallo,

ich möchte mit Isset gerne 3 Variablen überprüfen. Das Problem: Sobald der bei der ersten Variable die Bedingung zutrifft, führt er den dazugehörigen Code aus.

Folgendes möchte ich:
PHP:
if(!isset($a, $b, $c))                         {echo "Keiner belegt<BR>";}
elseif(!isset($a  $b) && !isset($c))           {echo "Nur Filter & Register<BR>";}
elseif(isset($a, $c) && !isset($b))            {echo "Nur Filter & Search<BR>";}
elseif(isset($register, $c) && !isset($a))     {echo "Nur Register & Search";}
elseif(isset($a) && !isset($b, $c))            {echo "Nur Filter<BR>";}
elseif(isset($b) && !isset($a, $c))            {echo "Nur Register<BR>";}
elseif(isset($c) && !isset($a, $b))            {echo "Nur Search<BR>";}
else                                           {echo "Alle belegt<BR>";}
Wenn nun $b und $c belegt sind, bricht der nach der ersten Abfrage schon ab und sagt dass keiner belegt ist...
Wie kann ich das ändern ohne jedesmal isset($a) && isset($b) benutzen zu müssen?


MFG
Papenburger
 
Sags halt gleich ^^

PHP:
<?php
$a = "test";
$b = "test";
$c = "test";

if(isset($a,$b,$c)){
echo "passt";
}
?>

Hoff dir gefällt es so -.-
Ist eigentlich wie deines, nur bei mir geht es so ...
Glaube dein Ausrufezeichen ist heir fehl am Platz (!)
 
Sags halt gleich ^^

PHP:
<?php
$a = "test";
$b = "test";
$c = "test";

if(isset($a,$b,$c)){
echo "passt";
}
?>
Hoff dir gefällt es so -.-
Ist eigentlich wie deines, nur bei mir geht es so ...
Glaube dein Ausrufezeichen ist heir fehl am Platz (!)

Wenn nun b und c leer sind macht der aber trotzdem das echo und genau das soll der ja nicht, weil die bedingung ja nicht gegeben ist...
 
Vielleicht ist Folgendes besser geeignet:
PHP:
switch( sprintf('%u%u%u', isset($a), isset($b), isset($c)) ) {
	case '000':
		echo "Keiner belegt<BR>";
		break;
	case '001':
		echo "Nur Search<BR>";
		break;
	case '010':
		echo "Nur Register<BR>";
		break;
	case '011':
		echo "Nur Register &amp; Search<BR>";
		break;
	case '100':
		echo "Nur Filter<BR>";
		break;
	case '101':
		echo "Nur Filter &amp; Search<BR>";
		break;
	case '110':
		echo "Nur Filter &amp; Register<BR>";
		break;
	case '111':
		echo "Alle belegt<BR>";
		break;
}
Damit trifft immer nur ein Fall zu.
 
Ist ja klar -.-
Die Variablen sind ja vorhanden! ...
Du prüfst ja nicht ob die Variablen leer sind, sondern ob sie vorhanden sind!
PHP:
<?php
$a = "test";
$b = "";
$c = "";

if(isset($a,$b,$c)){
echo "passt";
}
?>
Das hier gibt eine Ausgabe -.- Alle 3 Variablen sind ja vorhanden ...
PHP:
<?php
$a = "test";
$b = "test";

if(isset($a,$b,$c)){
echo "passt";
}
?>
Hier gibt es keine Ausgabe ...
 
Vielleicht ist Folgendes besser geeignet:
PHP:
switch( sprintf('%u%u%u', isset($a), isset($b), isset($c)) ) {
    case '000':
        echo "Keiner belegt<BR>";
        break;
    case '001':
        echo "Nur Search<BR>";
        break;
    case '010':
        echo "Nur Register<BR>";
        break;
    case '011':
        echo "Nur Register &amp; Search<BR>";
        break;
    case '100':
        echo "Nur Filter<BR>";
        break;
    case '101':
        echo "Nur Filter &amp; Search<BR>";
        break;
    case '110':
        echo "Nur Filter &amp; Register<BR>";
        break;
    case '111':
        echo "Alle belegt<BR>";
        break;
}
Damit trifft immer nur ein Fall zu.

Der ist gut. Genau sowas hab ich gesucht...
Danke!
 
Zurück