[Klasse] Keine Ausgabe?

Tab

unlimited
ID: 374854
L
26 Juni 2007
900
71
Guten Tag,

ich beschäftige mich momentan mit dem Thema Klassen. Um die Möglichkeiten einr Klasse besser zu verstehen habe ich einfach mal eine Datenbankklasse erstellt. Sicherlich nichts besonders. Aber zum Lernen ist es eine super Sache.

Doch leider wird keine Ausgabe erzielt. Woran kann das Liegen:

PHP:
class Datenbank {
    
    public $getContentQuery;
    public $getContentTable;
    
    function getContent($selectValue, $tableValue, $whereValue) {
        
        $this->selectValue     =     $selectValue;
        $this->tableValue     =     $tableValue;
        $this->whereValue     =     $whereValue;
        
        if ($this->whereValue == false) {
            
            $this->getContentQuery = "SELECT $this->selectValue FROM $this->tableValue";
            
        } else {
            
            $this->getContentQuery = "SELECT $this->selectValue FROM $this->tableValue WHERE $this->whereValue";
            
        }
        
    }
    
}

$karteikarte = new Datenbank();
$karteikarte = getContent("*", "EquipmentEvent", false);

while($karteikarte->getContentTable = mysql_fetch_array($karteikarte->getContentQuery)) {
    echo $karteikarte->getContentTable[id];
}

echo $karteikarte->getContentQuery;
echo $karzeikarte->whereValue;
Inhalt in den Tabellen ist vorhanden. Daran kann es nicht liegen.

Liebe Grüße,
Tab
 
Öhm... probier mal das:

PHP:
$foo = new Datenbank;
$foo->getContent("*", "EquipmentEvent", false);

;)

Edit: Und am Ende haste eine $karzeikarte ;)

Und muss man nicht die Variablen, die Du mit $this->xxx abspeicherst vorher in der Klasse definiert haben...?
 
Nun funktioniert schonmal ein bisschen mehr. Mittlerweise kann ich den Querytext ausgeben. Doh Inhalt werden nicht aus der Datenbank angezeigt.

PHP:
$karteikarte = new Datenbank();
$karteikarte->getContent("*", "EquipmentEvent", false);

while($karteikarte->getContentTable = mysql_fetch_array($karteikarte->getContentQuery)) {
    echo $karteikarte->getContentTable[name];
}
 
Du hast natürlich Recht. Dummer Fehler.

Was meint Ihr macht die Klasse einen Sinn oder eher nicht?

Liebe Grüße und vielen Dank.
 
Lass das mit Datenbankklassen, diese sind absolut ungeeignet zum Lernen.

Erstell doch mal eine Bücherei, die 1-n Bücher hat nach denen man suchen und ein Benutzer diese ausleihen kann.
Jeder Benutzer hat einen Namen usw und eine Liste von Büchern, die er ausgeliehen hat.

Beginne damit ein Klassendiagramm zu machen ;)
 
Vom praktischen her:
Das kommt wahrscheinlich auf den Verwendungszweck an.

Alternativen wären z.B. Zend_Db, PDO (wobei das eher mit den mysql_ Funktionen zu vergleichen wäre) und Doctrine.

Alles eine Frage der Anwendung. Wenn das nur n kleines Script für Auswertungen wird, werd ich mir kaum Doctrine Definitionen dafür schreiben. Bei einem größeren Webdienst ist das aber eine Möglichkeit.

Theoretisch:
Ich mag die Definition nicht.
Du übergibst jedesmal Parameter an die Funktion, speicherst die in eine Klassenvariable, aber verwendest sie außerhalb der Funktion nicht.

Sinnvoller:
Z.B. in Anlehnung an Zend_Db eine Klasse für jeden Table erstellen (als Beispiel) und dort dann das Attribut $this->name zu definieren.
Das könnte dann von einer Abstrakten Klasse Table inheriten, die deine Funktion implementiert (ohne den Table-Parameter).


Sorry für den Roman.:ugly:
ice: Du bist fies. Da schreibt man so viel, und dann kommt: "Nimm was andres" :(
 
Doctrine[/url]
Doctrin ist nen ORM, ich denke mal das ist für den Anfang etwas übertriebe,

Theoretisch:
Ich mag die Definition nicht.
Du übergibst jedesmal Parameter an die Funktion, speicherst die in eine Klassenvariable, aber verwendest sie außerhalb der Funktion nicht.
nicht nur theoretisch, es verstößt auch gegen Grundsätze der Objektorientierung Attribute zu definieren, die nur von einer Methode genutzt werden, von public-Attributen ganz zu schweigen.

Sinnvoller:
Z.B. in Anlehnung an Zend_Db eine Klasse für jeden Table erstellen
das ist auch wieder ORM und keine Datenbankklasse, immerhin spielst du auf Zend_Db_Table an.
Zend_Db wäre dagegen ein gutes Beipsiel für eine Datenbankklasse.


ice: Du bist fies. Da schreibt man so viel, und dann kommt: "Nimm was andres" :(
ich wollte auch erst viel schreiben, aber dann hat das Telefon geklingelt :angel:
Von daher hab ich mich kurz gefasst und eher auf etwas verwiesen, was mehr Sinn macht in Objekten abzubilden.