else if Frage

BadBoy227

Mitglied
Hi

ich bräuchte auch mal ein wenig Hilfe bei der Fehlersuche xD ich habe einen Code(siehe unten) in dem ich eine mySQL Anfrage durchfühe und dann durch verschiedene else if durchlaufen lasse. So jetzt zu meinem Problem die letze else if wird irgendwie nicht beachtet bzw. gibt nen weißen Screen und dann kehre ich zurück ohne das meine DB geupdated wurde.... anderen beiden werden perfekt durchgeführt..Wieviel else if kann man in Reihe setzen? müssten doch eigentlich soviele sein wie man Will oder?
Danke für die Hilfe

liebe Grüße
BadBoy227

PHP:
    if ($gelduser < 0)
             {
            echo '<h2>Nicht genügend Kapital</h2>';
        }
        else if ($Square <= 0)
     {
         echo '<h2>Nicht genügen Fläche vorhanden!</h2>';
     }
if ( $Type == Klein )
     {
        if ( $squareges > 15000 )
        {
         echo ' Ihr Terminal hat die Ausgangsgröße von Klein. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 15000m² handelt!';
         }
     }
   else if ( $Type == Mittel )
     {
           if ( $squareges > 35000 )
           {
            echo ' Ihr Terminal hat die Ausgangsgröße von Mittel. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 35000m² handelt!';
           }
     }
    else if ( $Type == Gross )
     {
      if ( $squareges > 50000 )
         {
         echo ' Ihr Terminal hat die Ausgangsgröße von Groß. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 50000m² handelt!';
         }
     }
     else
hier wird dann geupdated
 
Erst einmal gibt es keinerlei Beschränkungen wie viel else-if-Anweisungen man nacheinander verwendet.

Was mir allerdings auffällt ist das deine Vergleiche auf Konstanten gemacht werden. Sind Klein, Mittel, Gross Konstanten oder fehlen dort nur die Hochkommas?:confused:
 
Die else Bedingung wird nur ausgeführt wenn keine der if und elseif Anweisungen true ergeben.

Ich an deiner Stelle würd es so lösen:
PHP:
    else if ( $Type == 'Gross' )
     {
      if ( $squareges > 50000 )
         {
         echo ' Ihr Terminal hat die Ausgangsgröße von Groß. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 50000m² handelt!';
        $sql = 'UPDATE bla SET blub = '.$blub.' WHERE blablub = '.$blablub.'';
        $result = mysql_query($sql);
         }
     }

Das Update dann natürlich bei jeder elseif Anweisung einfügen.
 
Zuletzt bearbeitet:
Sind Konstanten. $Type wird aus der DB abgerufen und weiter oben auch defeniert :) Das Problem liegt halt echt bei der letzten else if Abfrage, wenn es über 50000 ist dann kommt die ganze Anfrage zu stande, aber unter den 50000 gibts einfach nen whitescreen

das komische ist halt, dass wenn $Type mit Mittel oder Klein defeniert ist, auch alles ohne Probleme funktioniert, aber Danke für den Lösungsvorschlag :)
 
Ich fände sowas in die Richtung schöner:
PHP:
$benoetigt = array();
$benoetigt['Klein'] = 15000;
$benoetigt['Mittel'] = 35000;
$benoetigt['Gross'] = 50000;

$var = 'Klein-Mittel-Gross, jenachdem';
if( $wert < $benoetigt[$var] )
{
    echo 'Ihr Terminal hat die Ausgangsgröße von ' .$wert. '. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von ' .$benoetigt[$var]. 'm² handelt!';
}
Das Beispiel würde dann funktionieren, wenn immer nur eine Grösse ausgewählt werden kann.
Sonst müsste man halt was mit einer Schleife machen.
 
Die else Bedingung wird nur ausgeführt wenn keine der if und elseif Anweisungen true ergeben.

Ich an deiner Stelle würd es so lösen:
PHP:
    else if ( $Type == 'Gross' )
     {
      if ( $squareges > 50000 )
         {
         echo ' Ihr Terminal hat die Ausgangsgröße von Groß. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 50000m² handelt!';
        $sql = 'UPDATE bla SET blub = '.$blub.' WHERE blablub = '.$blablub.'';
        $result = mysql_query($sql);
         }
     }

Das Update dann natürlich bei jeder elseif Anweisung einfügen.

Da mach ich es mir bequemer...

PHP:
if ($gelduser < 0)
             {
            echo '<h2>Nicht genügend Kapital</h2>';
        }
        else if ($Square <= 0)
     {
         echo '<h2>Nicht genügen Fläche vorhanden!</h2>';
     }
if ( $Type == Klein )
     {
        if ( $squareges > 15000 )
        {
         echo ' Ihr Terminal hat die Ausgangsgröße von Klein. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 15000m² handelt!';
         }
     }
   else if ( $Type == Mittel )
     {
           if ( $squareges > 35000 )
           {
            echo ' Ihr Terminal hat die Ausgangsgröße von Mittel. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 35000m² handelt!';
           }
     }
    else if ( $Type == Gross )
     {
      if ( $squareges > 50000 )
         {
         echo ' Ihr Terminal hat die Ausgangsgröße von Groß. Sie können Ihr Terminal nicht erweitern da die max. Erweiterungsgröße sich bei Ihrem Terminal um eine Fläche von 50000m² handelt!';
         }
     }
//     else                               <--das else kommt einfach weg ^^
//hier wird dann geupdated      <-Bitte schön das update, dass aufjedenfall durchgeführt wird...
$sql = 'UPDATE bla SET blub = '.$blub.' WHERE blablub = '.$blablub.'';
        $result = mysql_query($sql);


[EDIT]
Ach übrigens...
Wenn du mehrere solcher Werte in einer Variable haben könntest...
Kann
PHP:
switch($variable){ case 'xxx': break; }
interessant sein ^^
 
Zuletzt bearbeitet:
Danke für die Antworten :) das else hatte ich auch schon weg, aber dann wird das updated selbst dann durchgeführt wenn eigentlich die letzte else if erfüllt ist :S Die Sache ist die der User kann im Grunde frei wählen was diesen Wert angeht der dann geupdated wird. Der Gesamt Wert darf dann also nicht über 50000 betragen, wenn er das Gebäude der Stufe Gross gekauft hat. Hoffe ist verständlich ^^
 
So ich habe es jetzt anders gelöst :) ich habe einfach zwei weitere Spalten erstellt, in diese werden Art(also klein,mittel,groß) eingetragen und in die andere die max. Größe. Das ganze wird dann normal mit if abgefragt. Sollte es noch Fragen geben PM oder hier :D
 
Zurück