Klasse flexibler gestalten

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

  • Klasse flexibler gestalten

    hi...

    also hier mal ein ausschnitt aus meiner klasse:

    PHP-Code:
    class vote extends db{
    function 
    stimmen($track){
          
    $erg=$this->sql("SELECT count(*) FROM voting WHERE track_id='$track'");
          
    $stimmen_abgegeben=mysql_result($erg,0,'count(*)');
          return 
    $stimmen_abgegeben;
       }

    nun habe ich ja in der klasse ne sql abfrage drin. wenn ich später diese klasse nochmal verwenden will, dann muss ich ja immer aufpassen das ich meine tabellen gleich gestalte, oder ich muss in der klasse ändern.

    habe auch noch 2 andere funktionen wo ich ne sql-abfrage mache.

    gibts denn da ne möglichkeit dieses problem flexibler zu gestalten? so dass ich nicht immer die spaltennamen ändern muss oder gehts es nur so, das ich dann immer schaue, das ich die tabelle gleich aufbaue?

    gruss

  • #2
    wie wärs so ca ?

    PHP-Code:
    class vote extends db{
    function 
    stimmen($track$param = array()){

          
    $sql printf('SELECT count(*) AS count FROM `$1%s` WHERE `$2%s` = "$1%s"'$track,
                isset(
    $param['field']) ? $param['field'] : 'track_id',
                isset(
    $param['table']) ? $param['table'] : 'voting');

          
    $erg $this->sql($sql);
          return 
    mysql_result($erg0'count');

       }

    ähm frage .. wenn du schon ne funktion hast um sql auszuführen, warum packst du dann nciht mysql_result auch in eine funktion ?
    dann könntest du später schneller auf eine anderes dbms umsatteln ..
    so ist irgendwo unsinnig, is aber nur meine meinung
    Zuletzt geändert von Coragon Rivito; 10.03.2004, 15:33.
    mfg,
    [color=#0080c0]Coragon[/color]

    Kommentar


    • #3
      Und noch einer der das Prinzip nicht verstanden hat ...
      carpe noctem

      [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
      [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

      Kommentar


      • #4
        wow...dankeschön. das bringt mich en grossen schritt nach vorn.

        das werde ich gleich mal so umbauen.

        mit dem mysql_result, das müsste dann noch in die mysql-klasse rein? ich bin noch ziemlich neuling was die arbeit mit klassen angeht und hab da noch en paar lücken

        Kommentar


        • #5
          @goth was für en prinzip?

          wenn du mich meinst, dann lies mal mein anderes posting.

          Kommentar


          • #6
            Wieso Dich ... ich meine euch beide ... !

            Sowohl Du als auch "Coragon Rivito" scheine das Prinzip der OO nicht verstanden zu haben ... warum sollte ich ein anderes Posting von Dir lesen ... ?!
            carpe noctem

            [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
            [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

            Kommentar


            • #7
              Re: Klasse flexibler gestalten

              Original geschrieben von lx-club
              wenn ich später diese klasse nochmal verwenden will, dann muss ich ja immer aufpassen das ich meine tabellen gleich gestalte, oder ich muss in der klasse ändern.
              Wie wäre es mit 2 Klassen - eine enthält das eigentlich wichtige des Votes, was sich in der Regel nicht ändert, und die andere enthält die Datenbankabfragen - dann müsstest du nur die Klasse mit den Datenbankabfragen neu machen, wenn du die Tabellen änderst.
              hopka.net!

              Kommentar


              • #8
                @ goth

                ich weiß sehr wohl dass obiges unsinnig ist ..
                er fragte wie ers flexibler machen könnte, ned ob es sinnvoll ist

                oder meintest du etwas anderes ?
                mfg,
                [color=#0080c0]Coragon[/color]

                Kommentar


                • #9
                  also ich mach das ungefähr so:

                  in meiner basis-klasse (das ist die auf die die meisten anderen aufbauen) sind die Methoden mit den Queries, z.B. eine parametrierbare Listenansicht, und die members $tabelle, $IDsp (steht für ID-Spalte).

                  PHP-Code:
                  class base {

                  var 
                  $tabelle
                  var 
                  $IDsp;
                  var 
                  $DBCONN;
                  // ~ schnipp

                  // ~ schnipp
                  function Liste($listenparameter) {
                      
                  $query sprintf("SELECT * FROM %s WHERE %s = %s"$this->tabelle$this->IDsp$listenparameter[gewünschte Zeile]);
                      
                  $result mysql_query($query$this->DBCONN) or die(mysql_error()." {in Liste[1]: ".$query."}");
                      
                  $rowmysql_fetch_assoc($result);
                  // ~ schnipp
                  usw .. 
                  in der abgeleiteten Klasse wird dann die entsprechende Methode aufgerufen, die Members werden entsprechend in der abgeleiteten Klasse definiert ...

                  PHP-Code:
                  class test extends base {

                  // irgendwo im Konstruktor / in einer passenden Funktion, die immer aufgerufen wird
                  $this->tabelle="basdf"
                  $this->IDsp="ID_basdf";

                  // irgendwo soll die Liste ausgegeben werden:
                  $this->Liste($listenparameter);
                  // ~ schnipp
                  usw .. 
                  grüsse
                  cb
                  Hans Matthöfers Widerspruch zur Expertenerkenntnis: Künstliche Intelligenz ist besser als natürliche Dummheit.

                  Kommentar


                  • #10
                    @goth....

                    ich hatte ja geschrieben das ich mich noch nicht so lang mit oop beschäftige. einen tip wie ich es besser machen könnte, auch anhand meines codebeispiels hätte mir mehr geholfen als deine aussage.

                    Kommentar


                    • #11
                      @ i2dx

                      versuch mal deine array schlüssel in anführungszeichen zu verpacken ..
                      bsp: $array['key'] statt $array[key]
                      mfg,
                      [color=#0080c0]Coragon[/color]

                      Kommentar


                      • #12
                        @coragon:

                        is es evtl. gleich besser, diese methode ganz aus der klasse zu nehmen, da ich ja eh ne mysql klasse habe und die abfrage dann damit ausführen könnte und dann aufs selbe ergebnis komm

                        Kommentar


                        • #13
                          ist das nicht lögisch? wozu mit klassen oder funktionsbibliotheken arbeiten, wenn du doch wieder einzelne methoden doppelt und dreifach (ein)baust?
                          Kissolino.com

                          Kommentar


                          • #14
                            jo danke @wurzel.

                            hab mir da ne klasse gebaut und ni nachgedacht das ich ja das alles schon da habe.

                            Kommentar


                            • #15
                              Original geschrieben von lx-club
                              ich hatte ja geschrieben das ich mich noch nicht so lang mit oop beschäftige. einen tip wie ich es besser machen könnte, auch anhand meines codebeispiels hätte mir mehr geholfen als deine aussage.
                              Blah blah ... alleine die Code-Zeile
                              PHP-Code:
                              class vote extends db
                              zeigt eindeutig das Du das Grundprinzip OO-Programmierung nicht verstanden hast ... Dir das allerdings beizubringen würden den Umfrang eines solchen Threads sprengen ... wenn's nicht sogar hoffnungslos ist ... weil OOP ein vollkommen anderes Paradigma zugrunde liegt ...

                              ... außerdem sehe ich darin wenig Sinn ... geben meinen Kommentar ab ... und schaue weiter zu wie Du in die falsche Richtung läufst ... !
                              carpe noctem

                              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                              Kommentar

                              Lädt...
                              X