Sinnvoll Mehrdimensionale Arrays....



  • Hallo,

    ich müsste unter wxWdigets eine MySQL-Struktur in einer Klasse speichern. Unter PHP hätte ich das folgt gemacht:

    $stru=array();
    $stru["session"]=array();
    $stru["session"]["ident"]=array("type"=>"bigint","autoincrement"=>true,"primary"=>true,"unsigned"=>true);
    $stru["session"]["code"]=array("type"=>"varchar(25)","index"=>true);
    $stru["sessionvars"]=array();
    $stru["sessionvars"]["ident"]=array("type"=>"bigint","autoincrement"=>true,"primary"=>true,"unsigned"=>true);
    $stru["sessionvars"]["zusession"]=array("type"=>"bigint","unsigned"=>true);
    $stru["sessionvars"]["varname"]=array("type"=>"varchar(25)","index"=>true);
    $stru["sessionvars"]["value"]=array("type"=>"varchar(25)");
    

    Bitte haltet euch nicht am Sinn und Unsinn der Datenbankstruktur auf die dabei raus kommt, die ist gerade frei erfunden um ein Beispiel zu haben. Im Prinzip muss ich in meiner Klasse dynamisch auf eine oder mehrere Tabellen zugreifen können. Die eigentliche Frage ist:

    Wie kann ich so eine Mehrdimensionale-Array-Struktur sinnvoll unter wxWidgets an eine Klasse übergeben um diese an verschiedenen Stellen in der Klasse abzuarbeiten?

    Danke schon mal,
    Stefan


  • Mod

    C++ ist da etwas anders als PHP.

    Du müsstest dir evtl zwei maps erstellen, für session und sessionvar.
    Also z.b. std::map<wxString,wxVariant>.

    Generell müsstest du evtl. etwas genauer beschreiben, was du genau machen willst.

    phlox



  • Für sowas gibt es in C++ Strukturen und Klassen. Wenn du diese Sprachmittel noch nicht kennst, dann lass erstmal die Finger von wxWidgets.

    phlox81 schrieb:

    Du müsstest dir evtl zwei maps erstellen, für session und sessionvar.
    Also z.b. std::map<wxString,wxVariant>.

    Das wäre so, also wollte man in C++, wie in PHP Programmieren. Ist durchaus möglich, aber nicht unbedingt nötig/sinnvoll.



  • Mir ist durchaus klar, dass C++ total anders ist als PHP. Ich wusste nur nicht wie ich das Beispiel beschreiben soll. Ich kenne auch Klassen und Strukturen. UndwxWidgets klappt bei mir schon recht gut.
    Ich versuche es nochmal anders zu erklären.

    Ich habe eine Datenbankklasse geschrieben. Diese Klasse soll dynamisch aus einer Datenbank eine Struktur von einer MySQL-Datenbank prüfen.
    Meine Klasse Session beinhaltet jetzt, dass es eine Tabelle "Session" gibt und eine weitere Tabelle "SessionVars". Innerhalb dieser Tabellen gibt es ja die Felder und diese haben weitere Definitionen, z.B: varchar(55).

    Jetzt will ich auch der class Session diese Struktur an die Datenbanktabelle übergeben, damit diese prüft ob alle MySQL-Felder richtig angelegt sind.
    Wäre es jetzt fest, würde ich das über mehrere Funktionsaufrufe machen.

    Das Prinzip hätte ich gerne für mehrere Klassen benutzt. Z.B. in der Klasse "Benutzerverwaltung" stehen andere Felder fest als in der Klasse "Session" oder in der Klasse "Punktestand" usw.

    Wie bekomme ich als "Sinnvoll" die Strukturdaten aus "Session", "Benutzerveraltung" oder "Punkte" in die Klasse "Datenbank", damit diese die Felder der MySQL-Datenbank prüfen kann.

    Ich bräuchte das deswegen dynamisch, weil ich dem Anwender die Möglichkeit geben möchte, z.B. in der Benutzerverwaltung verschiedene Zusatzfelder zu definieren, die von vorne herein noch nicht feststehen, sondern auch in der Datenbank in einer Tabelle stehen. Somit würde ich auch gerne die Speicherung der Datenbankstruktur dazu benutzen dies an andere Klassen zu übergeben, damit z.B. meine Klasse für die Bildschirmausgabe auch alls Felder weiß, die es gibt.

    Also mein Problem ist es, eine dynamische Struktur zu erstellen, die ich an alle Klassen weiterreichen kann, damit diese wissen, welche Felder ich habe und abarbeiten muss.

    Ich hoffe das Problem ist jetzt besser deutlich geworden.

    Danke,
    Stefan



  • Du solltest einen anderen Ansatz als dies wählen.

    So wie ich es verstehe, versuchst du eine Tabellenstruktur als Klasse abzubilden.
    Wenn du die Struktur aber nur abbildest, ist die Tabelle letzten endes egal:

    class DatenFeld
    {
      wxString name, type;
      bool autoincrement, primary, isunsigned;
    // setter + getter + construktoren etc.
    }
    // wo anders
    std::vector<DatenFeld> tabelle;
    

Anmelden zum Antworten