Sonia: else-zweig wird ignoriert, warum?

Hallo,

ich hab eine kleine php datei in der
diverse if, elseif und zum schluss
wenn alles nicht zutreffen sollte ein else
steht. (siehe unten) Dieses letzte else wird
immer ignoriert, kann mir jemand sagen was
ich da falsch mache?

so sieht das aus:

if($men==1)
{
  require'irgendwas.txt';
}
elseif($men==6 || ($men<=70 && $men>=60))
{
  require'Abdeckplatten.php';
}
else
{
  require'Doppelsteine.txt';
}

Danke schonmal im vorraus

gruss
Sonia

  1. Hallo,

    seltsam, aber entweder ich bin jetzt vorübergehend erblindet oder da ist tatsächlich kein Fehler.

    Setze einfach mal vor der if-Abfrage $men=2, dann müßte ja eigentlich der else-Teil durchlaufen werden. Wenn das klappt, dann kann es eigentlich nur noch sein, daß $men eben immer 1, 6 oder zwischen 60 und 70 ist.

    Oder probier mal vor und nach der if-Bedingung ein echo $men, mal gucken, wass der sagt.

    Viele Grüße,
    Jürgen

    1. Setze einfach mal vor der if-Abfrage $men=2, dann müßte ja eigentlich der else-Teil durchlaufen werden. Wenn das klappt, dann kann es eigentlich nur noch sein, daß $men eben immer 1, 6 oder zwischen 60 und 70 ist.

      $men wird über die URL gesetzt, dann würde ich den wert überbügeln,
      aber ich glaube es liegt daran das wenn $men in der URL keinen
      Wert zugewiesen bekommt, auch kein Wert existiert und deswegen
      ignoriert er die ganze if schleife....?
      Wenn das so ist müsste ich die URL prüfen und wenn $men nicht
      vorhanden ist, diesem einen Wert zuweisen. oder gibt es einen
      eleganteren weg?

      Gruss
      Sonia

      1. Hallo,

        du solltest sowieso sicher gehen, daß die verwendeten Variablen auch definiert sind.
        Das geht z.B. so:

        if(!isset($men)) $men = 0;

        Denn ansonsten wird die if-Bedingung tatsächlich nicht durchlaufen.

        Viele Grüße,
        Jürgen

        1. Danke,

          ich habe es jetzt folgendermassen
          abgeändert:

          -->Problemstelle:

          if(!isset($men))  require'Doppelsteine.txt';

          <--
          if($men==0)
          {
            require'Doppelsteine.txt';
          }
          elseif ($men==1 || ($men<=20 && $men>=10))
          {
            require'Doppelsteine.txt';
          }
          elseif($men==2 || ($men<=30 && $men>=20))
          {
            require'Einzelsteine.txt';
          }
          usw....

          wenn ich an die stelle "require... " ein
          echo "var not set";
          setze dann wird der text "var not set" ausgegeben
          sobald ich aber an diese stelle das require setze wird es
          einfach ignoriert . *haare rauf*

          1. Hallo Sonja

            -->Problemstelle:

            if(!isset($men))  require'Doppelsteine.txt';

            <--

            wenn ich an die stelle "require... " ein
            echo "var not set";
            setze dann wird der text "var not set" ausgegeben
            sobald ich aber an diese stelle das require setze wird es
            einfach ignoriert . *haare rauf*

            Du hast ja auch die geschweiften Klammern vergessen,
            somit ist das "require" nicht Teil oder Folge der Bedingung.

            also:
            if(!isset($men))
               {
               require("Doppelsteine.txt");
               }

            Tschüß, Auge

            PS: Muß es require sein, wäre include nicht angemessener?

            1. hallo

              -->Problemstelle:

              if(!isset($men))  require'Doppelsteine.txt';

              <--

              Du hast ja auch die geschweiften Klammern vergessen,
              somit ist das "require" nicht Teil oder Folge der Bedingung.

              laut selfphp
              http://www.selfphp.info/funktionsreferenz/kontroll_mechanismen/if.php
              geht das auch so, aber ich habe es auch in den anderen Varianten probiert
              und es funktioniert trotzdem nicht.

              PS: Muß es require sein, wäre include nicht angemessener?

              da hast du wohl recht, aber jetzt habe ich es auf include geändert und es
              geht immer noch nicht....

              -->>

              if(!isset($men))
              {
                include'Doppelsteine.txt';
              }

              if($men==0)
              {
                include("Doppelsteine.txt");
              }
              elseif ($men==1 || ($men<=20 && $men>=10))
              {
                include'Doppelsteine.txt';
              }
              elseif($men==2 || ($men<=30 && $men>=20))
              {
                require'Einzelsteine.txt';
              }

              1. Nochma Hallo *hehe*

                jetzt habe ich es auf include geändert und es geht immer noch nicht....

                Ich hab mir den Schnipsel mal kopiert, und es geht,
                die Bedingungen werden richtig abgearbeitet.

                if(!isset($men))
                {
                  include'Doppelsteine.txt';
                }

                richtig: include("Doppelsteine.txt"); (die Klammer vergessen)

                elseif ($men==1 || ($men<=20 && $men>=10))
                {
                  include'Doppelsteine.txt';
                }
                elseif($men==2 || ($men<=30 && $men>=20))
                {
                  require'Einzelsteine.txt';
                }

                Wo gehört $men==20 hin? Eine der Bedingungen sollte geändert werden.
                entweder:

                elseif ($men==1 || ($men<20 && $men>=10))

                oder

                elseif($men==2 || ($men<=30 && $men>20))

                $men==20 passte natürlich zuerst nach Doppelsteine.txt,
                hätte aber logisch auch zu Einzelsteine.txt gehören können.

                Tschüß, Auge

                1. -->>

                  richtig: include("Doppelsteine.txt"); (die Klammer vergessen)

                  hab ich auch drinn

                  Wo gehört $men==20 hin? Eine der Bedingungen sollte geändert werden.

                  das ist erstmal wurscht $men wird eh nicht auf 20 gesetz sondern
                  immer darüber oder darunter. berichtigt hab ichs trotzdem
                  aber es läuft immernoch nicht

                  *grummel*

                  irgendwas stimmt da doch nicht wenn es bei dir läuft und bei mir nicht?

                  wenn du die seite lädst, siehst du dann bilder? (langsam an Browsern zweifel)

                  http://www.reith-grabmale.de/katalog/

                  1. Hallo,

                    wenn du die seite lädst, siehst du dann bilder? (langsam an Browsern zweifel)

                    ich seh die Bilder und auch die Links funktionieren (Moz 1.0).

                    damit wäre Dein Problem gelöst :-)

                    Grüße,

                    Christian

                  2. Hallo Sonja

                    wenn du die seite lädst, siehst du dann bilder? (langsam an Browsern zweifel)

                    http://www.reith-grabmale.de/katalog/

                    Ja, außer bei "Tiefgrabsteine" überall,
                    wo doch gerade dieser Punkt Interessant gewesen wäre.
                    Was bitte sind Tiefgrabsteine?

                    Tschüß, Auge

                  3. Hallo Sonja

                    Hab mir auch den Rest der Seite angeschaut,
                    der Link zum Katalog in der rechten unteren Ecke
                    ist mal im Feld, mal darunter und mal fehlt er ganz.

                    (moz 1.0 RC3)

                    Tschüß, Auge

  2. ich hab eine kleine php datei in der
    diverse if, elseif und zum schluss
    wenn alles nicht zutreffen sollte ein else
    steht. (siehe unten) Dieses letzte else wird
    immer ignoriert, kann mir jemand sagen was
    ich da falsch mache?

    if($men==1)
    {
      require'irgendwas.txt';
    }
    elseif($men==6 || ($men<=70 && $men>=60))
    {
      require'Abdeckplatten.php';
    }
    else
    {
      require'Doppelsteine.txt';
    }

    Dieser Code funktioniert unter PHP 4.2.1 einwandfrei.

    Gruß,
      soenk.e