Wieso erstellt er das Objekt nicht???

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

  • Wieso erstellt er das Objekt nicht???

    Hallo auf meiner index.php seite, instanziere ich ein Objekt der Klasse mysql.
    Diese Referenz moechte ich anschliessend in die Session speichern.

    Wen ich aber gleich anschliessend auf das Objekt in der Session zugreiffen will, funktioniert das nicht.

    Ich hab das Gefuehl, das er die Session Variable nicht anlegen kann, den beim erstellen des Objektes erhalte ich eine Ressource-ID.
    Jedoch geht mir das Objekt anschliessend abhanden resp. die Session Variable hat ein Problem.

    Folgend mein Code in der index.php:
    PHP-Code:
    <?
    // Globale includes
    $_con_file = "inc/cls_MySqlObject.php";
    include_once($_con_file);

    // Start der Session
    if(!session_id()){
    session_start();
    }

    // Objekt darf nur jeweils am Anfang der Session erstellt werden
    if(!is_object($ObjectMysql)) {
    $objMysql = new mysql();
    echo $objMysql->_con;
    $_SESSION['ObjectMysql'] = $objMysql;
    }
    else
    {
    echo $ObjectMysql->_con;
    }
    ?>

    Zum sichersein geb ich auch gleich die Klassen definition mit:
    <?
    class mysql
    {
    // Eigenschaften der Klasse
    /*private*/ var $_host = ""; // Host der Datenbank
    /*private*/ var $_user = ""; // Benutzername für die Datenbank
    /*private*/ var $_password = ""; // Passwort für die Datenbank
    /*private*/ var $_database = ""; // Datenbankname

    // Statische Variable welche die Resource ID enthält
    /*private*/ var $_con = 0;

    function Con2DB()
    {
    // Stellt die Verbindung zur Datenbank her
    $connection = @mysql_connect($this->_host,$this->_user,$this->_password);
    if(!$connection){
    echo "Die Verbindung zur Datenbank konnte nicht hergestellt werden!

    ";
    echo "Fehlernummer:
    ".mysql_errno()."
    ";
    echo "Fehler:
    ".mysql_error()."

    ";
    }
    $db = @mysql_select_db($this->_database,$connection);
    if(!$db){
    echo "Während der Auswahl der Datenbank ist ein Fehler aufgetreten!

    ";
    echo "Fehlernummer:
    ".mysql_errno()."
    ";
    echo "Fehler:
    ".mysql_error()."

    ";
    }
    $this->_con = $connection;
    }

    function mysql()
    {
    // Konstruktor der Klasse
    $this->_host = "localhost:3306";
    $this->_user = "web4";
    $this->_password = "hdez92";
    $this->_database = "usr_web4_5";
    $this->Con2DB();
    }

    function CloseDB()
    {
    // Schliesst die momentane Datenbankverbindung
    @mysql_close($_con);
    }

    function getHost()
    {
    // Gibt den aktuellen Host zurueck
    return $this->_host;
    }

    function getUser()
    {
    // Gibt den aktuellen Benutzernamen zurueck
    return $this->_user;
    }

    function getPassword()
    {
    // Gibt das aktuelle Passwort zurueck
    return $this->_password;
    }

    function getDatabase()
    {
    // Gibt die aktuelle Datenbank zurueck
    return $this->_database;
    }

    function getCon()
    {
    // Gibt die aktuelle conid zurueck
    return $this->_con;
    }
    }
    ?>
    Sieht jemand vielleicht grad den Fehler?

    Danke schon mal

    EDIT:

    php tags sponsored by morti


    sorry hab nicht dran gedacht...
    Zuletzt geändert von slator; 18.02.2005, 13:08.

  • #2
    omg

    PHP-Code:
    // Objekt darf nur jeweils am Anfang der Session erstellt werden
    if(!is_object($ObjectMysql)) {
    $objMysql = new mysql();
    echo 
    $objMysql->_con;
    $_SESSION['ObjectMysql'] = $objMysql
    jetzt guckt dir das doch mal genaaauuuu an. fällt dir da nicht was auf?
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      Wieso erstellt er das Objekt nicht???

      sorry ich seh den fehler in diesem code stueck echt nicht...

      PHP-Code:
      // Objekt darf nur jeweils am Anfang der Session erstellt werden
      if(!is_object($ObjectMysql)) {
      $objMysql = new mysql();
      echo 
      $objMysql->_con;
      $_SESSION['ObjectMysql'] = $objMysql;

      ist er den soooo offensichtlich???

      Kommentar


      • #4
        mach doch mal nur sooo zum testen
        PHP-Code:
        echo "<pre>";
        print_r($_SESSION);
        echo 
        "</pre>"
        und gucks dir an
        Sunshine CMS
        BannerAdManagement
        Borlabs - because we make IT easier
        Formulargenerator [color=red]Neu![/color]
        Herkunftsstatistik [color=red]Neu![/color]

        Kommentar


        • #5
          Persistente Verbindung??

          Ok folgendes.

          Nach Abarbeitung eines PHP Skripts, werden die vom Skript benötigten Ressourcen wieder frei gegeben. Dadurch ist auch jedesmal meine Ressource_ID flöten gegangen.

          Es gibt zwei Möglichkeiten dieses Problem zu umgehen.

          1: Man öffnet eine persistente Verbindung, dies beinhaltet aber einige , ich nenne es nun mal risiken. Weiter Infos hier PHP Persistente DB Verbindungen

          2: Man passt seine Abfrage wie folgt an:
          PHP-Code:
          // Objekt darf nur jeweils am Anfang der Session erstellt werden
          if(!is_object($ObjectMysql)){
           
          $_SESSION['ObjectMysql'] = new mysql();
          }
          else{
           
          $ObjectMysql->Con2DB();

          dadurch wird zwar bei jedem Seitenaufruf die Funktion Con2DB() aufgerufen, was allerdings Global keine Nachteile hat da auf die Ressource_ID immer via:
          PHP-Code:
          $ObjectMysql->_con
          zugegriffen wird.

          Danke noch mal an Benny-one mein Lieblings Guru
          Zuletzt geändert von slator; 18.02.2005, 14:05.

          Kommentar

          Lädt...
          X