[PHP] Gelaber über Klassen

McBalz
Wenn doch noch jemand etwas sagen möchte...

Ich bin momentan an einer Seite, für die ich evtl auch eine klasse für mein Forum und mein News-system schreiben möchte. Ich frage mich einfach, ob es geschickt ist, wenn ich jetzt in 2 verschiedenen klassen gleichzeitig Datenbank abfragen machen müsste (weiss nicht ob das überhaupt vorkommen wird aber mal rein theoretisch...) dann hätte ich ja zwei datenbank objekte und jede würde eine vernbindung öffnen. Meine überlegung ist nun ist das nicht "viel" langsamer als wenn ich die verbindung global und am anfang öffne und die verbindung immer wieder gebrauchen kann...

(dass beid dieser methode die übersichtlichkeit leidet ist mir eigentlich klar...)

auf der anderen seite muss ich sagen, dass ich noch ein wenig probleme habe mit den klassen ich habe auch schon fertige datenbank klassen angeschaut, aber was ich nie ganz verstanden habe wie das mit den mysql_fetch_array() und mysql_fetch_object() funktionen gemacht wurde und wie das genau funktioniert...

ein weiterer grund wieso ich einer Datenbankklasse bis jetzt immer aus dem weg geganen bin, ist, dass in der klasse die funktion die php sowieso zur verfügunstellt wieder verwenden muss und im prinzip geben die funktionen meiner klasse das selbe zurück wie die php funktionen...

aber wie gesagt wahrscheinlich habe ich den sinn einfach noch nicht ganz begriffen... (die syntax von klassen ist ja nicht sonderlich schwer und die praktischen beispiele mit autos und schrauben usw. begreife ich problemlos...)

vielleicht kann ja jemand von euch ein wenig licht ins dunkle bringen

vielen dank...
MMB
Deine Probleme kann ich nicht verstehen, du übergibst einfach einen Pointer des Objektes der db-class an deine anderen Klassen, damit sie dies für die DB nuzten könnnen, oder bindest das Objekt per global ein. Dann brauchst du keine 2 Verbindungen und kann das trozdem bei allen Klassen nutzen.
Andun
Folgendes Problem:

Ich hab eine Klasse. . . . Wer hätte das gedacht. großes Grinsen

Also, ich hab da ne Methode, die die Werte einer MySQL Datenbank erhöht. D.h. ich brauch den Ursprungswert und halt den rest.
Das Problem ist nur das der Ursprungswert in einem Array ist, das zur Klasse gehört.

Also das Objekt heißt 'user' und die Methode heißt 'erhöheEigenschaft'

php:
1:
2:
3:
4:
5:
<?php function erhöheEigenschaft ($eigenschaft$wert) {
   $this->abenteurer['$eigenschaft'] += $wert;
   $sql 'UPDATE `abenteurer` SET `'.$eigenschaft.'` = \''.$this->abenteurer['$eigenschaft'].'\' WHERE `Id` = \''.$this->abenteurer['Id'].'\' LIMIT 1 ; ';
   mysql_query ($sql);
} ?>


$abenteurer ist also ein Array.

php:
1:
<?php $user->erhöheEigenschaft("Erfahrung"$user->abenteurer['LP']); ?>


So. Jetzt hab ich das Problem das '$user->abenteurer['LP']' nicht aktualisiert wird, bzw. das der Wert nicht erhöht wird, da der Ursprungswert nicht gefunden wird.

Ist da irgendwas an '$this' falsch? Das müsste doch eigentlich auf $user zeigen, oder?
McBalz
also ich sehe die sache so:

1. hast du schon geprüft ob $this->abenteurer['$eigenschaft'] einen wert hat (mit print/echo.

2. wenn du bei $this->abenteurer['$eigenschaft'] hochkommas machst zwischen den eckigen klammern wird $eigenschaft nicht als variabel sondern als srting gsehen. könnte dein problem sein. $this->abenteurer[$eigenschaft] so könnte es klappen.

3. wars nicht das kanns du ja mal das SQL-Statement ausgeben lassen also print $slql; und es dann mit phpmyadmin testen...

4. bei mysql_query() noch ne linkID angeben (weiss aber nicht genau obs das braucht... (sicher ist sicher))

hoffe das bringt dich einwenig weiter...
Andun
das mit den Hochkommas könnte stimmen.

Das wirds wohl sein. Danke.