Archiv verlassen und diese Seite im Standarddesign anzeigen : Klasse flexibler gestalten
hi...
also hier mal ein ausschnitt aus meiner klasse:
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
Coragon Rivito 10-03-2004, 16:31 wie wärs so ca ?
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($erg, 0, '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 ;)
Und noch einer der das Prinzip nicht verstanden hat ... :teach:
wow...dankeschön. :rocks: 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
@goth was für en prinzip?
wenn du mich meinst, dann lies mal mein anderes posting.
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 ... ?!
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.
Coragon Rivito 10-03-2004, 21:46 @ goth
ich weiß sehr wohl dass obiges unsinnig ist ..
er fragte wie ers flexibler machen könnte, ned ob es sinnvoll ist :D
oder meintest du etwas anderes ?
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).
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."}");
$row= mysql_fetch_assoc($result);
// ~ schnipp
usw ..
in der abgeleiteten Klasse wird dann die entsprechende Methode aufgerufen, die Members werden entsprechend in der abgeleiteten Klasse definiert ...
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
@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.
Coragon Rivito 11-03-2004, 09:52 @ i2dx
versuch mal deine array schlüssel in anführungszeichen zu verpacken ..
bsp: $array['key'] statt $array[key]
@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
ist das nicht lögisch? wozu mit klassen oder funktionsbibliotheken arbeiten, wenn du doch wieder einzelne methoden doppelt und dreifach (ein)baust?
jo danke @wurzel.
hab mir da ne klasse gebaut und ni nachgedacht das ich ja das alles schon da habe.
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-Zeileclass 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 ... !
was ist an der codezeile falsch?
ich habe es inzwischen nicht mehr mit vererbung gemacht sondern mit ner objektkomposition.
zusehen wie jemand in die falsche richtung läuft, das is wirklich ne grosse hilfe
Original geschrieben von lx-club
zusehen wie jemand in die falsche richtung läuft, das is wirklich ne grosse hilfe
Zumindest für mich ist's lustig ... :dontknow:
Artaxerxes 11-03-2004, 13:59 Nunja - solche Personen ignoriert man am besten. Und ob sie sich damit nen positives Image erarbeiten :dontknow:
Solche Leute habe eben den Sinn von entsprechenden Foren nicht verstanden und benutzen sie wohl nur zur Selbstprofilierung - einfach arm sowas.
@Artaxerxes: Was willst Du Knallkopp den ... ?! ... Mein Image hier habe ich mir hart erarbeitet ... und ich bin ganz zufrieden damit ... und was so eine 5-Posting-Wurst hier an Weisheiten zu verbreiten hat interessiert mich nicht die Bohne ... im Übrigen ... Selbstprofilierung ohne zu helfen ... super Theorie ... da solltest Du noch etwas mehr drüber nachdenken ... oups ... schon wieder überfordert ... !
das sind in meinen augen eher erzieherische maßnahmen. Aber das Thema hatten wir ja oft genug...
Original geschrieben von Artaxerxes
Solche Leute habe eben den Sinn von entsprechenden Foren nicht verstanden und benutzen sie wohl nur zur Selbstprofilierung - einfach arm sowas.
kann ich dir nur zustimmen. es sind eben nicht alle solche freaks, aber dann so mit seinem wissen auf die kacke zu hauen find ich nicht ok. naja das trifft ja zum glück nur auf eine person zu, denn ansonsten bin ich echt zufrieden hier mit dem forum und den kompetenten leuten und konnte so schon einige probleme lösen
hab meine probleme trotzdem lösen können.
Original geschrieben von lx-club
kann ich dir nur zustimmen. es sind eben nicht alle solche freaks, aber dann so mit seinem wissen auf die kacke zu hauen find ich nicht ok.
:{ :{ :{ :{ :{
|