Ankündigung

Einklappen
Keine Ankündigung bisher.

Globale Variabeln in Funktionen

Einklappen

Neue Werbung 2019

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

  • Globale Variabeln in Funktionen

    Hallo Miteinander,

    ahbe gerade mal das Forum abgesucht konnte aber zu meinem Problem keine passende Antwort finden. Es geht dabei um folgendes:

    Ich habe mir ein PHP-Skript erstellt. In diesem werden zwei Funktionen definiert. Die erste 'db_connect' dient dazu eine Verbindung zu meiner DB zu erstellen. Die zweite 'db_close' um die Verbindung wieder zu schließen - man soll ja immer sauber arbeiten :wink:

    Nun kenne ich mich mit PHP nicht so sehr aus, und mir stellt sich die Frage, bevor ich in beiden Funktionen Variabeln deklariere könnte ich das in der Datei doch auch global machen, so dass diese Variabeln für beide Funktionen gelten - ist sowas möglich?

    Ich frage das auch aus dem Grund, weil ich mir so auch einige Zeilen an Quelltext sparen kann, der sonst doppelt im gleichen Skript vorkommt.

    Vielen Dank mal im Voraus an alle, die mir da etwas weiterhelfen können und Ihre Erfahrung mitteilen. Wie gesagt, mit PHP hatte ich bis jetzt noch nicht so viel am Hut

    Danke, finerip


    P.S.: Um diesen Quelltext handelt es sich:

    PHP-Code:
    // Verbindung zum Datenbankserver öffnen
    function db_connect()
    {
     
    $db_server="";    // Hostname
     
    $db_user="";    // Benutzername
     
    $db_key="";    // Passwort
     
    $dbname="";    // Datenbankname

     // Datenbankhandle
     
    $dbh = @mysql_connect("$db_server""$db_user""$db_key") or die ("Verbindung mit '$dbserver' z.Zt. nicht moeglich".mysql_error());

     
    // Datenbank auswaehlen
     
    $selectDB = @mysql_select_db($dbname$dbh) or die("Konnte die Datenbank [b]$dbname[/b] nicht auswählen!");

     
    // Datenbankhandle zurueckgeben
     
    return $db;
    }

    // Verbindung zum Datenbankserver schließen
    function db_close()
    {
      
    // HIER JETZT WIEDER DIE GLEICHEN VARIABELN !!!
     
    $db_server="";    // Hostname    
     
    $db_user="";    // Benutzername
     
    $db_key="";        // Passwort
     
    $dblink_id = @mysql_connect($db_server,$db_user,$db_key);
     
    mysql_close($dblink_id);

    Gefundene Schreibfehler dürfen gerne behalten werden

  • #2
    "global" hilft dir vielleicht:

    Code:
    $variable = "Hallo, Welt!";
    
    function foo()
    {
        global $variable;
    
        echo $variable;
    }
    Solltest du aber vermeiden. Ruf die Funktion lieber mit einem Parameter auf:

    Code:
    function foo($variable)
    {
        echo $variable;
    }
    
    // Anwenden:
    
    foo("Hallo, Welt!");
    Übrigens ist es völliger Blödsinn, die Verbindung zu öffnen, um sie zu schließen, siehe deine close-Funktion.

    Kommentar


    • #3
      PHP-Code:
      <?php
      function db_connect($host "localhost"$user "root"$pw ""$db "meinedb")
      {
        
      $link mysql_connect($host$user$pw);
        if (
      $link)
          
      mysql_select_db($db$link);
        return 
      $link;
      }

      function 
      db_close($link)
      {
        
      // eigentlich unnötig, da =~ mysql_close();
        
      return mysql_close($link);
      }

      $myConnection1 db_connect();
      $myConnection2 db_connect("anderer.serv.er");
      db_close($myConnection1);
      db_close($myConnection2);
      ?>
      Oder du löst das mit einer Klasse.


      Edit: Achherrje nen Pfälzer, naja ich hätts wissen müssen

      Kommentar


      • #4
        genau dafür gibt es klassen
        PHP-Code:
        <?php

        class mysql {
                private 
        $db_server="";    // Hostname
                
        private $db_user="";    // Benutzername
                
        private $db_key="";    // Passwort
                
        private $dbname="";    // Datenbankname
                
        private $dbh=NULL;
                public 
        $selectDB=NULL;
                
                public function 
        __construct($db_server,$db_user,$db_key,$dbname) {
                        
        $this->db_server $db_server;
                        
        $this->db_user $db_user;
                        
        $this->db_key $db_key;
                        
        $this->dbname $dbname;
                }
                
                public function 
        db_connect()
                {
                        
        $this->dbh = @mysql_connect($this->db_server,$this->db_user,$this->db_key) or die ("Verbindung mit '".$this->db_server."' z.Zt. nicht moeglich".mysql_error());


                        
        $this->selectDB = @mysql_select_db($this->dbname$this->dbh) or die("Konnte die Datenbank [b]".$this->dbname."[/b] nicht ausw&auml;hlen!");


                }


                
        public 
        vfunction __destruct()
                {
                        
        mysql_close($this->dbh);
                }
        }

        ?>
        Die Klasse ist natürlich noch nicht fertig, aber so könnte ein Ansatz aussehen.

        Kommentar

        Lädt...
        X