objektorientiertes Programmieren ?

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

  • objektorientiertes Programmieren ?

    Hallo zusammen,
    ich hab heute mal was ausprobiert nur es will einfach nicht funktionieren
    PHP-Code:
    class mysql
    {
        function 
    dbconnect()
        {
        include (
    "function/config.php");
        
    $mc mysql_connect ("$dbserver","$dbuser","$dbpass") or die (mysql_error()); 
        
    $msd mysql_select_db ("$dbname") or die (mysql_error());
        }
        function 
    addentry()
        {
        
    $qadd = ("INSERT INTO $tabelle_posts") or die (mysql_error()); 
                    
    // INSERT INTO query ist noch unvollständig
        
    }
        function 
    showentry()
        {
        
    $qshow mysql_query ("SELECT * FROM `$tabelle_posts` WHERE 1 ORDER BY `id`") or die (mysql_error());
        
    $show mysql_fetch_assoc($qshow); 
        }

    Das ist die class mysql
    soo.. wenn ich nun was auslesen möchte hab ich folgendes gemacht
    PHP-Code:
    $go = new mysql();
    $go -> dbconnect();
    $go -> showentry();
    print 
    "<font color=#FFFFFF size=2 face=Verdana, Arial, Helvetica, sans-serif>".$show["name"]."</font>"
    Aber warum liest er der wert aus der spalte name nicht aus ?
    es kommt auch kein mysql error

    MfG xSkaSchY
    Zuletzt geändert von Skaschy; 24.04.2003, 09:03.

  • #2
    ARGHH Sorry... sollte ins PHP Dev rein.. :-( *annen kopp hau*

    Kommentar


    • #3
      Versuch es mal so:

      PHP-Code:
      function showentry()
          {
          
      $qshow mysql_query ("SELECT * FROM `$tabelle_posts` WHERE 1 ORDER BY `id`") or die (mysql_error());
          
      $show mysql_fetch_assoc($qshow); 
          return 
      $show;
          } 

      PHP-Code:
      $go = new mysql();
      $go -> dbconnect();
      $ausgabe $go -> showentry();
      print 
      "<font color=#FFFFFF size=2 face=Verdana, Arial, Helvetica, sans-serif>".$ausgabe["name"]."</font>"
      showentry gibt nämlich einen wert zurück, da es eine funktion ist.
      mfg
      Günni


      Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
      Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
      Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
      City-Tiger - Online durch die Straßen tigern...

      Kommentar


      • #4
        Original geschrieben von Skaschy
        ARGHH Sorry... sollte ins PHP Dev rein.. :-( *annen kopp hau*
        kein problem ....

        *VERSCHIEB*
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          1. wirklich objektorientiert is das nich
            du hast ne klasse geschrieben ohne klassenvariablen, sondern mit drei funktionen, die im prinzip nix miteinander zu tun haben
          2. zu ner klasse gehört irgendwie auch $this um auf die klassenvariablen zuzugreifen, aber da du die ja nicht hast... *g*
          3. showentry sollte als funktion schon was zurückliefern
          4. wenn du in showentry die lokale variable $show füllst, solltest du die irgendwie auch nach außen transportieren oder?
            außerhalb der funktion is $show nämlich nicht definiert, also wird dir nix ausgegeben (außer ner meldung, falls du error_reporting auf E_ALL stehen hast; is übrigens durchaus anzuraten)
          5. wenn du mit $show schaffen willst, was dann aber noch viel weniger objektorientiert is, dann musst du $show in der datei deklarieren ($show=''; ) in der du deine "klasse" verwendest und in die funktion showentry mit global $show; holen


          entweder du machst es richtig objektorientiert mit ner klasse, oder du machst es in ner seperaten datei oder du lässt es ganz und machst es in jeder datei, die db-zugriff brauch
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Am Rande ist Deine Klasse nicht wiederverwendbar, da zu spezifisch, also brauchst Du auch keine Klasse...

            Die Funktionen sind auch nicht gerade gut weil Sie keinerlei Parameter haben, wobei sie Variablen benutzen, die sie eigentlich nicht kennen...
            ????

            Ach herrje...
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Ähmmm ja.. *schluchtz* Ich will auch php lernen nur irgendwie mache ich das so wie ich da durchsteig... und es funktioniert meistens... ist zwar kein super code aber immer hin hab ich immer das erreicht was ich erreichen wollte

              Naja... mit $this und so hmm kp
              hab zwar ein dickes PHP buch nur bis ich da durch bin dauert das jahre darum probiere ich das aus was ich schaffe und kapiere ;-)

              MfG xSkaSchY

              Kommentar


              • #8
                Da sagt auch niemand was gegen.

                Nur dann tu dir den Gefallen und lass die Klassen (und das OO) erstmal weg, das verkompliziert das ganze naemlich ...

                Kommentar


                • #9
                  Btw. OO bedeutet nicht einfach alles in Klasse zu packen,
                  Die Grundsätze der OOP sind Abstraktion, Kapselung, Wiederverwendung und Beziehungen.
                  Wenn Du ein Objekt hast dann hat das Objektspezifische Methoden und nicht irgendeine Methode,
                  die nichts mit dem Objekt zu tun hat.

                  Du hast einfach alles was irgendwie mit mysql zu tun hat in eine class mysql gepackt.
                  Eigentlich müsstest Du aber eine class entry implements mysql haben, weil mysql eigentlich ein interface ist. Aber auch das ist fraglich

                  mysql->connect;
                  entry->add(), wäre zB eine Funktion

                  Wobei mysql->connect() analog zu mysql_connect ist.
                  --> hier gilt der Grundsatz benutze die in PHP implementierten Funktionen.

                  Warum willst Du eigentlich einer prozeduralen Sprache OO aufzwängen?
                  PHP hat eigentlich nur OO ähnliche Funktionalitäten, die ein bissi unterentwickelt sind.

                  Die eigenen Funktionen wie zB mysql_connect sind sicher schneller als ne eigene Klasse mysql.
                  Zuletzt geändert von MelloPie; 25.04.2003, 09:49.
                  Beantworte nie Threads mit mehr als 15 followups...
                  Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                  Kommentar


                  • #10
                    Original geschrieben von MelloPie
                    Warum willst Du eigentlich einer prozeduralen Sprache OO aufzwängen?
                    PHP hat eigentlich nur OO ähnliche Funktionalitäten, die ein bissi unterentwickelt sind.

                    Die eigenen Funktionen wie zB mysql_connect sind sicher schneller als ne eigene Klasse mysql.
                    weil es nicht nur um die reine Ausführungsgeschwindigkeit geht.
                    Ich habe die Wahl - entweder schreibe ich den ganzen Rattenschwanz
                    prozedural runter mit viel Tiparbeit
                    PHP-Code:
                    if(!$result=@mysql_query('select ...')){
                        die(
                    mysql_error());
                        
                    // bzw. Fehlerroutinen anschmeissen
                    }else{
                        while(
                    $row=mysql_fetch_array($result)){
                            
                    // blablabla
                        
                    }

                    wo ich jedesmal alles machen muß,
                    und bei Änderung mich immer durch alle Dateien arbeite,

                    oder ich nehm OO zentral an einer Stelle.
                    Da brauch ich mich bei der Benutzung weder um Fehler
                    oder sonstwas kümmern
                    PHP-Code:
                    $result=$query->select('    select u.id,u.name 
                                from user u
                                left join user_groups ug
                                on (u.id=ug.u_id)'
                                
                    .(is_numeric($HTTP_GET_VARS['member'])
                                ?
                    ' where ug.g_id='.$HTTP_GET_VARS['member']:''));
                    for(
                    $i=0;$i<$query->rows;++$i
                    TBT

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


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      mag sein allerdings ist es Ansichtssache ob ich dafür eine class brauche oder nur ne eigene Funktion nehme, die den selben effekt hat...
                      Dann kommt wieder die Performance zum Tragen.

                      Weil im Prinzip müsstest Du auch in Deiner Klasse so etwas machen:

                      this->set_sql($sql);
                      mysql_query(this->get_sql());
                      ...

                      um strikt OO und übersichtlich zu bleiben

                      PHP ist nicht auf OO ausgelegt, man kanns benutzen, aber es ist nicht wie in Java zB.

                      Mir fällt nur auf, dass sich die letzte Zeit alle auf OO in PHP stürzen und PHP eben keine OO Sprache ist...

                      Dann werden Klassen wie Prozedurale Programme benutzt und alles ist OO? Wenn man einen OO Hintergrund hat, ok aber ansonsten verbiegt man nur die Sprache und sollte lieber JSPs und Servlets einsetzen.
                      Beantworte nie Threads mit mehr als 15 followups...
                      Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                      Kommentar

                      Lädt...
                      X