carsten schlichting: notice: undefined variable

hallo habe mal eine Frage.

und zwar habe ich einmal eine index.php, in der ich alle variablen definiert habe und einmal eine include.php, die verschiedene codes in die index.php hereinholt. dabei werden in diesen codes variablen benutzt , die in der index.php definiert sind, aber nicht in der include.php. hier erscheint dann obige fehlermeldung

muß ich jetzt auch in der include.php die index.php mit include() einbinden.??

Wie drücke ich denn hier den Pfad aus, weil die include.php in einem include-Ordner abgelegt ist.

include_once('../index.php')???

so funktioniert es aber nicht??

kann mir jemand ganz formlos helfen??

grüße von mir

carsten

  1. Hello Carsten,

    der Fehler muss woanders liegen.
    So wie Du den Fall schilderst, kannst Du nur vergessen haben, die Variable _rechtzeitig_ zu instaziieren.

    PHP kennt im Normalbetrieb nur eine Scriptinstanz pro Request.
    Dieses Hauptscript heißt bei Dir 'index.php'
    In dieser Instanz werden nun Variablen deklariert/initialisiert und damit auch eine Instanz davon erstellt. Auch die zugeladenen Dateien erscheinen gegenüber dem Interpreter im "Arbeitslauf" so, als wären sie in der index.php enthalten.

    Überprüfe also genau, wann Du Variablen initialisierst (das sollte immer am Anfang des Scriptes geschen, oder bei Funktionen ganz am Anfang der Funktion)

    Harzliche Grüße vom Berg
    esst mehr http://www.harte-harzer.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
    1. jetzt habe ich der variable sogar anstatt"" einen richtigen wert zugewiesen. Z. B. 3... erscheint bei der ausgabe der SESSION. trotzdem kommt die Fehlermeldung notice: in der der include.PHP on line... ist diese Variable... nicht definiert,

      in der include steht genau folgendes

      echo"blabla" . $Variable . "blabla";

      Für diese Variable kommt jetzt die Fehlermeldung. bisher habe ich das immer so gelöst, dass ich den Ausdruck in 2 teile getrennt habe und die Variable in der index.php eingefügt habe.

      grüße von mir

      carsten

      1. Hello,

        jetzt habe ich der variable sogar anstatt"" einen richtigen wert zugewiesen. Z. B. 3... erscheint bei der ausgabe der SESSION. trotzdem kommt die Fehlermeldung notice: in der der include.PHP on line... ist diese Variable... nicht definiert,

        Zeigen! Welche Zeile im Script?

        in der include

        Welche Zeile im Script wird die Datei includiert?

        steht genau folgendes

        echo"blabla" . $Variable . "blabla";

        Harzliche Grüße vom Berg
        esst mehr http://www.harte-harzer.de

        Tom

        --
        Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
        Nur selber lernen macht schlau
        1. Zeigen! Welche Zeile im Script?

          hab leider noch kein Webspace . es ist genau die zeile in der include.php, in der die Variable steht.

          In der Fehlermeldung wird die include.php erwähnt, nicht die index.php. Der fehler muß in dem augenblich auftreten, in dem die include. php eingelesen wird.

          kann das eventuell auch noch am folgendem liegen: möchte in einem iFrame in meiner Seite den osCommerce-Shop einbinden. Und dort gibt es eine sogenannte external session, die ich auch mit einem includebefehl eingefügt habe. aber ich habs gerade ausprobiert, das ändert auch nichts und ich denke auch, dass ich diese external session auch nur in meine index.php einfügen muß.

          Hm woran könnte das nur liegen?

          carsten

          1. Hello,

            Zeigen! Welche Zeile im Script?

            hab leider noch kein Webspace . es ist genau die zeile in der include.php, in der die Variable steht.

            Das ist am Anfang auch gut so. Kein Webspace ist besserer Schutzt als kein Webspace...

            Du kannst aber die relevanten Zeilen des Scriptes hier posten, aber bitte mit vorangestellten Zeilennummern.

            Harzliche Grüße vom Berg
            esst mehr http://www.harte-harzer.de

            Tom

            --
            Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
            Nur selber lernen macht schlau
            1. Du kannst aber die relevanten Zeilen des Scriptes hier posten, aber bitte mit vorangestellten Zeilennummern.

              also wie gesagt dort steht in der zeile der include.php, zu der die Notice!_meldung auftritt ungefähr

              echo"blabla" . $Variable . "blabla";

              $ Variable ist angeblich nicht definiert.

              blablabla ist html code . anführungszeichen haben ich dort so: " geschrieben und ohne variable funktioniert auch alles korrekt.

              in der index.php haben ich die variable folgendermaßen definiert.

              if(!isset$_SESSION['varible2'])$_SESSION['variable2'] ="rt";

              $Variable=$_SESSION['variableb'];
              echo $variable;--zum Testen
              und am Ende des scripts

              $_SESSION['variable2']=$Variable;

              ich habe die sesion ausgedruckt, dort erscheint die Variable $_SESSION['variable2'] und $variable wird auch ausgegeben.

              Hm??

              carsten

              1. echo"blabla" . $Variable . "blabla";

                sorry in der include steht genau

                $htmlcode ="blabla" . $Variable . "blabla";

                $htmlcode wird natürlich nicht immer in der index.php ausgegeben. auch wenn es nicht ausgegeben wird, erscheint der Fehler.

                grüße carsten

                1. Der fehler liegt dann in dem augenblick, wenn php die include.php einbindet und schaut ob $htmlcode definiert ist. und dann schaut er, ob $variable schon definiert ist und das ist nicht der Fall, weil in der index.php, die include-befehle vor den definitionen stehen-

                  :-) das ist der Fehler!!!

                  super ..aber wenn ich das jetzt nicht gepostet hätte , wäre ich nie draufgekommne.

                  Danke ne und sorry

                  carsten

                  1. Hello,

                    super ..aber wenn ich das jetzt nicht gepostet hätte , wäre ich nie draufgekommne.

                    Bitte..

                    Und auch immer an die Groß-/Kleinschreibung bei Variablen denken. Die sind da empfindlich ;-)

                    Harzliche Grüße vom Berg
                    esst mehr http://www.harte-harzer.de

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
      2. natürlich ist die Initialisierung ganz am anfang.

        das problem tritt auch bei allen variablen auf, die ich so benutze, von daher kann man auch Flüchtigkeitsfehler  ausschließen.

        grüße von mir carsten

        1. Hello,

          natürlich ist die Initialisierung ganz am anfang.

          das problem tritt auch bei allen variablen auf, die ich so benutze, von daher kann man auch Flüchtigkeitsfehler  ausschließen.

          Das kann dann nur noch vorkommen, wenn eine ältere PHP-Version im Einsatz ist, die abgesürzt ist. Sowas gab es aber nur bis 4.0.x  Das habe ich damals selber ein paarmal provoziert.

          Kann ich mir daher nicht vorstellen.
          Du solltest mal die Fakten auf den Tisch legen ;-)

          Harzliche Grüße vom Berg
          esst mehr http://www.harte-harzer.de

          Tom

          --
          Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
          Nur selber lernen macht schlau
          1. Das kann dann nur noch vorkommen, wenn eine ältere PHP-Version im Einsatz ist, die abgesürzt ist. Sowas gab es aber nur bis 4.0.x  Das habe ich damals selber ein paarmal provoziert.

            habe die xampp -Installation und dort läuft PHP4.3.11

            carsten

  2. echo $begrüßung;

    Tom hat es ja schon erwähnt, hier nochmal etwas ausführlicher:

    Wie drücke ich denn hier den Pfad aus, weil die include.php in einem include-Ordner abgelegt ist.

    Includes und die Pfadangaben dorthin gehen immer vom aufgerufenen Script aus.

    Gegeben sei:
      a.php
      x/b.php
      y/z/c.php
      x/d.php

    a.php wird aufgerufen und benötigt b.php und c.php:
      include_once 'x/b.php';
      include_once 'y/z/c.php';

    In b.php, welches von a.php inkludiert wird, ist c.php auch so einzubinden, da immer vom Verzeichnis von a.php aus gesucht wird:
      include_once 'y/z/c.php';

    Wenn d.php aufgerufen würde, dann klappt das includen von b.php nicht, da dieses dann c.php nicht mehr findet. Man könnte das mit absoluten Pfaden umgehen, was aber überhaupt nicht empfehlenswert ist.

    echo "$verabschiedung $name";