Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten in einer Klasse gehen verloren

Einklappen

Neue Werbung 2019

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

  • Daten in einer Klasse gehen verloren

    Hallo Leute ich habe ein merwürdiges Problem. Ich habe innerhalb einer Webanwendung eine Klasse die "loadVehicle()" heisst. In dieser Klasse
    werden ca. 50 Daten aus einer Datenbank in Klassenvariablen geladen.

    Das ganze sieht ungefähr so aus...:

    //eine Besipielklasse
    classe a{

    public a1 = "";
    public a2 = "";
    public a3 = "";
    public a4 = "";
    public a5 = "";

    }


    // eine Methode

    funtcion loadVehicle(){

    $sqlstr = "Select... " // SQL String, der die Werte aus der DB holt

    $rs = $thix->execute_sql($sqlstr)


    While($rs...){


    $this->a1 = $rs->Fields['..']->value;
    $this->a2 = $rs->Fields['..']->value;
    $this->a3 = $rs->Fields['..']->value;
    $this->a4 = $rs->Fields['..']->value;
    $this->a5 = $rs->Fields['..']->value;

    }

    }


    Das ganze funktioniert gut und eigentlich auch einwandfrei. Nur hin und wieder "vergisst" die Methode ein paar Variablen. Ich habe das Gefühl, dass das an der hohen Anzahl an Membervaribalen liegt. Kann das sein?

    Meist werden die Datenfelder, die weiter unten stehen vergessen. Wenn ich die "fehlerhafte" Zuweisung ganz nach oben verschiebe funktioniert das.
    Also z.B.:

    $this->a5 = $rs->Fields['..']->value;
    $this->a1 = $rs->Fields['..']->value;

    So werden alle Variablen geladen!

    Hat irgendwer so ein Problem schon mal gehabt, oder gibt es da Patentrezepte???

    Danke und Gruß,
    Jochen

  • #2
    Zuersteinmal solltest du deine Struktur überdenken. Du hast eine Bezeichnersequenz, also Variable1, Variable2, VariableN. Dafür eignet sich ein Array.

    Wegen des Datenverlusts würd ich in der Schleife mal print_r() auf $rs anwenden und prüfen, ob die Daten auch aus der Datenbank kommen.

    Kommentar


    • #3
      Also das gezignete Beispiel ist wirklich nur ein Beispiel. Es ist eine sehr umfangeiche Klasse mit sehr vielen Membervariablen, Methoden und Vererbungen. Ich denke die Struktur die ich habe ist soweit ganz OK. Die Daten sind definitiv da, das ganze passiert eben nur immer unregelmäßig!

      Jochen

      Kommentar


      • #4
        Zitat von joni1980
        Die Daten sind definitiv da, das ganze passiert eben nur immer unregelmäßig!
        Das ist eigentlich unmöglich und nur als letzte Erklärung anzusehen. Deshalb solltest du wirklich alles debuggen, bevor du zu diesem Schluss kommst. Du könntest uns den relevanten Code-Abschnitt mal posten, aber bitte (!) nicht in php- sondern in code-Tags.

        Kommentar


        • #5
          http://www.lugbz.org/documents/smart...l#dontclaimbug
          Zitat von joni1980
          Also das gezignete Beispiel ist wirklich nur ein Beispiel. Es ist eine sehr umfangeiche Klasse mit sehr vielen Membervariablen, Methoden und Vererbungen. Ich denke die Struktur die ich habe ist soweit ganz OK. Die Daten sind definitiv da, das ganze passiert eben nur immer unregelmäßig!

          Jochen
          Vielleicht zu viele Member, Methoden und Vererbungen? Nicht zuviele für php, aber zuviele für stressfreies Programmieren. Die Klasse KannAllesUndWeissAlles ist zwar weit verbreitet, aber meistens schwer zu überblicken, schlecht wartbar und fehleranfällig.
          Bist Du Dir sicher, dass nicht mehr an die Member delegiert werden kann und dass Deine Generalisierung (loadVehikel->Vehikel?) nicht Bestandteile der Spezialisierungen enthält?

          Kommentar

          Lädt...
          X