Functions in anderen Functions verwenden

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

  • Functions in anderen Functions verwenden

    Hallo!
    Ich hoffe das Problem wurde noch nicht diskutiert! Über die Suchfunktion habe ich zumindest nichts passendes gefunden! Wußte aber auch nicht so richtig nach was ich da suchen soll.
    Also jetzt aber zu meinem Problem:
    Ich habe in meiner zu erstellenden Datei über "include" die Funktionen für die Datenbankverbindung eingebunden und stelle über diese am Anfang der Datei eine Verbindung zur Datenbank her und am Ende der Datei schliesse ich die Verbindung wieder. Im Hauptteil der Datei möchte ich jetzt über "include" eine Datei mit Funktionen einbauen die auch auf die Datenbank zugreifen können sollen! Leider hänge ich an dieser Stelle! Rufe ich meine Funktion direkt in der Hauptdatei auf, funktioniert das Skript einwandfrei, wenn ich es dann jedoch in die Datei mit den Funktionen einbaue, erhalte ich Fehlermeldungen.
    Was kann ich tun, damit meine Funktionen ebenfalls die Datenbankverbindung nutzen können?
    Danke schon Mal im Voraus!
    Euer MasterG

    P.S. Der Code in der Funktion lautet:
    PHP-Code:
    function test(){
    $sql "SELECT * FROM test_tab WHERE ((test_tab.aktiv = 'j'))";
    $result mysql_db_query($DB$sql);
    $arrRow mysql_fetch_array($result);
    $test=$arrRow["testfeld"];
    mysql_free_result($result);
    return 
    $test;

    Die Datenbankfunktion sieht so aus:
    PHP-Code:
    $DB="****";
    $Server="*******";
    $User="*******";
    $Password="*******";
    $Conn=NULL;

    function 
    conn()
    {
    global 
    $Conn;
    global 
    $Server;
    global 
    $User;
    global 
    $Password;
    global 
    $DB;
    $Conn mysql_connect ($Server$User$Password) or die ("keine Verbindung möglich: " .mysql_error());
    mysql_select_db($DB$Conn);
    };
        
    function 
    disconn()
    {
    global 
    $Conn;
    mysql_close($Conn);
    }; 

  • #2
    wasfür Fehlermeldung ?

    wie sieht die Datei mit include aus ?

    Kommentar


    • #3
      PHP-Code:
      function test(){

       [
      B]global $Conn;[/B

      $sql "SELECT * FROM test_tab WHERE ((test_tab.aktiv = 'j'))";

      $result mysql_db_query($DB$sql);

      $arrRow mysql_fetch_array($result);

      $test=$arrRow["testfeld"];

      mysql_free_result($result);

      return 
      $test;




      An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

      Kommentar


      • #4
        Danke schon Mal für eure Hilfe-Versuche!
        @MaxP0W3R: Auch mit Deinem Vorschlag funktioniert es leider nicht!!

        Und hier mal der Aufbau der Hauptdatei:
        PHP-Code:
        //Datei mit den Datenbankfunktionen
        include ("include/dbconn.inc.php");
        conn();
        //Datei mit der Test-Funktion
        include ("include/funktionen.inc.php");
        echo 
        test();
        disconn(); 
        Die Fehlermeldung lautet so:
        "Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /include/funktionen.inc.php on line 57
        Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /include/funktionen.inc.php on line 59"

        Grüße
        Euer MasterG

        Kommentar


        • #5
          $DB ist unbekannt in der Funktion test(), daher der Fehler.
          Empfehlung: immer or die(mysql_error()); verwenden
          ausserdem mysql_db_select ist unnötigt und auch veraltet. Versuch mal:
          PHP-Code:
          function test(){

          global 
          $Conn;

          $sql "SELECT * FROM test_tab WHERE ((test_tab.aktiv = 'j'))";
          $result mysql_query($sql,$Conn) or die(mysql_error()); 
          $arrRow mysql_fetch_array($result);
          $test=$arrRow["testfeld"];
          mysql_free_result($result);
          return 
          $test;

          Kommentar


          • #6
            $conn bleibt unbekannt, da es aus der funktion nicht rauskommt ...
            PHP-Code:
            function conn()
            {
            //global $Conn;
            global $Server;
            global 
            $User;
            global 
            $Password;
            global 
            $DB;
            $Conn mysql_connect ($Server$User$Password) or die ("keine Verbindung möglich: " .mysql_error());
            mysql_select_db($DB$Conn);
            return 
            $Conn;
            }

            function 
            test(){

            global 
            $Conn;

            $sql "SELECT * FROM test_tab WHERE ((test_tab.aktiv = 'j'))";
            $result mysql_query($sql,$Conn) or die(mysql_error()); 
            $arrRow mysql_fetch_array($result);
            $test=$arrRow["testfeld"];
            mysql_free_result($result);
            return 
            $test;
            }

            $Conn conn();
            echo 
            test(); 
            müsste passen ... obwohl es imho besser wäre gleich
            mit einer class zu arbeiten, dann kann man sich die globalsierungen sparen.
            Kissolino.com

            Kommentar


            • #7
              Original geschrieben von Wurzel
              $conn bleibt unbekannt, da es aus der funktion nicht rauskommt ...

              müsste passen ... obwohl es imho besser wäre gleich
              mit einer class zu arbeiten, dann kann man sich die globalsierungen sparen.
              Jepp, schon wieder Tomaten aufs Auge

              Jaul 'ne class ist ganz gut und in ein dll (unter linux ) packen noch besser

              Kommentar


              • #8
                Original geschrieben von Wurzel
                [...]dann kann man sich die globalsierungen sparen.
                Du bist wohl ein Globalisierungs-Gegner
                hopka.net!

                Kommentar


                • #9
                  Hallo,

                  habe ein ähnliches Problem. Hab auch versucht es so zu machen, wie hier schon beschrieben. Funktioniert aber irgendwie noch nicht ganz
                  PHP-Code:
                  Warningmysql_query(): supplied argument is not a valid MySQL-Link resource in war_calender.php on line 40 
                  Um Zeile 40 steht:
                  PHP-Code:
                  37       global $Conn;
                  38
                  39       $sql 
                  "SELECT * FROM {$config['db']['prefix']}wars";
                  40       $result mysql_query($sql,$Conn) or die(mysql_error());
                  41       $arrRow mysql_fetch_array($result);
                  42
                  43       $gegner
                  =$arrRow["gegner"];
                  44
                  45       mysql_free_result
                  ($result);
                  46       echo"$gegner";
                  47       return $WriteDaydetailLink
                  hier mal die conn();
                  PHP-Code:
                  function conn()
                  {
                  global 
                  $Conn;
                  global 
                  $Server;
                  global 
                  $User;
                  global 
                  $Password;
                  global 
                  $DB;
                  $Conn mysql_connect ($config['db']['host'], $config['db']['user'], $config['db']['password'] ) 
                  or die (
                  "keine Verbindung möglich: " .mysql_error());
                  mysql_select_db($config['db']['database'], $Conn);
                  return 
                  $Conn;

                  }; 
                  Kann mir einer verraten was ich falsch mach da??

                  komm nicht voran

                  danke schonmal...

                  gr... Csab

                  Kommentar


                  • #10
                    ja, und zwar du hast 'ne Menge Variable in der Funktion als global deklariert, aber verwenden tutst du $config, welche in der Funktion total unbekannt ist

                    Kommentar


                    • #11
                      danke für die schnelle antwort.

                      ahso...
                      na ich hab das mal abgeändert, und getestet. selber fehler.
                      ich muss doch sicher noch irgendwo angeben, was für datenbank, user, pw ect. er nehmen soll. oder?

                      Kommentar


                      • #12
                        wie hast du geändert?

                        Kommentar


                        • #13
                          oh sorry.

                          hier:
                          PHP-Code:
                          function conn()
                          {
                          global 
                          $Conn;
                          global 
                          $Server;
                          global 
                          $User;
                          global 
                          $Password;
                          global 
                          $DB;
                          $Conn mysql_connect ($Server$User$Password 
                          or die (
                          "keine Verbindung möglich: " .mysql_error());
                          mysql_select_db($DB$Conn);
                          return 
                          $Conn;

                          }; 

                          Kommentar


                          • #14
                            1. warum alles global, vorallem $Conn, deklarieren, wenn du die Verbindung-Resource doch per return zurück gibst?
                            2. machst noch or die(...) bei mysql_db_select_db rein
                            3. rufst du die Funktion auch mal auf, bevor du die Abfrage sendest?

                            besser:
                            PHP-Code:
                            function conn($Server,$User,$Password,$DB)
                            {
                            $Conn mysql_connect ($Server$User$Password 
                               or die (
                            "keine Verbindung zu $Server möglich: " .mysql_error());
                            mysql_select_db($DB$Conn)
                               or die (
                            "keine Verbindung zu $DB möglich: " .mysql_error());
                            return 
                            $Conn;
                            }; 
                            Zuletzt geändert von asp2php; 25.11.2004, 13:32.

                            Kommentar


                            • #15
                              Wozu überhaupt global?

                              Wenn ihr schon keine Klassen verwenden wollt was hier sehr sinnvoll wäre.....

                              Könntet ihr doch eigentlich in der Test Funktion die Verbindung zur DB Funktion aufrufen.......

                              Sofern die Db Connection Funktion zuerst deklariert wurde wird diese auch in den folgenden Funktionen verfügbar sein.....
                              [color=blue]MfG Payne_of_Death[/color]

                              [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                              [color=red]Merke:[/color]
                              [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                              Murphy`s Importanst LAWS
                              Jede Lösung bringt nur neue Probleme
                              Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                              In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                              Kommentar

                              Lädt...
                              X