[PHP5] Objekt refreshen

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

  • [PHP5] Objekt refreshen

    Hi,

    ich habe eine User-Klasse, die sämtliche Daten des Users zur verfügung stellt.
    Ich erstelle in meiner index.php ein Objekt dieser Klasse. In die index.php werden nun andere seiten includiert, in diesen Seiten möchte ich auf dieses Objekt zugreifen, was auch funktioniert. So nun gibt es ein Methode, die die Daten des Users aktuallisiert. Diese Funktion schreibt die neuen Wert in die DB und ruft dann Initialize auf um die neuen Daten aus der DB auszulesen und die variablen zu füllen. Diese Funktion funktioniert auch, in der Klasse haben die Variablen die neuen Werte wenn ich jetzt jedoch in der index.php auf die Variablen zugreife dann werden noch die alten Werte angezeigt.

    Jemand eine Idee woran das liegen kann?

    Gruß Marcus

  • #2
    an einem fehler in der anwendung?

    sorry, die antwort ist in etwa so präzise, wie die frage.
    ich habe nur annähernd verstanden, was du sagen wolltest.
    vorschlag: reduziere das problem auf das wesentliche und zeige das bißchen code, das das problem deutlich macht.

    Kommentar


    • #3
      Hi,

      das problem ist, ich habe ein objekt füttere es, anhand einer funktion, mit neuen Werten habe aber wenn ich z.b.
      PHP-Code:
      echo UserObjekt->id
      in der index.php schreibe noch die alten Werte stehen.
      wenn ich aber in der Klasse selbst mir die werte ausgeben lassen bereits die neuen Werte habe.

      Hoffe jetzt war es verständlich.

      Marcus

      Kommentar


      • #4
        das problem liegt in deiner anwendung. wo genau - keine ahnung. aber so etwas wie "frische" oder "ältere" attribute eines objektes halte ich für ein märchen.

        genaueres kann dir niemand sagen - keiner kennt deine anwendung.

        Kommentar


        • #5
          falls du glaubst, dass bei den beiden echos unten jeweils '0' rauskommt, muss man dich dann doch enttäuschen.

          beispiel:
          PHP-Code:
          class {
             var 
          $_val 0;
             function 
          inc() {
                
          $this -> _val++;
            }
            function 
          p() {
               return 
          $this -> _val;
            }
          }

          $a = new a();
          echo 
          $a -> p(); // 0
          $a -> inc();
          echo 
          $a -> p(); // 1 

          Kommentar


          • #6
            Häh?

            Wie jetzt?

            Was soll uns dieses Beispiel zeigen?

            Kommentar


            • #7
              Original geschrieben von Schnoop
              Häh?

              Wie jetzt?

              Was soll uns dieses Beispiel zeigen?
              nichts. u.U. glaubt OP, dass sich ausgegebener quellcode von selbst aktualisiert.

              Kommentar


              • #8
                kann es sein, das du innerhalb der includierten Dateien mit einer Kopie deines Objektes arbeitest?
                Schau mal, ob du irgendwo eine Referenz vergessen hast
                TBT

                Die zwei wichtigsten Regeln für eine berufliche Karriere:
                1. Verrate niemals alles was du weißt!


                PHP 2 AllPatrizier II Browsergame

                Kommentar


                • #9
                  Hi sorry das ich mich erst jetzt wieder melde, war übers wochenende ski fahren...


                  So hier mal die Codestellen

                  index.php
                  PHP-Code:
                  $userObject = new userClass(); 

                  Aufruf in der profil.php
                  PHP-Code:
                  $errors $userObject->updateUserInfos$newUserInfos );
                  $userObject->getUserInfoByUserID$id ); 
                  userclass.php
                  PHP-Code:
                  function updateUserInfos$newUserInfos )
                          {
                              
                  $vorname $newUserInfos["vorname"];
                              
                  $nachname $newUserInfos["nachname"];
                              
                  $geb $newUserInfos["geburtsdatum"];
                              
                  $geburtsdatum $this->getTimestampForGeb$geb );
                              
                  $email $newUserInfos["email"];
                              
                  $icq $newUserInfos["icq"];
                              
                  $land $newUserInfos["land"];
                              
                  $home $newUserInfos["home"];
                              if(
                  $newUserInfos["password"] == "")
                                  
                  $password $this->password;
                              else
                                  
                  $password md5$newUserInfos["password"] );
                              
                              
                  $sqlString="UPDATE fly_user SET vorname='".$vorname."',nachname='".$nachname."',
                  geburtsdatum="
                  .$geburtsdatum.",
                               email='"
                  .$email."',icq='".$icq."',land=".$land.",
                  home="
                  .$home.",password='".$password."' WHERE id=".$this->id."";
                               
                               
                  //echo $sqlString;
                              
                              
                  if( $this->dataBaseObject->sendSql$sqlString ) )
                                  
                  $return "Userdaten erfolgreich geändert!";
                              else
                                  
                  $return "Es ist ein interner Fehler aufgetreten, bitte wenden Sie sich an den Admin";
                                  
                              return 
                  $return;
                          } 
                  PHP-Code:
                  function initializeUser$userArray )
                  {
                              
                  $this->id $userArray['id'];
                              
                  $this->session $userArray['session'];
                              
                  $this->lastlogin $userArray['lastlogin'];
                              
                  $this->vorname $userArray['vorname'];
                              
                  $this->nachname $userArray['nachname'];
                              
                  $this->land $userArray['land'];
                              
                  $this->home $userArray['home'];
                              
                  $this->email $userArray['email'];
                              
                  $this->icq $userArray['icq'];
                              
                  $this->geburtsdatum $userArray['geburtsdatum'];
                              
                  $this->active $userArray['active'];
                              
                  $this->password $userArray['password'];

                  Hoffe das ich alles habe, falls nicht einfach melden!
                  Ich konnte nicht entdecken, dass ich eine Kopie des Objektes habe...

                  Gruß Marcus
                  Zuletzt geändert von Toast; 21.03.2006, 17:23.

                  Kommentar


                  • #10
                    es bleibt dabei - die anwendung ist zu umfangreich, um den fehler direkt zu erkennen. reduziere das problem auf das wesentliche und poste nur _kurze_ und _einfache_ code-stücke, aus denen das problem nachvollziehbar wird. dein kram aus deiner konkreten anwendung (übrigens, brich den code um!) ist aussagelos.

                    Kommentar


                    • #11
                      Hi,

                      jetzt mal auf diese art und weiße

                      Z.B.

                      PHP-Code:
                      class {
                         var 
                      varA// neuer Wert
                         
                      function a$wert )
                        {
                            
                      $this->varA $wert;
                        }

                         function 
                      updateFunktion$wert )
                        {
                            
                      $this->varA $wert;
                        }
                      }

                      $objekt = new a);
                      $objekt->updateFunktion);
                      echo 
                      $objekt->varA // alter Wert also 1 

                      Kommentar


                      • #12
                        nein, der code müsste eine "2" ausgeben.
                        dein beispiel spiegelt das problem nicht wieder.

                        Kommentar


                        • #13
                          genau müsste tut es aber in meinem kontext eben nicht.
                          Das Beispiel spiegelt mein Problem schon bis auf den Unterschied das die werte nicht übergeben werden sondern aus der DB kommen.

                          Kommentar


                          • #14
                            dann liegt das problem woanders.
                            mehr kann ich dir nicht sagen.

                            viel erfolg beim debuggen.

                            Kommentar


                            • #15
                              Btw ist dein code fehlerhaft. Deine variable varA ist keine. Es fehlt das $. Das ist schlecht für ein minimalbeispiel.

                              Ansonsten hört sich das ganze für mich ohnehin nach einem verschleppten und versteckten (error_reporting nicht E_ALL) typo an.

                              Wenn es nicht schon so ist, stell dein error_reporting hoch und passe ggf. display_errors an.
                              Und dann schau ob du was neues siehst.

                              greets
                              (((call/cc call/cc) (lambda (x) x)) "Scheme just rocks! and Ruby is magic!")

                              Kommentar

                              Lädt...
                              X