Assoziative Arrays dynamisch aufbauen (die 2.)
Andreas
- php
Hallo,
ich habe ein Assoziatives Array das so aussieht:
$this->var['send_news'] = $row['send_news'];
$this->var['send_blog'] = $row['send_blog'];
.....
return $this->var;
Damit werden Berechtigungen in einem CMS gesteuert.
Das ganze möchte ich jetzt dynamisieren mit folgender Funktion:
function read() {
Global $portal;
$group = $portal->var['group'];
$query = mysql_query("SELECT * FROM groups where id = '$group'");
$numfields = mysql_num_fields($query);
While ($row = mysql_fetch_array($query)){
for ($i=0; $i < $numfields; $i++) {
$fieldname = mysql_field_name($query, $i);
$this->var[$fieldname] = $row[$fieldname];
}
}
return $this->var;
}
Wenn ich innerhalb der Schleife versuche $this->var[$fieldname] auszugeben wird nichts angezeigt, gebe ich $fieldname oder $row[$fieldname] aus wird alles richtig angezeigt. Wo liegt das Problem? Weiss nicht weiter.
Gruß Andreas
echo $begrüßung;
Wenn ich innerhalb der Schleife versuche $this->var[$fieldname] auszugeben wird nichts angezeigt, gebe ich $fieldname oder $row[$fieldname] aus wird alles richtig angezeigt. Wo liegt das Problem?
Hast du das error_reporting auf E_ALL stehen, so dass PHP Hinweise auf nicht initialisierte Variablen geben kann? Was sagt ein var_dump() der entsprechenden Variablen? echo $variable ist zwar nicht schlecht, doch var_dump($variable) ist genauer.
echo "$verabschiedung $name";
Moin!
Das ganze möchte ich jetzt dynamisieren mit folgender Funktion:
> function read() {
> Global $portal;
// Globale Variablen sind böse. Jetzt machst du schon OOP, warum dann trotzdem so ein Müll?
> $group = $portal->var['group'];
// Unnötiges Kopieren von Variableninhalten.
> $query = mysql_query("SELECT * FROM groups where id = '$group'");
// Kein Escaping von $group - bist du unter allen Umständen sicher, dass da keine bösen Werte drinstehen können?
// Außerdem ist SELECT * böse - selektiere die Werte, die du abfragen willst.
/*
> $numfields = mysql_num_fields($query);
> While ($row = mysql_fetch_array($query)){
> for ($i=0; $i < $numfields; $i++) {
> $fieldname = mysql_field_name($query, $i);
> $this->var[$fieldname] = $row[$fieldname];
> }
> }
*/
// all das geht einfacher mit
$this->var = mysql_fetch_assoc($query);
// Du mußt nicht die einzelnen MySQL-Felder, ihre Namen und Inhalte ermitteln und kopieren, wenn es dafür schon eine Funktion gibt, die direkt ein assoziatives Array mit alledem holt.
> return $this->var;
// fraglich ist, ob die Klasse tatsächlich eine Eigenschaft "var" benötigt. Wegen der Rückgabe sicher nicht.
> }
- Sven Rautenberg