Eingebundene Datei nicht in Funktionen verfügbar

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

  • Eingebundene Datei nicht in Funktionen verfügbar

    Anders als der Threadtitel erahnen lässt ist, das Problem etwas komplizierter.

    Ich hab mehrere php Dateien die im grunde nur eine Reihe von Funktionsaufrufen beinhalten welche dann die Seite "zusammenbauen"

    Auf diesen php seiten werden nun verschiedene php Dateien eingebunden. In diesen wird jetzt u.u die gleiche Datei nochmals eingebunden.

    Das Problem ist dann Cannot redeclare.... usw
    Wenn ich jetzt include_once verwende wird die Datei ja nur ein einziges mal eingebunden. Jetzt hab ich aber das Problem das in Funktionen z.B. um MySQL Operationen durchzuführen, die Logindaten nicht mehr kriegen, da ja mittels include_once die Datei ja nicht mehr eingebunden wird.

    die Datenbank Benutzerdaten liegen in einer zentralen Datei für die Einstellungen der Seite.

    Das letzte mal hab ich das Problem mit PHP5 und OOP "gelöst", dummerweise bin ich jetzt an php 4.3 gebunden (und objektorientiert ist da noch net so komfortabel zu entwickeln)

    Datenbankeinstellungen als Parameter übergeben scheidet auch aus, weil ich dann etliche Parameter übergeben müsste

  • #2
    Hallo,

    ein bisschen zweifle ich daran ob deine Struktur sinnvoll ist, kenne sie nur leider ned genau.

    Schau dir mal das hier an:

    http://www.php.net/function_exists

    Sollte dir weiterhelfen

    Gruss
    Quetschi
    Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
    Schön - etwas Geschichte kann ja nicht schaden.
    Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

    Kommentar


    • #3
      Re: Eingebundene Datei nicht in Funktionen verfügbar

      Original geschrieben von st@tic
      Auf diesen php seiten werden nun verschiedene php Dateien eingebunden. In diesen wird jetzt u.u die gleiche Datei nochmals eingebunden.
      du solltest deine struktur überdenken
      Das letzte mal hab ich das Problem mit PHP5 und OOP "gelöst", dummerweise bin ich jetzt an php 4.3 gebunden (und objektorientiert ist da noch net so komfortabel zu entwickeln)
      hö? wie kommst du darauf?
      Kissolino.com

      Kommentar


      • #4
        http://de2.php.net/include_once
        http://de2.php.net/require_once
        chansel0049
        ----------------------------------------------------
        if you've reached the bottomline - dig further!
        Übersetzer gesucht? http://www.babelport.com

        Kommentar


        • #5
          ok vielleicht etwas näher erklärt

          dbcontrol.php
          PHP-Code:
          function Funktion1()
          {
                  require(
          config.inc.php);
                  
          //code
          }
          function 
          Funktion2()
          {
                  require(
          config.inc.php);
                  
          //code
          }
          function 
          Funktion3()
          {
                  require(
          config.inc.php);
                  
          //code

          sobald zwei funktionen in der selben php datei aufgerufen werden gibts den konflikt mit den mehrfach includeten dateien. logisch...
          die einzige möglichkeit die mir einfällt wäre die variablen global zu machen.
          allerdings hab ich damit auch noch schwierigkeiten *schäm*

          die config.php sieht so aus

          global $dbhost;
          global $dbuser
          usw

          $dbhost = localhost;
          $dbuser = root;
          usw

          allerdings wenn ich diese dann am anfang der datei einbinde haben ie funktionen jedoch keinen zugriff auf die variablen.

          Kommentar


          • #6
            hmm,

            ich verstehe das problem auch nicht wirklich ...

            drum bleibt als einziger tip: überdenke deine strukturen und ändere sie so, daß das problem nicht auftritt. alle anderen scheinen es doch auch zu schaffen, so schwer scheint es also nicht zu sein.
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              aha...

              ich hab imo
              darstellende php seiten
              config.phps (wo einfach nur variablen mit werten drin stehen)
              und funktionssammlungen eine php datei für html ausgaben, eine für sql querys auszuführen

              und wie zieht man sinnvoll strukturiert sowas hoch?

              das grundlegende problem ist. ich brauch in funktionen variablen aus der configdatei und die muss ich dementsprechend in der funktion includen sonst kann die funktion ja nicht drauf zugreifen.
              sobald aber zwei funktionen aufgerufen werden gibts den konflikt weil ja beide die selbe datei einbinden wollen.

              und bin sogar zu dämlich um globale variablen anzulegen.
              args. wie soll ich es denn sonst aufbauen?

              Kommentar


              • #8
                hmm,

                am einfachsten wär wohl, .... binde die config-datei am anfang ein, und greif dann über das $GLOBALS-array drauf zu.

                ansonsten bleibt dir noch die möglichkeit, den funktionen parameter zu übergeben, z.b. deine gesamte config als array ...
                Die Zeit hat ihre Kinder längst gefressen

                Kommentar


                • #9
                  Original geschrieben von derHund
                  ansonsten bleibt dir noch die möglichkeit, den funktionen parameter zu übergeben, z.b. deine gesamte config als array ...
                  ... und wenn du da noch objekte drin ablegst und das ganze in eine class ziehst, kannst du auch schön unter php4 "oop -en" ... dann brauchst du den funktionen auch keine unnötigen parameter zu übergeben.
                  Kissolino.com

                  Kommentar


                  • #10
                    ich find oopmit php4 zu unkomfortabel
                    erst ab version 5 find ich es sinnvoll

                    hmm also mitm globals array hab ich es noch net probiert...
                    aber wie genau funktioniert das mit dem schlüsselwort global?
                    nur mal so aus interesse gefragt.
                    Zuletzt geändert von st@tic; 16.07.2005, 06:05.

                    Kommentar


                    • #11
                      http://de2.php.net/manual/de/languag...bles.scope.php

                      Kommentar


                      • #12
                        kenn ich schon.
                        allerdings scheint is in "meiner" variante nicht zu klappen

                        confic.php

                        global $dbhost;
                        global $dbuser usw

                        $dbhost = "localhost";
                        $dbuser = "root";

                        functions.php

                        include config.php;

                        function Funktion1()
                        {
                        mysql_connect($dbhost, $dbuser);
                        }
                        function Funktion2()
                        {
                        mysql_connect($dbhost, $dbuser);
                        }

                        dort sind sie aber nicht sichtbar (sonst würde ja kein fehler kommen cannot connect odbc@localhost using password no blablabla)

                        Kommentar


                        • #13
                          Original geschrieben von st@tic
                          kenn ich schon.
                          allerdings scheint is in "meiner" variante nicht zu klappen
                          Wohl doch nicht. Durch das Scope sind sämtliche Variablen innerhalb der Fkt. NICHT sichtbar. Du musst IN der Fkt. dann mit global arbeiten...!
                          Für alle die Fehler suchen, gibts gratis tolle Debuggingmöglichkeiten:
                          var_dump(), print_r(), debug_backtrace und echo.
                          Außerdem gibt es für unsere Neueinsteiger ein hervorragendes PHP Tutorial zu PHP 4 und PHP 5 (OOP)
                          Es heißt $array['index'] und nicht $array[index]! Und nein, das ist nicht egal!
                          Dieses Thema lesen, um Ärger im Forum und verzögerte Hilfen zu vermeiden.

                          Kommentar

                          Lädt...
                          X