Seite 1 von 1

PHP Klassen - objektorientierte Programmierung

Verfasst: 13.07.2008 10:05
von h32Lg
Hi @all,

ich bräuchte mal n bissal Hilfe beim genannten Thema. Ich hab zwar schon viel rumprobiert und gesucht, aber eine für mich passende Beschreibung nicht gefunden.

Die Problematik liegt darin, das ich mehrere Tabellen in meiner Datenbank in die Klasse holen möchte und von der Klasse aus dann auslesen, da ich gehört hab das Klassen noch Ressourcenschonender sind wie einfache Funktionen.

Nur versteh ich gerade nicht genau den Ablauf und die Funktionsweise der Klassen.

Nun hab ich mal angefangen ....


ich starte eine neue Sektion der Klasse:

Code: Alles auswählen

$objekt=new Klasse();
so weit so gut, dann möchte ich einen Wert aus dieser Klasse auslesen, zB die eMail-Adresse eines registrierten Users:

Code: Alles auswählen

echo $objekt->Klasse('mail');
bis hier hin müsste es ja auch noch stimmen, doch dann die Klasse an sich:

Code: Alles auswählen

class Klasse {
	function Klasse($value) {
		$sel_user	= mysql_query("SELECT `".$value."` FROM `db`.`hp_userinfos` WHERE `key` = '".mysql_real_escape_string($_COOKIE['hp_userinfos'])."';");
		$sel		= mysql_fetch_row($sel_user);
		$this->wert=$sel[0];
	}
}
Normalerweise müsste er mir nun die Spalte "mail" auslesen in welcher der key dem aus dem Cookie entspricht.
Das Cookie ist richtig gesetzt und auslesen tut ers auch, nur die DB-Abfrage/Klasse stimmt hier irgendwie nicht :roll:

greets h32Lg 8)

Re: PHP Klassen - objektorientierte Programmierung

Verfasst: 13.07.2008 10:20
von djchrisnet

Code: Alles auswählen

class Klasse {
	function Klasse($value) {
		$sel_user	= mysql_query("SELECT `".$value."` FROM `db`.`hp_userinfos` WHERE `key` = '".mysql_real_escape_string($_COOKIE['hp_userinfos'])."';");
		$sel		= mysql_fetch_row($sel_user);
		$this->wert=$sel[0];
                return $sel[0];
	}
}
probier das ma

Verfasst: 13.07.2008 10:23
von PhilippK
Lass dir doch von der Methode den SQL-Befehl per Echo ausgeben.
Außerdem würde ich eine Methode nicht gleich benennen wie die Klasse. Das hatte bis PHP 4 eine andere Bedeutung: http://de.php.net/manual/de/language.oo ... ructor.php

Gruß, Philipp

Re: PHP Klassen - objektorientierte Programmierung

Verfasst: 13.07.2008 10:46
von h32Lg
djchrisnet hat geschrieben:

Code: Alles auswählen

class Klasse {
	function Klasse($value) {
		$sel_user	= mysql_query("SELECT `".$value."` FROM `db`.`hp_userinfos` WHERE `key` = '".mysql_real_escape_string($_COOKIE['hp_userinfos'])."';");
		$sel		= mysql_fetch_row($sel_user);
		$this->wert=$sel[0];
                return $sel[0];
	}
}
probier das ma
geht leider auch nicht :o

greets h32Lg 8)

PS: PhillipK ich nutze php4


EDIT:

das $value (mail) wird richtig übergeben, ein Echo von den beiden Sachen hier jedoch:

Code: Alles auswählen

		$this->wert=$sel[0];
		echo $this->wert;
		echo "<br />".$sel[0];
		return $sel[0];
ergibt nichts - keine Ausgabe :/

Verfasst: 13.07.2008 11:25
von PhilippK
Mhh - wenn du PHP 4 nutzt, sollte sich das Ding schon bei der Initialisierung auf die Schnauze hauen...
Änder mal den Klassen- oder den Methodennamen.

Gruß, Philipp

Verfasst: 13.07.2008 12:05
von h32Lg
ändert leider auch nix, Funktionsname, Klassenname je geändert, aber keine Ausgabe in Sicht.

greets h32Lg 8)

Verfasst: 13.07.2008 13:58
von PhilippK
Poste doch mal bitte, was du jetzt hast.

Gruß, Philipp

Verfasst: 13.07.2008 14:56
von h32Lg
Hi,

Code: Alles auswählen

<?php
include('dbconfig.php');
$db_link = mysql_connect (MYSQL_HOST, MYSQL_BENUTZER, MYSQL_KENNWORT);

class blubb {
	function wert($value) {
		$sel_user   = mysql_query("SELECT `".$value."` FROM `db`.`hp_userinfo` WHERE `regkey` = '".mysql_real_escape_string($_COOKIE['hp_userinfo'])."';");
		$sel      = mysql_fetch_row($sel_user);
		$this->wert=$sel[0];
		return $sel[0];
	}
}

$objekt=new blubb();
echo $objekt->wert('mail');
?>

Verfasst: 13.07.2008 16:36
von Pyramide

Verfasst: 13.07.2008 16:46
von h32Lg
Es ist tatsächlich ein MySQL-Fehler mit dem ich bisher überhaupt nicht gerechnet hab :o
SELECT command denied to user 'h32lg'@'localhost' for table 'hp_userinfo'

EDIT: ich weiß nicht genau woran es lag, aber ich hab mich mal als Root angemeldet in meinem phpAdmin-Bereich und die Rechte neu gesetzt, außerdem hatte ich einen Schreibfehler - großes statt kleines l - so das es gar nicht funzn konnte ;-)

thx trotzdem, nun hab ichs so:

Code: Alles auswählen

class blubb {
	function blubb($id) {
		$sel_user   = mysql_query("SELECT * FROM `db`.`hp_userinfo` WHERE `regkey` = '".$id."';");
		$sel      = mysql_fetch_assoc($sel_user);
		$this->email = $sel["mail"];
		$this->nick = $sel["nick"];
	}
	function getMail() { return $this->email; }
	function getNickname() { return $this->nick; }
}
$objekt=new blubb(mysql_real_escape_string($_COOKIE['hp_userinfo']));

echo "Mail: ". $objekt->getMail() . ", Nickname: ". $objekt->getNickname();