Verbindung weiterreichen in einer Klasse

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

  • Verbindung weiterreichen in einer Klasse

    Hallo,

    Ich arbeite derzeit an einem simplen Forum.
    Um die einzelnen Informationen auszulesen, also Threadtitel, letzter Poster etc. habe ich eine Datei erstellt die verschiedene Funktionen beinhaltet die diese Infos abrufen. In der index.php habe ich die Datei included und rufe einfach die Funktionen auf.

    Leider sind es mittlerweile sehr sehr viele Funktionen geworden die verschiedene Daten aus der DB abrufen.

    Jetzt hab ich mir als "PHP-Anfänger" gedacht ich schreib einfach eine Klasse und die Funktionen werden dann Methoden der Klasse und alles wird so etwas übersichtlicher.

    Nun zum Problem:
    In der config.inc.php stehen die Zugangsdaten der MySQL DB.
    Diese möchte ich aber nicht in jeder Funktion includen sonder am liebesten in einer Methode aufrufen und an jede anderere MEthode übergeben.

    Die Klasse sieht bis jetzt so aus:
    PHP-Code:
        class tplqueries
        
    {
            function 
    SQLConnection()
            {
                include(
    "config.inc.php");
                
                
    $Host $config["Database"]["Host"];
                
    $Benutzer $config["Database"]["Benutzer"];
                
    $Passwort $config["Database"]["Passwort"];
                
    $Datenbank $config["Database"]["Datenbank"];
            
                
    $Server mysql_connect ($Host$Benutzer$Passwort);
                
                return 
    $Server;    
            }

            function 
    ShowForumtitle($boardid)
            {            
                
    $SQL "SELECT title FROM forum WHERE boardid = '$boardid'";
                
    $Forenausgabe mysql_db_query($Datenbank$SQL$this->SQLConnection());
                
    $forumtitle mysql_result($Forenausgabe0);
                return 
    $forumtitle;
            }
        } 
    Die Methode aufrufen tuhe ich wie folgt:
    PHP-Code:
            require_once("include/class_tplqueries.php");

        
    $class = new tplqueries();
        
        
    $boardid 1;
        
    $forumtitle $class->ShowForumtitle($boardid); 
    Leider funktioniert das so nicht und ich weiss nicht mehr weiter

    Bin dankbar für jede Hilfe
    Zuletzt geändert von phpdeveloper; 26.05.2007, 20:54.

  • #2
    Re: Verbindung weiterreichen in einer Klasse

    "Funktioniert nicht" war noch nie eine Problembeschreibung, sondern schon immer Bullshit.


    Wieso sehe ich dich eigentlich kein mysql_error nutzen?
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      Ok sry, hätte ich natürlich angeben müssen hab vorhin nicht dran gedacht

      PHP-Code:
      function ShowForumtitle($boardid)
              {            
                  
      $SQL "SELECT title FROM forum WHERE boardid = '$boardid'";
                  if (
      $Forenausgabe mysql_db_query($Datenbank$SQL$this->SQLConnection()))
                  {
                      
      $forumtitle mysql_result($Forenausgabe0);
                      return 
      $forumtitle;
                  }
                  else
                  {
                      echo 
      mysql_errno() . ": " mysql_error() . "\n";
                  }
              }
          } 
      Gibt folgende Fehlermeldung aus:
      1046: No database selected

      Kommentar


      • #4
        Original geschrieben von phpdeveloper

        Gibt folgende Fehlermeldung aus:
        1046: No database selected
        eindeutiger kann die Meldung nicht sein! Schon mal über den Unterschied von lokalen und globalen Variable nachgedacht?
        Zuletzt geändert von asp2php; 26.05.2007, 21:06.

        Kommentar


        • #5
          Selbst wenn ich die Variable $Server global mache und $Server direkt einsetze statt $this->SQLConnection geht es nicht.
          Auch wenn ich mysql_querry verwende und keinen Datenbanknamen angebe funzt es nicht.

          Kommentar


          • #6
            was sagt die Fehlermeldung aus? Was würdest du bei der Zeiile

            if ($Forenausgabe = mysql_db_query($Datenbank, $SQL, $this->SQLConnection()))

            in Kombination mit meinem obigen Kommentar vermuten?

            Kommentar


            • #7
              Was de Fehlermeldung besagt ist mir schon klar, er findet anscheinend keine Datenbank.
              Wenn ich global $Datenbank; in die SQLConnection Methode setzte aendert das nix........

              Kommentar


              • #8
                da fehlt mysql_select_db()
                ich glaube

                Kommentar


                • #9
                  also - in diesem Fall ist es doch wohl das einfachste eine der unzähligen mysql-Klassen zu nehmen und an die eigenen Bedürfnisse anzupassen.

                  Kommentar


                  • #10
                    Original geschrieben von phpdeveloper
                    Was de Fehlermeldung besagt ist mir schon klar, er findet anscheinend keine Datenbank.
                    Wenn ich global $Datenbank; in die SQLConnection Methode setzte aendert das nix........
                    warum in die SQLConnection Methode, wenn du mysql_db_query nimmst

                    Außerdem eine Klasse, die von externen Variablen abhängig ist ... hm, bist du sicher, dass das sinnvoll ist?

                    Kommentar


                    • #11
                      Original geschrieben von ministry
                      da fehlt mysql_select_db()
                      nicht, wenn man mysql_db_query nimmt

                      Kommentar


                      • #12
                        Original geschrieben von asp2php
                        nicht, wenn man mysql_db_query nimmt
                        Hast ja Recht, aber vielleicht sollte man das dann einfach mal nicht machen, um den Fehler einzugrenzen...
                        ich glaube

                        Kommentar


                        • #13
                          Original geschrieben von asp2php
                          warum in die SQLConnection Methode, wenn du mysql_db_query nimmst

                          Außerdem eine Klasse, die von externen Variablen abhängig ist ... hm, bist du sicher, dass das sinnvoll ist?
                          EDIT: Wie kann ich denn nun die Variable $Datenbank von der Methode SQLConnection an die anderen übergeben? Bin da noch immer nicht hinter

                          Hmmm... eigentlich moechte ich nur nicht in jeder Methode die config.inc.php includen und die Zugansdaten der DB angeben.
                          Deswegen hab ich gedacht das laesst sich in einer anderen Methode erledigen und die Verbindungsdaten lassen sich an die anderen Methoden weitergeben.

                          Und nein sicher bin ich mir nicht ob das so wirklich sinnvoll ist
                          Ist es denn ueblich das sich in einer Datei nur Funktionen befinden die dann in einem anderen Script aufgerufen werden ?
                          Zuletzt geändert von phpdeveloper; 26.05.2007, 23:18.

                          Kommentar


                          • #14
                            Ist es denn ueblich das sich in einer Datei nur Funktionen befinden die dann in einem anderen Script aufgerufen werden ?
                            Ja.

                            Informiere dich über OOP Konzepte, Klasseninterne Variablen und __construct. Ach und ein paar Grundlagen.
                            Die Regeln | rtfm | register_globals | strings | SQL-Injections | [COLOR=silver][[/COLOR][COLOR=royalblue]–[/COLOR][COLOR=silver]][/COLOR]

                            Kommentar


                            • #15
                              Stichwort: singleton pattern

                              Kommentar

                              Lädt...
                              X