Klasse + Funktion + SQL + Array ausgabe

Shooter2k

Erfahrenes Mitglied
Hallo Forum,
ich habe ein Problem. Es geht um das auslesen gesprochener Sprachen eines Benutzers.

Dazu habe ich die Tabelle "sprachen"
ID Name
1 | Deutsch
2 | Englisch
3 | Spanisch
4 | Chinesisch

Tabelle sprachen2 ( beinhaltet die id der tabelle sprache und die kdnr des Benutzers)
Je nach dem was er für sprachen spricht. Benutzer Henry(kdnr 8) spricht die sprachen 3,4

Tabelle sprachen2
s_id Kdnr
3 | 8
4 | 8

Das auslesen der Daten und Joinen der Tabellen geschieht in einer Klasse:

PHP:
class profil
	{
	var $sprachen;
        
        function set_sprache($id){
	$sql = "SELECT * FROM ds_sprache2 inner join ds_sprache on ds_sprache.s_id = ds_sprache2.id WHERE ds_sprache.kdnr = '$id'";
	$todo = mysql_query($sql);
	$anz = mysql_num_rows($todo);
	$i=0;
	while($daten = mysql_fetch_array($todo)){
	$s_name = $daten[s_name];
        // hier werden die ergebnisse in das array $name geschrieben...
	$name[$i] = $s_name;
	$i++;
	}
        // das array name ist absolut korrekt wenn ich echo $name[0-1...]; ausgebe, dann bekomme ich die sprachen zu sehen 
        // hier setze ich array name auf das objekt sprachen
	for($i=0;$i<$anz;$i++){
	$this->$sprachen = $name[$i];
	}
	
	}
	function show_sprache(){
               // hier versuche ich auf das array name zuzugreifen und ausgeben zu lassen.. aber dies gelingt mir nicht wirklich
		for($i=0;$i < count($this->$sprachen);$i++)
			{
			echo $this->$name[$i];
			}
		 
	
		
	}
	
	
	}

Hier der Zugriff auf die Klasse von der Hauptseite aus:
PHP:
$id = 8;
// 
require("klassen/class.php");
$benutzer = new profil();
$benutzer -> set_sprache($id);
$benutzer -> show_sprache();

// die ausgabe von show_sprache , sollte so aussehen: Chinesisch,Spanisch,Englisch

Kann mir jemand beim auslesen des arrays helfen ?
Danke

gruß henry
 
Zuletzt bearbeitet:
Zum einen nennst du deine Membervariable am Anfang $sprachen, willst in der Methode show_sprache() aber auf eine Membervariable $name zugreifen - und die gibt es nicht.

Und sonst ist hier noch der Wurm drin:

PHP:
for($i=0;$i<$anz;$i++){
    $this->sprachen = $name[$i];
} 

// Hier wurde im Endeffekt nur die letzte Sprache in die
// Membervariable geschrieben. Anstatt der ganzen for-Schleife
// sollte wohl einfach nur das hier stehen:

$this->sprachen = $name;

// Damit wird jetzt das Array $name in die Membervariable
// übertragen.

Und nach dem Operator -> folgt kein $.
 
Zuletzt bearbeitet:
Danke für deine Antwort nur funktioniert es noch nicht ganz aber fast ;)

for($i=0;$i<$anz;$i++){
$this->sprachen = $name[$i];
}
.
.
.
...
$this->$sprachen = $name;

// Damit wird jetzt das Array $name in die Membervariable
// übertragen.
.................................

Habe es abgeändert.

Meine Methode:

PHP:
	function show_sprache(){
	
	echo $this->$sprachen = $name; 

	}

Aufruf :

$benutzer -> show_sprache();

Leider bekomme ich keine Ausgabe. Gibt es noch irgendwo einen kleinen Fehler der übersehen worden ist?

Die ausgabe der set Methode funktioniert alle 2 sprachen
for($i=0;$i<$anz;$i++){
echo $this->$sprachen = $name[$i];
}
Aber möchte mir es nur über show ausgeben lassen..
dankeschön
mfg
henry
 
Zuletzt bearbeitet:
Sorry sollte dein Beitrag beim nächsten mal aufmerksamer lesen ;)
habe die For schleife weggelassen.

Also in der Set Methode:
$this->$sprachen = $name;

Nur wenn ich mir jetzt die showmethode ausgeben lasse , dann erhalte ich
ArrayArray.. Aber nicht den Inhalt.

function show_sprache(){
for($i=0;$i<count($this->$name);$i++){
echo $this->$name[$i];
}
}
 
Ich habe jetzt die Lösung ;) Also zur show Methode :

PHP:
function show_sprache(){
	
	for($i=0;$i<count($this->sprachen);$i++){
	echo $this->sprachen[$i];
}
}
 
Zurück