Ankündigung

Einklappen
Keine Ankündigung bisher.

include und folder problem

Einklappen

Neue Werbung 2019

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

  • include und folder problem

    Hi

    Ich hab für den Datenbankzugriff ein db.php erstellt welches miitels require_once auf ein config.php zugreifft in welchem die Variabeln für den Datenbankzugriff definiert sind.
    Im db.php wird daraus ein PDO Objekt erstellt.

    Nun include ich db.php in verschiedenen Dateien welche in verschiednen Ordner abgelegt sind. Das db.php und config.php befindet sich im Ordner includes. Ein Ordner über diesem Ordner kann ich problemlos mittels include(db.php) arbeite. 2 Ordner über dem Ordner includes, bekomme ich die Fehlermeldung dass die Variablen für die Datenbank nicht definiert sind.
    Wenn ich die Variablen im db.php definiere funkioniert ist, will aber mit config.php arbeiten.

    Weiss jemand was ich falsch mache?

  • #2
    Benutzt Du überall require bzw. require_once oder ist auch mal ein include dabei?

    Kommentar


    • #3
      im db.php benutze ich require_once(config.php).
      Ansonsten benutze ich include(db.php) in den dateien welche Datenbankzugriff brauchen.

      Hab grad herausgefunden dass das Problem nicht an den Ordner liegt sondern an einer Funktion.
      Ich benutze eine Funktion in der php datei. Am Anfang der Datei mache ich ein include("test/includes/db.php").
      In der Funktion ist dann aber das PDO Objekt nicht vorhanden. Ich musste in der Funktion noch ein include(db.php) machen damit es funktionerte. Damit es auch die Variabeln für die Datenbank erkannt werden musste eich noch ein include(config.php) in der Funktion gemacht werden damit es funktioniert.

      Warum kann ich in der Funktion nicht auf das PDO Objekt zugreiffen wenn dieses vor der Funktion mit requir_once eingebunden wurde?

      Kommentar


      • #4
        Dann versuche es bitte mal mit require.
        Ohne Datenbank sind die Teile der Applikation, die Datenbankzugriff benötigen, nutzlos, oder? Daher bietet sich require eh an.

        Du greifst per require_once auf die config.php zu. Von wo aus genau? Zum Beispiel aus einer Funktion heraus? Die Frage zielt darauf ab: Werden die Werte vielleicht von PHP entfernt, weil der Gültigkeitsbereich der Variablen verlassen wird?

        Kommentar


        • #5
          Auch ein Include Problem

          Ich rufe eine Seite aus der Navigation mit:

          Code:
          include.php?path=test/index.php
          auf, das funktioniert.

          Wenn ich aber bei der aufgerufenen Seite:

          Eine Abfrage aufrufe die mich dann entweder bei einer negativen eingabe zurück zur index.php bringt, oder bei einer postiven eingabe auf die Seite welcome.php weiterleitet, werde ich auf die Startseite des Boards geleitet.

          Das ist die Weiterleitung:

          Code:
          $goto = 'include.php?path=test/welcome.php';
          Wenn ich aber die Seite so aufrufe:

          Code:
          http://www.beispiel.de/test/mvucup/index.php
          dann funktioniert alles prima, nur dass sie nicht per incude in mein Board eigefügt werden, was ja ganz normal ohne include ist. IFrames möchte ich nicht benutzen...

          Beide Dateien, die index.php und welcome.php liegen im selben Verzeichnis (test)

          Kommentar


          • #6
            Code:
            http://www.beispiel.de/beispiel/include.php?path=test/index.php
            +

            PHP-Code:
            include('test/index.php'); 
            =

            Code:
            http://www.beispiel.de/beispiel/test/index.php
            -> Der relative Pfad ist ungültig. Mit ../test/index.php sollte es gehen.
            "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

            Kommentar


            • #7
              Klappt immer noch nicht.

              Code:
              http://www.wilas-support.de/mvu/include.php?path=test/index.php
              Hier der Link von der Navigation und die Seite wird im Board (Mitte) aufgerufen. (perfekt)


              Hier noch einmal die goto Anweisung als Weiterleitung in der welcome.php

              Code:
              $goto = 'include.php?path=../test/welcome.php';
              Habe es jetzt mal so geändert, und wie gesagt beide Dateien (index.php & welcome.php) liegen im selben Verzeichnis Test

              Kommentar


              • #8
                Zitat von Spartakus Beitrag anzeigen
                Klappt immer noch nicht.

                Code:
                http://www.wilas-support.de/mvu/include.php?path=test/index.php
                Hier der Link von der Navigation und die Seite wird im Board (Mitte) aufgerufen. (perfekt)


                Hier noch einmal die goto Anweisung als Weiterleitung in der welcome.php

                Code:
                $goto = 'include.php?path=../test/welcome.php';
                Habe es jetzt mal so geändert, und wie gesagt beide Dateien (index.php & welcome.php) liegen im selben Verzeichnis Test
                Was wird denn mit dem $goto? gemacht?
                "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                Kommentar


                • #9
                  Zitat von Dark Guardian Beitrag anzeigen
                  Was wird denn mit dem $goto? gemacht?
                  Die index.php ist eine Alterabfrage und bei positiven Ergebnis wird man dann hiermit auf die welcome.php weitergeleitet.

                  Code:
                  $goto = 'include.php?path=test/welcome.php';
                  Hier die if Abfrage dazu:

                  Code:
                  if ($seterror == 0) header('Location: '.$goto); // Weiterleitung bei bestander Prüfung
                      elseif ($seterror == 1) $error = '<br /><b>Das ausgewählte Datum ist nicht korrekt<b/>'; // Fehler bei Datumsauswahl
                      elseif ($seterror == 2) $error = '<br /><b>Zugang verwehrt - du bist zu jung!<b/>'; // Besucher ist zu Jung

                  Kommentar


                  • #10
                    Code:
                    header('Location: '.$goto);
                    Das hatte ich mir gedacht.

                    PHP: header - Manual

                    Bei dir kommt raus:

                    PHP-Code:
                    $goto 'include.php?path=test/welcome.php';
                    header('Location: '.$goto); 
                    Im Manuel steht das du einen absoluten Pfad angeben musst:
                    PHP-Code:
                    $goto 'include.php?path=test/welcome.php';
                    header('Location: http://www.beispiel.de/includefolder/'.$goto); 
                    Du sendest damit einen HTTP Header an den Browser. Wie soll ein Browser einen relativen Pfad verarbeiten ohne zu wissen aus welchem Context dieser stammt?
                    "Alles im Universum funktioniert, wenn du nur weißt wie du es anwenden musst".

                    Kommentar


                    • #11
                      Habe auch unter den Link nachgesehen und alles wie beschrieben geändert, aber leider ohne Ergebnis...

                      Code:
                      $goto = 'include.php?path=test/welcome.php';

                      Code:
                      if ($seterror == 0) header('Location: http://www.beispiel.de/includefolder/'.$goto); // Weiterleitung bei bestander Prüfung
                          elseif ($seterror == 1) $error = '<br /><b>Das ausgewählte Datum ist nicht korrekt<b/>'; // Fehler bei Datumsauswahl
                          elseif ($seterror == 2) $error = '<br /><b>Zugang verwehrt - du bist zu jung!<b/>'; // Besucher ist zu Jung
                      Natürlich habe ich den Namen /includefolder/ durch den richtigen Namen ersetzt.

                      Also mein Aufruf für die URL wäre also:
                      Code:
                      http://www.beispiel.de/includefolder/
                      Dort liegt die include.php

                      Kommentar


                      • #12
                        @ Dark Guardian habe es hinbekommen, zwar nicht so wie Du es mir erklären wolltest, aber es läuft.

                        Trotzdem Danke für Deine Bemühungen.

                        Sparta

                        Kommentar

                        Lädt...
                        X