if und else if - welche wär richtig und besonders wie?

Support zum phpBB2 und zu MODs anderer Autoren.

Moderator: Supporter

if und else if - welche wär richtig und besonders wie?

Beitragvon Christian_N » 11. Aug 2006 10:46

Hallo,
also bei des andere thema Frage zum easyUCP hast mal erklärt weshalb die else if genommen hast.

Jetzt hab ich aber mit dem MOD von Acid neue felder ins Profil eingefügt und diese möchte ich als pflicht machen, des geht auch mit ein if eintrag, so da es aber verschiedene felder name sind musste bei es so aussehn beispiel:
Code: Alles auswählen
   if( $mode == 'editprofile' || $mode == 'register' )
   {
      if( empty($text1) || empty($text2) || empty($text3) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_empty'];
      }
   }
aber dann kommt immer die eine meldung falls alle 3 nicht ausgefüllt sind sogar gleich 3x und das sieht etwas blöd aus, deshalb wollt dachte ich mir es zu dulpizieren - z.B. so
Code: Alles auswählen
   if( $mode == 'editprofile' || $mode == 'register' )
   {
      if( empty($text1) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_text1_empty'];
      }
   }
if( $mode == 'editprofile' || $mode == 'register' )
   {
      if( empty($text2) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_text2_empty'];
      }
   }
da hier irgendwie das mit dem else if nicht richtig funktionierte darmals, ist meine frage ob es so richtig ist, oder hatte ich den else if darmals nur falsch gehabt, weil er auch gespeichert hatte schon obwohl nicht alle pflichtfelder ausgefüllt waren.

Hatte des wenn ich es richtig in errinnerung habe so gehabt:
Code: Alles auswählen
   if( $mode == 'editprofile' || $mode == 'register' )
   {
      if( empty($text1) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_text1_empty'];
      }
   }
else if( $mode == 'editprofile' || $mode == 'register' )
   {
      if( empty($text2) )
      {
         $error = TRUE;
         $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_text2_empty'];
      }
   }


Schonmal danke.
Gruß Chris
Chantals - Fanpage :: http://www.chantals-fanpage.de
Benutzeravatar
Christian_N
User
 
Beiträge: 524
Registriert: 31. Mai 2005 00:17
Wohnort: Deutschland

Beitragvon oxpus » 11. Aug 2006 12:22

"else if" ist nur dann zu verwenden, wenn die vorherige Bedingung nicht erfüllt wird! "else" stellt sogar wörtlich übersetzt den gegenteiligen Fall dar (else = sonst).
Da aber gerade diese Bedingungen zur Prüfung auf gültige Inhalte oder auf Pflichtfelder beides sein können, also eintreffen oder auch nicht, ist die Bedingung für weitere Felder mit gleichen Ergebnissen entweder in die bestehende Bedingung einzubetten oder mit NUR "if" eine neue Bedingung zu starten.

Also zur Verdeutlichung:
Code: Alles auswählen
if (bedingung == prüfung)
{
// auszuführender Code, wenn Bedingung wahr wird (auch bei negativer Bedingung)
}
else if (bedingung2 == prüfung)
{
// auszuführender Code, wenn die erste Bedingung nicht zutrifft, aber diese zweite Bedingung schon (und auch nur dann!)
}
else
{
// auszuführender Code, wenn keine der vorherigen Bedingungen zutrifft (also die absolute Ausnahme!)
}


Ich hoffe, das war jetzt verständlich.
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Beitragvon Christian_N » 11. Aug 2006 17:25

Oki so ein wenig schon, danke erstmal für die info, dann sollte aba schon
Code: Alles auswählen
      if( $mode == 'editprofile' || $mode == 'register' )
      {
         if( empty($text1) )
         {
            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_text1_empty'];
         }
          if( empty($text2) )
         {
            $error = TRUE;
            $error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['Fields_text2_empty'];
         }
      }
ausreichen und nicht wie im 2. codeblock beim erste post, den einmal die prüfung ob editprofile bzw register ist reicht ja, da die felder die als pflichtfelder geprüft werden sowohl bei der registier als auch editprofile anzeigen sollen. - Also wenn ich es richtig soweit verstanden habe ist dieser codeblock jedenfalls dann der richtigere? :)

Gruß Chris
Chantals - Fanpage :: http://www.chantals-fanpage.de
Benutzeravatar
Christian_N
User
 
Beiträge: 524
Registriert: 31. Mai 2005 00:17
Wohnort: Deutschland

Beitragvon oxpus » 11. Aug 2006 18:23

Ja, so könnte man es machen.
Kein Support ausserhalb der Foren!
No support outside the forums!
Benutzeravatar
oxpus
Partner
 
Beiträge: 610
Registriert: 14. Okt 2004 11:55
Wohnort: Bad Wildungen (halt so'n kleines Kurkaff)

Beitragvon Christian_N » 12. Aug 2006 00:16

Eins ist mir aufgefalle, da ich den easyUCP im einsatz habe, musste aus den $mode == 'editprofile' - in $ucp_mode == 'ucp_text' geändert werde, wobei ucp_text für dem steht wo des pflichfeld ist z.B. bei der ucp_info - da sonst wo des $mode == 'editprofile' stande er bei jeden Button, Signatur, Avatar, Einstellungen etc. die Fehlermeldung gebracht hatte, nur da konnte man das Pflichtfeld schlecht ausfüllen, also musste es auf den $ucp_mode eingeschränkt werden *g*
Chantals - Fanpage :: http://www.chantals-fanpage.de
Benutzeravatar
Christian_N
User
 
Beiträge: 524
Registriert: 31. Mai 2005 00:17
Wohnort: Deutschland


Zurück zu phpBB2 Support



Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast