[OOP] Fehlermeldung nich nachvolziehbar

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

  • [OOP] Fehlermeldung nich nachvolziehbar

    Abend zusammen,

    folgender Code macht mir wirklich Probleme:
    PHP-Code:
    <?php
    if($_POST['command'] == "send")
      
    $out "status_error_tmp.txt";
    else
      
    $out "status_normal_tmp.txt";

    $array[status] = $templet->get_file("content/kontakt/$out");
    $array[content] = $templet->get_content("content/kontakt_temp.txt",$array);
    ?>
    Sobald $out den Wert "status_error_tmp.txt" annimmt kommt
    Fatal error: Call to a member function on a non-object in irgendwas\contact.sys.php on line 8

    Die Klasse ist vollkommen in Ordnung und funktioniert wunderbar solange $out den Wert "status_normal_tmp.txt" hat...

    Was mache ich falsch?!?

    Ich kapier nich warum das Ganze nicht funktioniert....

    Edit:
    Was vielleicht noch wichtig sein könnte:
    Logischerweise wird dieses Script included, und $templet = new class; wird in dem Hauptfile als ein Object deklariert.
    Zuletzt geändert von Samson2k; 18.11.2003, 19:50.
    Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
    (Albert Einstein)

  • #2
    Das Ganze als Exempel im Internet:
    http://www.koepp-online.com/index.php?show=kontakt

    Wie gesagt beim Anzeigen am Anfang hat $out den Wert "status_normal_tmp.txt" und sobald man das Formular abschickt und $out den Wert "status_error_tmp.txt" bekommt macht PHP ne Fehlermeldung die absolut falsch ist.
    Die Funktion existiert und wird ja auch vorher benutzt!
    Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
    (Albert Einstein)

    Kommentar


    • #3
      gib mal mehr code
      Beantworte nie Threads mit mehr als 15 followups...
      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

      Kommentar


      • #4
        PHP-Code:
            case "kontakt":
                
        $array[header] = "Kontakt";
                include(
        "contact.sys.php");
        // Hier stehn noch n paar Vaiablen, die werden aber nich in der klasse bzw. im oberen Script benutzt...
                
        break; 
        Ausschnitt aus switch() da wird die Datei included...


        PHP-Code:
            function get_file($file) {
                
        $open = @fopen($file,"r") or die("File-Templet konnte nicht ge&ouml;ffnet werden!");
                    while(
        $string fgets($open)) {
                        
        $return .= $string; }
                return 
        $return;
            } 
        Funktion get_file aus der Klasse
        Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
        (Albert Einstein)

        Kommentar


        • #5
          das sieht eher so aus, als wenn du beim posten des Formulars
          kein Objekt der Klasse erzeugst
          TBT

          Die zwei wichtigsten Regeln für eine berufliche Karriere:
          1. Verrate niemals alles was du weißt!


          PHP 2 AllPatrizier II Browsergame

          Kommentar


          • #6
            wo isn das $templet = new class();
            wo is das include der klasse, etc.
            Wo sind die Jungs mit der Glaskugel?
            Deine Fehlermeldung sagt ganz klar dass du eine objekt funktion aufrufst ohne objekt.
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Ich erzeuge es aber vor dem switch() und damit isses normal auch für alle nachvolgenden Dateien die ich einbinde vorhanden...

              PHP-Code:
              $templet = new templet;

              (...)

              switch(
              $show) {
              (...) 
              Wenn ich es nicht erzeugen würde dann dürfte das Formular gar nicht angezeigt werden
              Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
              (Albert Einstein)

              Kommentar


              • #8
                das heißt aber

                PHP-Code:
                $templet = new templet(); 
                PS: templet wird Template geschrieben
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  Hehe...stimmt
                  Zu meiner Entlastung muss ich sagen das ich das Script in der tiefen Nacht geschrieben hab und das einzigste was mich wach gehalten hat war der Kaffee

                  Aber da liegt der Fehler leider nicht, ich hab wirklich keine Ahung woran das liegen kann. Das einzigste was sich ändert ist der Wert der Variable sonst ist der gesamte Ablauf sogar das gesamte Script gleich!
                  Zuletzt geändert von Samson2k; 18.11.2003, 21:47.
                  Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                  (Albert Einstein)

                  Kommentar


                  • #10
                    welcher Wert welcher Variable ändert sich ?
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      Wie schon oben gesagt nur $out ändert sich damit soll erreicht werden (wenn das alles mal fertig is) das eine andere Datei ausgegeben wird wenn jemand das Formular abschickt.
                      Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                      (Albert Einstein)

                      Kommentar


                      • #12
                        und $_POST['command'] == 'send' ?????
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          Das is nur ein Entwurft!!
                          Natürlich änder ich das noch aber wenns nich mal mit der einfachen Abfrage geht warum soll ich dann schon alles überprüfen was ich später überprüfen will?!?

                          Es ist vollkommen egal wie die Abfrage aufgebaut is, sie wird nur true wenn jemand das Formular abschickt (is n hidden-input drinne um evtl. spam-scripts nich zu einfach zu machen).

                          Und natürlich ändert sich das Array...aber das hat doch keine Einfluss auf das restliche Script. Ich rufe im gesamten Code niemals $_POST ab, ausser in der Datei die zur Zeit Ärger macht
                          Welch triste Epoche, in der es leichter ist, ein Atom zu zertrümmern als ein Vorurteil!
                          (Albert Einstein)

                          Kommentar


                          • #14
                            $templet = new templet;
                            da ja alles keinen einfluss hat werden wir jetzt gemeinsam um die glaskugel sitzen und die sache erörtern...
                            Im übrigen was soll ein hidden feld gegen spam forms tun? dann schick ich einfach das gleiche hidden feld mit ...
                            Beantworte nie Threads mit mehr als 15 followups...
                            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                            Kommentar


                            • #15
                              klasse instanziieren geht auch ohne ()

                              $templete = new templete;

                              das () brauchst du nur, wenn du parameter an den Konstruktor geben willst...

                              du kannst auch prüfen, ob das objekt vorhanden ist und es ansonsten neu instanziieren!

                              if (!is_object($templete))
                              {
                              $templete = new templete;
                              }

                              gruss

                              Kommentar

                              Lädt...
                              X