Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Klasse flexibler gestalten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Klasse flexibler gestalten


 
lx-club
10-03-2004, 16:22 
 
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 ;)

 
goth
10-03-2004, 16:36 
 
Und noch einer der das Prinzip nicht verstanden hat ... :teach:

 
lx-club
10-03-2004, 16:39 
 
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

 
lx-club
10-03-2004, 16:40 
 
@goth was für en prinzip?

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

 
goth
10-03-2004, 18:53 
 
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 ... ?!

 
Hopka
10-03-2004, 19:59 
 
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 ?

 
i2dx
10-03-2004, 22:04 
 
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

 
lx-club
11-03-2004, 09:22 
 
@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]

 
lx-club
11-03-2004, 09:56 
 
@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

 
Wurzel
11-03-2004, 10:00 
 
ist das nicht lögisch? wozu mit klassen oder funktionsbibliotheken arbeiten, wenn du doch wieder einzelne methoden doppelt und dreifach (ein)baust?

 
lx-club
11-03-2004, 10:10 
 
jo danke @wurzel.

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

 
goth
11-03-2004, 13:29 
 
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 ... !

 
lx-club
11-03-2004, 13:46 
 
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

 
goth
11-03-2004, 13:53 
 
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.

 
goth
11-03-2004, 14:02 
 
@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 ... !

 
TobiaZ
11-03-2004, 14:02 
 
das sind in meinen augen eher erzieherische maßnahmen. Aber das Thema hatten wir ja oft genug...

 
lx-club
11-03-2004, 14:07 
 
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.

 
goth
11-03-2004, 14:10 
 
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.

:{ :{ :{ :{ :{

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 17:12 Uhr.