alex s.: elseif innerhalb for-Schleife möglich?

Hallo zusammen

ich hab ein array und möchte mit diesem array eine bedingung vereinfachen, aber irgendwie funktioniert meine idee nicht so ganz wie ich vorhabe:

--------------------------------------------------------------

if ($_GET['action'] == "Delete" && $_SESSION['benutzer_rechte'] >= 5) {
Delete();
}

$actions = array("Handy", "Home", "Readiness", "ReadinessReceiver", "Employees", "Craft", "MasterData", "Beeper", "Help", "Carfare", "Locker", "Cars");

for ($i=0; $i=count($actions); $i++) {

elseif ($_GET['action'] == "$actions[$i]" && $_SESSION['benutzer_rechte'] >= 4) {
$actions$i;
}

else {

print "Keine Berechtigung";

}

----------------------------------------------------------------

Folgende Fehlermeldung erhalte ich:

Parse error: parse error, unexpected T_ELSEIF in E:\xampp\htdocs\emrw\index.php on line 69

wisst ihr vielleicht weiter?

gruß alex

  1. Hallo!

    Wieso elseif? Du hast doch kein if, an das es anknüpft.

    http://www.php.net/manual/de/control-structures.elseif.php

    Also einfach mit if anfangen.

    Gruß

    Matthias

    --
    ss:| zu:| ls:[ fo:| de:] va:) ch:? sh:) n4:( rl:( br:> js:| ie:% fl:) mo:}
    http://www.makaio.de/quotations
    1. Hallo!

      Wieso elseif? Du hast doch kein if, an das es anknüpft.

      vielleicht übersehen? über der for-Schleife ist sie.

      gruß alex.

      1. Hallo!

        Richtig, aber die ist abgeschlossen, da du danach die foreach-Schleife startest.

        elseif klappt nur so:

        if (<Bedingung>) {
            <Aktion>
        } else if (<Bedingung>) {
            <Aktion>
        } else if (<Bedingung>) {

        ...

        } else {
            <Aktion>
        }

        Gruß

        Matthias

        --
        ss:| zu:| ls:[ fo:| de:] va:) ch:? sh:) n4:( rl:( br:> js:| ie:% fl:) mo:}
        http://www.makaio.de/quotations
        1. Hallo meine if-bedingung hört ebenfalls mit else {} auf .

          Richtig, aber die ist abgeschlossen, da du danach die foreach-Schleife startest.

          daran kann es nicht liegen

          gruß alex

          1. Hallo!

            Nee, tut se nich!

            --------------------------------------------------------------

            if ($_GET['action'] == "Delete" && $_SESSION['benutzer_rechte'] >= 5) {
            Delete();
            }

            $actions = array("Handy", "Home", "Readiness", "ReadinessReceiver", "Employees", "Craft", "MasterData", "Beeper", "Help", "Carfare", "Locker", "Cars");

            for ($i=0; $i=count($actions); $i++) {

            elseif ($_GET['action'] == "$actions[$i]" && $_SESSION['benutzer_rechte'] >= 4) {
            $actions$i;
            }

            else {

            print "Keine Berechtigung";

            }

            ----------------------------------------------------------------

            Da ist eine geschweifte Klammer hinter Delete() => if ist "vorbei". Es müßte direkt "else" oder "else if" folgen. Stattdessen wird ein array definiert und dann die foreach Schleife aufgerufen. Das elseif innerhalb der foreach Schleife braucht eine vorhergehende if-Bedingung. Und die ist nicht da. Du scheinst zu glauben eine beliebige, irgendwo im Code definierte if-Bedingung ist an einer beliebigen anderen Stelle mit "else if" fortführbar.

            Gruß

            Matthias

            --
            ss:| zu:| ls:[ fo:| de:] va:) ch:? sh:) n4:( rl:( br:> js:| ie:% fl:) mo:}
            http://www.makaio.de/quotations
    2. P.S.: Die schließende Klammer der for-Schleife fehlt noch.

      1. P.S.: Die schließende Klammer der for-Schleife fehlt noch.

        auch damit funktioniert es leider nicht - habs gerade verbessert.

        gruß alex.

  2. Hi,

    if ($_GET['action'] == "Delete" && $_SESSION['benutzer_rechte'] >= 5) {
    Delete();
    }

    Hier - und nur hier - kann ein elseif zu obigem if folgen.
    Es folgt aber eine Zuweisung.
    Damit ist das if endgültig abgeschlossen, ein else oder elseif kann nicht mehr folgen.

    Du kannst nicht irgendwo Lichtjahre vom if entfernt ein elseif (noch dazu in einer Schleife) zu einem if schreiben, dies muß unmittelbar folgen.

    for ($i=0; $i=count($actions); $i++) {

    elseif ($_GET['action'] == "$actions[$i]" && $_SESSION['benutzer_rechte'] >= 4) {

    Unmittelbar vor diesem elseif fehlt ein if. Daß zufällig irgendwo weiter oben im Code mal ein if steht, spielt überhaupt keine Rolle.

    cu,
    Andreas

    --
    MudGuard? Siehe http://www.Mud-Guard.de/
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.