Fehler den es gar nich geben dürfte...???

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehler den es gar nich geben dürfte...???

    Hi Leute...

    Erstmal:
    HÄ???????
    Sorry,aber ich sitz seit 6 Tagen daran und kapier nicht was daran falsch sein soll...
    Ich habe ein modulares System aufgebaut,dass ObjektOrientiert geschrieben ist.Hmm...wie soll ich das erklären? *g*
    Alles läuft über die Datei "index.php" bzw. "admin.php" und es sieht in der URL oben immer so aus:
    .../index.php?m=admincp&a=welcome
    "m" steht für "module".Wenn z.B. das Modul "admincp" angegeben ist,dann wird die Datei "admincp" hinzugeladen.Diese Datei fängt so an:

    <?php
    class admincp EXTENDS core {

    function execute()
    {

    // code für das modul

    }

    }

    So ist jedes Modul am Anfang aufgebaut."execute" ist immer der Name der Funktion,in der alle Funktionen des Moduls gestartet und geladen werden.
    SO!

    "a" steht für "action".In der Funktion "execute" können mehrere Teile des Moduls geladen werden.

    function execute()
    {

    if($this->action=="blubb")
    {

    print "hallo";

    } elseif($this->action=="bla")
    {

    print "bla";

    } // etc

    }

    SO²! (anstrengend )
    $this->action wird so übergeben:
    $this->action=$a;
    So,das funktioniert auch bei jeder Aktion in dem Modul,bis auf bei einer.
    So sieht die "execute"-Funktion des Modules "admincp" aus:

    function execute( $action )
    {

    print "<br>Dies ist die Aktion: ".$action."<br><br><br>";
    switch( $action )
    {

    case 'welcome':

    global $logged;

    $vq = $this->db->seek( $this->various, $this->numbers['post_count'] );
    $post_count = $vq[$this->tn['int_param1']];

    eval ( "\$return .= \"".$this->template( "main" )."\";" );

    break;

    case 'bookturnonoff':

    $return .= $this->action;
    eval ( "\$return .= \"".$this->template( "bookonoff" )."\";" );

    break;

    case 'savebookonoff':

    $return .= $this->action;
    eval ( "\$return .= \"".$this->template( "savebookonoff" )."\";" );

    break;

    }

    return $return;

    }

    Bei dem letzten case, 'savebookonoff', funktioniert das System allerdings nicht.Die Aktionsvariable wird von einer Form übergeben.Es kann allerdings nicht daran liegen,dass register_globals=off sind,denn ich habe ein kleines Script von Berni geincluded(Thx nochmal an dieser Stelle).Ich poste es nochmal für alle interessenten:

    <?php

    ### Credits goes to 'Berni' @ www.bbauder.de
    if (!empty($_GET)) { extract($_GET); }
    else if (!empty($HTTP_GET_VARS)) { extract($HTTP_GET_VARS); }


    if (!empty($_POST)) { extract($_POST); }
    else if (!empty($HTTP_POST_VARS)) { extract($HTTP_POST_VARS); }


    if (!empty($_COOKIE)) { extract($_COOKIE); }
    else if (!empty($HTTP_COOKIE_VARS)) { extract($HTTP_COOKIE_VARS); }


    if (!empty($_ENV)) { extract($_ENV); }
    else if (!empty($HTTP_ENV_VARS)) { extract($HTTP_ENV_VARS); }


    if (!empty($_SERVER)) { extract($_SERVER); }
    else if (!empty($HTTP_SERVER_VARS)) { extract($HTTP_SERVER_VARS); }


    if (!empty($_SESSION)) { extract($_SESSION); }
    else if (!empty($HTTP_SESSION_VARS)) { extract($HTTP_SESSION_VARS); }


    if (!empty($_FILES)) {
    while (list($name, $value) = each($_FILES)) {
    $$name = $value['tmp_name'];
    }
    } else if (!empty($HTTP_POST_FILES)) {
    while (list($name, $value) = each($HTTP_POST_FILES)) {
    $$name = $value['tmp_name'];
    }
    }

    ?>

    Auch wenn sie on sind,funzt es nicht.Ausserdem funktionieren alle anderen Forms tadellos.So,anstatt das der Inhalt des cases "savebookonoff" geladen wird,wird einfach nochmal das Standartmodul mit der Standartaktion geladen,wie eingestellt.Komischerweise,wenn ich z.B. bevor die function execute gestartet wird ein "print $a" eintippe,oder "print $core->action",dann steht da auch wirklich "savebookonoff".Das hab ich an allen möglichen Stellen des Skriptes gemacht und es stimmt auch.Nur wenn ich das in der function mit z.B. "print $this->action",dann kommt nichts.Ich habe es mal hiermit probiert:
    function execute($action){
    switch($action){
    // alle cases
    }
    }

    $output = $core->execute($a);

    Dann funktioniert das komischerweise bei dem case "savebookonoff" auch nicht...Wenn ich aber das mache,dann funktioniert das:
    $core->action="savebookonoff";
    Gut,aber das hilft mir nicht weiter,denn wenn ich z.B. das mache:
    if($a=="savebookonoff") {
    print "test";
    $core->action=="savebookonoff";
    }
    ?>
    Dann wird zwar "test" ausgegeben,aber die Variable wird nicht übergeben und es passiert der gleiche Fehler.Ich hab alles debuggt,etc. aber ich find den Fehler nicht.Und wie gesagt,da sitz ich echt 6 Tage dran.Ich glaub ich bin blind...

    [EDIT]
    Wer hat da die PHP-Tags hingemacht?
    Zuletzt geändert von V 9 1 9 V; 20.11.2002, 19:44.

  • #2
    Also Deine letzte Zuordnung nimm mal ein = weg
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Sorry,hab mich da verschrieben.Hab ich schon so im Skript...

      Kommentar


      • #4
        Ok,ich lass mir was anderes einfallen...Da is kein Fehler,jedenfalls seh ich keinen.Danke trotzdem!

        Kommentar

        Lädt...
        X